无法使用matplotlib

时间:2015-11-12 16:18:28

标签: python matplotlib

我在客户端上接收数据,我必须使用matplotlib动态绘制它们。我想继续更新我的情节。以下是我尝试的一个简单示例:

import time
import numpy as np
import matplotlib.pyplot as plt

h, = plt.plot([], [])

plt.ion()
plt.show()

for i in range(0, 100):
    t = np.arange(i * 0.05, (i+1) * 0.05, 0.01)
    y = np.sin(2*np.pi*t)
    h.set_xdata(np.append(h.get_xdata(), t))
    h.set_ydata(np.append(h.get_ydata(), t))
    plt.draw()
    time.sleep(0.05)

但是没有什么是绘图(在python2.7和3中都没有),如果我删除交互模式的激活(ion())然后我得到一个空的情节(show()调用)但没有更新(程序似乎暂停,不要进入循环)。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

根据以下讨论进行更新:MarAja的原始代码正在运行,唯一的问题是轴限制没有更新,所以看起来好像情节没有更新。

this示例,您似乎必须使用fig.canvas.draw()重绘图表。另请注意,您必须设置适当的xlimylim来捕获整个数据系列,或者每一步更新它们(就像我在此示例中所做的那样):

import time
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
h, = plt.plot([], [])

plt.ion()
plt.show() 

for i in range(0, 100):
    t = np.arange(i * 0.05, (i+1) * 0.05, 0.01)
    y = np.sin(2*np.pi*t)
    h.set_xdata(np.append(h.get_xdata(), t))
    h.set_ydata(np.append(h.get_ydata(), t))

    fig.canvas.draw()
    time.sleep(0.05)

    plt.xlim(0,h.get_xdata().max())
    plt.ylim(0,h.get_ydata().max())