更新 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'

无法从脚本加载 matplotlib.pyplot

数据分析与展示---Matplotlib入门

Scikit Learn Xticks Matplotlib [重复]

Numpy+Pandas+Matplotlib学习

Numpy+Pandas+Matplotlib学习