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

hko*_*hko 4 python ide plot matplotlib show

我是python的新手,只是安装了pyCharm并尝试运行给出以下问题的测试示例:如何在matplotlib中更新绘图?

本示例更新该图以动画化正弦信号。代替重新绘制,它更新了绘图对象的数据。它可以在命令行中运行,但是在PyCharm中运行时该图不会显示。plt.show(block=True)在脚本的末尾添加会弹出该图,但是这次不会更新。

有任何想法吗?

Imp*_*est 6

链接问题中的更新基于该图嵌入在 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()
Run Code Online (Sandbox Code Playgroud)


Pet*_*ake 5

正如ImportanceOfBeingErnest另一个问题中指出的那样,在某些系统上,至关重要的是将这两行添加到OP示例中的代码开头:

import matplotlib
matplotlib.use("TkAgg")
Run Code Online (Sandbox Code Playgroud)

这可能会导致呼叫plt.ion并且plt.ioff不必要。该代码现在可以在我的系统上运行而无需它们。