python - 无法使用 matplotlib 更新我的绘图

标签 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() 调用),但没有任何更新(程序似乎暂停并且不进入循环)。

有人可以帮忙吗?

最佳答案

根据下面的讨论进行更新: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())

关于python - 无法使用 matplotlib 更新我的绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33676200/

相关文章:

Python:根据类的无效 RGBA 参数 0.0 色点

python - PyCharm 中的字典自动完成?

python - 查找大型列表是否包含特定字符串的最有效方法 (Python)

python - 如何以非阻塞方式链接 future ?即,如何在不阻塞的情况下将一个 future 作为另一个 future 的输入?

python - Matplotlib - 鼠标悬停时的工具提示

python - matplotlib 茎图中的彩色标签文本

python - 无法保存在 Networkx 和 matplotlib 中制作的图形

python - 如何在 matplotlib.pyplot 中将 colorbar 与 hist2d 一起使用?

python - 在大型累积列表中查找较小列表的多次重复

python - OpenCV – 未校准立体系统的深度图