程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python讀取文本繪制動圖

編輯:Python

函數FuncAnimation(fig,func,frames,init_func,interval,blit)是繪制動圖的主要函數,其參數如下:

a.fig 繪制動圖的畫布名稱

b.func自定義動畫函數,即下邊程序定義的函數update

c.frames動畫長度,一次循環包含的幀數,在函數運行時,其值會傳遞給函數update(n)的形參“n”

d.init_func自定義開始幀,即傳入剛定義的函數init,初始化函數

e.interval更新頻率,以ms計

f.blit選擇更新所有點,還是僅更新產生變化的點。應選擇True,但mac用戶請選擇False,否則無法顯。

文本格式

文件為lammps運行輸出的lammps.log文本。

Step Temp v_strain Pxx Pyy Pzz Lx Ly Lz E_pair E_bond E_angle E_dihed
0 198.98037 -1.1954791e-15 -307.7818 -332.44711 -450.92776 29.717906 29.717906 29.717906 -1661.3271 1.4567761 22.105031 259.83474
100 113.99645 0.001 802.0582 -371.05483 338.07158 29.747624 29.593368 29.549455 -1621.3122 113.57141 118.95821 342.1082
200 135.44321 0.002 -1350.8734 -529.83791 -1548.0938 29.777342 29.57901 29.431842 -1618.681 104.37541 136.1066 356.68807
300 137.4845 0.003 -1994.3502 -1576.221 -1005.0324 29.80706 29.693454 29.388996 -1599.549 143.14471 151.4005 365.76513
400 160.21331 0.004 -1317.2065 -882.91957 -58.438226 29.836778 29.818732 29.464864 -1595.4208 134.25187 153.84003 384.97577
500 168.83993 0.005 -110.57265 1153.8304 -852.70107 29.866496 29.851579 29.539056 -1599.54 162.3543 173.29173 391.07681
600 179.75576 0.006 63.832348 -45.553715 44.168081 29.896214 29.899106 29.559751 -1588.6715 162.10286 188.29565 395.54282
700 180.48954 0.007 -329.84436 -739.28704 -267.62466 29.925932 29.863819 29.564925 -1582.2551 173.98812 193.51452 413.32918
800 189.82243 0.008 -2354.5175 -284.56223 -873.53758 29.95565 29.829917 29.63692 -1576.0951 163.13675 195.18425 421.38248
900 184.54562 0.009 -1047.5093 539.11457 -83.803919 29.985368 29.802764 29.70496 -1581.0363 179.99546 210.62572 434.72882
1000 199.48628 0.01 801.32274 583.71966 816.51773 30.015085 29.683832 29.732822 -1575.8742 182.5266 198.89386 408.20532
......

代碼實現

提取文本的前兩列,繪制溫度-步長曲線。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParams
from matplotlib.animation import FuncAnimation
config = {"font.family":'Times New Roman'}# 設置新羅馬字體
rcParams.update(config) #更新配置
df=pd.read_table(r'D:\lammps\PE(COMPASS)\log.lammps',sep='\s+',skiprows=1925,nrows=2001)#讀取txt文件,用任意空格分隔。
data=np.array(df)#將df表格轉換為np矩陣
x_data=data[:,0] #讀取第一列
y_data=data[:,1] #讀取第二列
fig=plt.figure()
plt.xlabel('Step')
plt.ylabel('Temp(K)')
x,y=[],[]
frames=range(0,2000,1)
print(frames)
def update(n): #定義更新函數
x.append(x_data[n]) # 添加X軸坐標
y.append(y_data[n])
plt.plot(x,y,'r')
ani = FuncAnimation(fig, update, frames, interval=1, blit=False) #使用fig,按更新函數進行更新,依次傳入的參數為frames(0-2000的整數),相鄰幀間隔1ms,更新所有點。
ani.save('ming.gif') #保存到當前文件夾
plt.show()

輸出的gif

因為2000幀實在是太大了,所只截取了部分輸出。

 

 


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved