【问题标题】:Matplotlib animations do not work in PyCharmMatplotlib 动画在 PyCharm 中不起作用
【发布时间】:2018-06-19 00:18:05
【问题描述】:

我发现了各种使用 matplotlib 生成动画的短文件。一般来说,从命令行运行时它们可以正常工作,但在 PyCharm 中我只能得到一个静止帧。

我问的问题与Matplotlib does not update plot when used in an IDE (PyCharm) 相同。那里发布了一个答案,这似乎适用于原始提问者。当我从命令行运行该代码时,它工作正常。在 PyCharm 中,它会暂停很长时间(大概是在运行动画),然后显示一个静止帧(看起来像是动画的开始或结束)。

我在 Mac (OS 10.11.6) 上通过 PyCharm 2017.3.2 (Professional) 运行 Python 3.6.2 (Anaconda)。我在 PyCharm 中创建了一个 Python 项目,将该代码粘贴到一个 .py 文件中,安装了相应的库(matplotlib 2.0.2、numpy 1.13.1),然后运行了程序。

我可以看到这与我在命令行中所做的唯一区别是那里的 python --version 给出了:

Python 3.6.0 :: Anaconda custom (x86_64)

还有什么问题?

【问题讨论】:

  • 由于链接答案中的代码对每个人都运行良好,因此您需要自己考虑一下您的情况可能会有什么不同 - 或者如果您不知道,请尽可能让您的情况可以重现给其他人,清楚地说明你是如何运行它的,你正在使用什么版本,发布一个截图,可以判断其他可能的问题。
  • 我已经编辑了上面的问题。我不确定截屏会有什么用,尤其是因为这是一个关于动画的问题。
  • 如果python版本不同,你确定两个python版本都安装了相同的matplotlib版本吗?您在这两种情况下都使用哪个 matplotlib 后端?当你“运行程序”时,你做了什么让它运行?是否会弹出与运行脚本时相同类型的窗口,即相同的图标和标题?
  • This is how it would look for me. 您可以尝试使用相同的后端,即import matplotlib; matplotlib.use("TkAgg")(确保这些是脚本的第一行)。
  • 短篇小说:成功了!更长的故事:需要一些工作才能使版本号匹配。我基本上不得不卸载并重新安装 Python,因为我有几个不同的版本(2 和 3,Anaconda 和没有)。我做了一个新的 PyCharm 项目并得到了相同的行为。幸运的是,您在我处理该问题时找到了解决方案。谢谢!我将发布此详细信息(感谢您)作为另一个问题的附加答案。

标签: python animation matplotlib


【解决方案1】:

根据this的回答和this的ticket,你可以在Pycharm中禁用Show plots in tool window(File->Settings->Tools->Python Scientific),我会给出这个解决方案的例子。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'ro')

def init():
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1, 1)
    return ln,

def update(frame):
    xdata.append(frame)
    ydata.append(np.sin(frame))
    ln.set_data(xdata, ydata)
    return ln,

ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                    init_func=init, blit=True)
plt.show()

【讨论】:

    【解决方案2】:

    上面(或附加的链接)对我不起作用,但是,我发现这很好用(使用 anaconda 和 ipython 控制台运行 2.7)-

    我不会正常执行脚本(使用 run / Shift+f10),而是先设置:

    %matplotlib qt5
    

    然后从 pycharm 控制台执行脚本,使用

    runfile('/path/to/script.py')
    

    产生类似的结果,就好像我会从独立的 ipython 控制台做同样的事情:

    (注意——图是动画的)

    【讨论】:

    • 我认为这个答案不再有效,因为 v2 已被弃用
    猜你喜欢
    • 2015-03-03
    • 2021-11-18
    • 1970-01-01
    • 2016-06-21
    • 2018-11-28
    • 2020-08-13
    • 2014-10-09
    • 2011-03-27
    • 2023-03-13
    相关资源
    最近更新 更多