我有一些数据框,试图将它们绘制在一个图中。
但是,它需要逐步进行迭代。就像一个图应该在每次循环运行时更新。
我现在正在尝试的是
for i in range(0, len(df))
plt.plot(df[i].values[:,0], df[i].values[:,1])
plt.show()
这似乎可行,但每次迭代都会生成一个图形。
我希望它们在更新时都在一个图中。
感谢您的帮助。
编辑:关于答案,您提到的内容不包含我想要的内容。 那只是叠加两个数据集。
我想要的是,随着新图的叠加,创建的原始图应在下一次迭代时更新,而不是在循环结束后立即显示所有图。
答案 0 :(得分:0)
这是一个使用matplotlib的动画功能自动更新的情节示例。但是,您也可以在必要时自己调用更新例程:
import numpy as np
import matplotlib.pyplot as plt
import pandas
import matplotlib.animation as animation
from matplotlib.animation import FuncAnimation
df = pandas.DataFrame(data=np.linspace(0, 100, 101), columns=["colA"])
fig = plt.figure()
ax = plt.gca()
ln, = ax.plot([], [], "o", mew=2, mfc="None", ms=15, mec="r")
class dataPlot(object):
def __init__(self):
self.objs = ax.plot(df.loc[0,"colA"], "g*", ms=15, mew=2, mec="g", mfc="None", label="$Data$")
fig.legend(self.objs, [l.get_label() for l in self.objs], loc="upper center", prop={"size":18}, ncol=2)
def update(self, iFrame):
for o in self.objs:
o.remove()
print("Rendering frame {:d}".format(iFrame))
self.objs = ax.plot(df.loc[iFrame,"colA"], "g*", ms=15, mew=2, mec="g", mfc="None", label="$Data$")
return ln,
dp = dataPlot()
ani = FuncAnimation(fig, dp.update, frames=df.index, blit=True)
plt.show()