在IDE(PyCharm)中使用时,Matplotlib不会更新绘图

时间:2017-05-14 16:40:47

标签: python matplotlib plot ide show

我是python的新手,只是安装了pyCharm并尝试运行一个给出以下问题的测试示例:How to update a plot in matplotlib?

此示例更新绘图以动态移动的正弦信号。它不是重新绘制,而是更新绘图对象的数据。 它在命令行中工作,但在PyCharm中运行时图形不显示。在脚本末尾添加plt.show(block=True)会显示图,但这次不会更新。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

正如ImportanceOfBeingErnesta separate question所述,在某些系统上,将这两行添加到OP示例代码的开头至关重要:

import matplotlib
matplotlib.use("TkAgg")

这可能会导致对plt.ionplt.ioff的调用不必要;现在代码在我的系统上没有它们。

答案 1 :(得分:3)

链接问题的更新基于这样的假设,即图是嵌入在tkinter应用程序中的,这不是这里的情况。

对于作为独立窗口的更新图,您需要打开交互模式,即plt.ion()。在PyCharm中,默认情况下应该打开。

要以交互模式显示图形,您需要绘制它,plt.draw()。为了让它保持响应,您需要添加暂停plt.pause(0.02)。如果你想在循环结束后保持打开状态,你需要关闭交互模式并显示数字。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 6*np.pi, 100)
y = np.sin(x)

plt.ion()

fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'r-') 
plt.draw()

for phase in np.linspace(0, 10*np.pi, 500):
    line1.set_ydata(np.sin(x + phase))
    plt.draw()
    plt.pause(0.02)

plt.ioff()
plt.show()