使用文件中的matplotlib进行动画打印

2024-05-15 20:37:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用pyplot绘制一个以这种方式制作的csv文件(2列,从MD分析中获得)

FRAME,RMSD
0,0
1,1.404
2,1.816
3,1.728
4,1.385
5,2.071
6,2.139
7,0.929
8,1.457
9,1.249
10,1.203
11,1.212

我在绘图方面没有问题,但我无法理解如何用线条生长的动画(用pyplot的动画)来绘图。有人能帮我吗

我在想我是否能像这样使用熊猫数据帧

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.animation import FuncAnimation

dataframe = pd.read_csv('trajrmsd2.csv')
def get_data(table,rownum,title):
    data = pd.DataFrame(table.loc[rownum][2:]).astype(float)
    data.columns = {title}
    return data

title = 'RMSD'
d = get_data(dataframe,0,title)
x = np.array(d.index)
y = np.array(d['RMSD'])
dataframe = pd.DataFrame(y,x)
dataframe.columns = {title}

Writer = animation.writers['ffmpeg']
writer = Writer(fps=20, metadata=dict(artist='Me'), bitrate=1800)

fig = plt.figure(figsize=(10,6))
plt.xlim(0, 10000)
plt.ylim(0, 10) 
plt.xlabel('Frame',fontsize=20)
plt.ylabel(title,fontsize=20)
plt.title('RMSD',fontsize=20)

def animate(i):
    data = dataframe.iloc[:int(i+1)] 
    p = sns.lineplot(x=data.index, y=data[title], data=data, color="r")
    p.tick_params(labelsize=17)
    plt.setp(p.lines,linewidth=7)

ani = matplotlib.animation.FuncAnimation(fig, animate, 
init_func=get_data, frames=17, repeat=True)

ani.save('RMSD.mp4', writer=writer)

这就是我得到的错误

回溯(最近一次呼叫最后一次): 文件“animatooo.py”,第44行,在 ani.save('RMSD.mp4',writer=writer) 保存中的文件“/home/dbassani/anaconda3/lib/python3.8/site packages/matplotlib/animation.py”,第1128行 动画。_init_draw()#清除初始帧 文件“/home/dbassani/anaconda3/lib/python3.8/site packages/matplotlib/animation.py”,第1706行,在_init_draw中 self.\u draw\u artists=self.\u init\u func() TypeError:get_data()缺少3个必需的位置参数:“table”、“rownum”和“title” 在中忽略异常:<;0x7f33ecbff0d0处的功能定时器qt.del; 回溯(最近一次呼叫最后一次): 文件“/home/dbassani/anaconda3/lib/python3.8/site packages/matplotlib/backends/backend_qt5.py”,第189行,在del TypeError:“非类型”对象不可调用


Tags: 文件pyimportdataframedatagettitlematplotlib