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

Posted

技术标签:

【中文标题】Matplotlib 在 IDE (PyCharm) 中使用时不会更新绘图【英文标题】:Matplotlib does not update plot when used in an IDE (PyCharm) 【发布时间】:2017-10-13 11:13:06 【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

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

import matplotlib
matplotlib.use("TkAgg")

这可能会使调用plt.ionplt.ioff 变得不必要;代码现在可以在我的系统上运行,而无需它们。

【讨论】:

像魅力一样工作... 一个补充:确保不要将环境变量“DISPLAY=true”添加到 PyCharm 运行配置中,因为这不能一起工作。【参考方案2】:

链接问题中的更新是基于情节嵌入在 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()

【讨论】:

谢谢,我明白了! 祝福你。我花了很长时间才找到这样的答案!

以上是关于Matplotlib 在 IDE (PyCharm) 中使用时不会更新绘图的主要内容,如果未能解决你的问题,请参考以下文章

%matplotlib inline

pycharm中怎么添加matplotlib模块

在 PyCharm 中安装 matplotlib 和 pyplot 时出错

pycharm远程ssh连接,配置在本地用matplotlib画图

[Python]PyCharm中%matplotlib inline报错

我通过 pip 安装了 matplotlib,但是当我尝试将 matplotlib 导入 PyCharm 时出现错误