2017-05-14 207 views
1

我是新来的Python和刚安装pyCharm想跑给予以下问题,在试验例:How to update a plot in matplotlib? Matplotlib不更新图(PyCharm)

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

任何想法?

回答

1

链接问题中的更新是基于该图被嵌入到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() 
+0

谢谢,我明白了! – hko

1

正如a separate question注意到ImportanceOfBeingErnest,在某些系统中,至关重要的是这两行添加到从OP的例子代码的开头:

import matplotlib 
matplotlib.use("TkAgg") 

这可能导致该呼叫plt.ionplt.ioff不必要;现在代码在我的系统上没有它们。