更新 matplotlib 中的行
Posted
技术标签:
【中文标题】更新 matplotlib 中的行【英文标题】:Update Lines in matplotlib 【发布时间】:2012-07-07 10:43:28 【问题描述】:我有一个图表,上面有多个数据集。随着数据的更新,我需要不断地重新绘制这些线,每条线都分开。如何反复删除和重新建立它,最好不必每次都删除整个图形并重新绘制其上的所有线?
【问题讨论】:
绘图是在传递给 scipy fmin 函数的函数内部进行的,这意味着由于范围界定,我无法在每个绘图命令中永久分配持久名称。 【参考方案1】:#!/usr/bin/env python
import time
from pylab import *
ion() # turn interactive mode on
# initial data
x = arange(-8, 8, 0.1);
y1 = sin(x)
y2 = cos(x)
# initial plot
line1, line2, = plot(x, y1, 'r', x, y2, 'b')
line1.axes.set_xlim(-10, 10)
line1.axes.set_ylim(-2, 2)
line1.set_label("line1")
line2.set_label("line2")
legend()
grid()
draw()
# update line 1
for i in xrange(50):
time.sleep(0.1)
# update data
y1 = sin(x + float(i) / 10)
# update plot
line1.set_ydata(y1)
draw()
# update line 2
for i in xrange(50):
time.sleep(0.1)
# update data
y2 = cos(x + float(i) / 10)
# update plot
line2.set_ydata(y2)
draw()
【讨论】:
当我尝试制作这样的线对象时,python 抱怨它是“NoneType”,因此不可迭代。 它与this有什么关系吗? 其实这确实可以正常工作。我不能在我的情况下使用它,因为正在使用的线程间包装器不允许分配情节线,但它是一个有效的答案。【参考方案2】:寻找 Matplotlib 的 animation API。还有some examples too...
【讨论】:
以上是关于更新 matplotlib 中的行的主要内容,如果未能解决你的问题,请参考以下文章
%Matplotlib - AttributeError: 'NoneType' 对象没有属性 'lower'