Matplotlib动画在PyCharm中无法工作

11

我找到了一些使用matplotlib制作动画的短文件。通常情况下,当从命令行运行时它们可以很好地工作,但在PyCharm中,我只得到一个静态帧。

我正在问与Matplotlib does not update plot when used in an IDE (PyCharm)相同的问题。那里有一个答案,似乎对原始提问者有效。当我从命令行运行该代码时,它可以很好地工作。从PyCharm运行后,它会暂停很长时间(可能是运行动画),然后显示一个静态帧(看起来像动画的开始或结束)。

我在Mac(OS 10.11.6)上通过PyCharm 2017.3.2(专业版)运行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)

还有什么其他问题可能存在?


既然链接答案的代码对所有人都可以正常运行,你需要自己思考在你的情况下可能有什么不同 - 或者如果你没有头绪,尽可能地让其他人能够重现你的情况,明确说明你如何运行它,你使用的版本是什么,并发布一个允许判断其他可能出现问题的截图。 - ImportanceOfBeingErnest
我已经编辑了上面的问题。我不确定拍屏幕截图会有什么用,特别是这是一个关于动画的问题。 - Peter Drake
如果Python版本不同,您确定已为两个Python版本安装了相同的Matplotlib版本吗?在这两种情况下,您使用的是哪个Matplotlib后端?当您“运行程序”时,您做了什么使其运行?是否会弹出与运行脚本时相同的窗口类型,即相同的图标和标题? - ImportanceOfBeingErnest
那么我应该在这里发布@ImportanceOfBeingErnest的解决方案作为答案吗?或者,如果信息已经在其他问题的答案中了,是否应该删除这个问题?我还不太了解Stack Overflow的惯例。 - Peter Drake
以下是几种选择:(a) 提供自己的答案来回答问题 (b) 将此问题标记为包含答案的重复问题 (c) 删除问题(如果有其他人可能遇到类似的问题,则删除可能是最不好的选择)。 - ImportanceOfBeingErnest
显示剩余4条评论
2个回答

8
根据这个答案和这个工单,你可以在Pycharm中禁用Show plots in tool window(文件->设置->工具->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()

image


2

以上方法(或链接中提供的方法)对我无效,但是我找到了这个方法可以很好地解决问题(在安装了Anaconda和IPython控制台的2.7版本下):

不要使用正常方式执行脚本(使用运行/Shift+f10),而是先设置:

%matplotlib qt5

然后在PyCharm控制台中执行脚本,使用以下命令:

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

结果与在独立的IPython控制台中执行相同,产生类似的结果: hover graph (注意-这个图是动画的)

我认为这个答案已经过时了,因为v2已经被弃用。 - Grant Curell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接