PyCharm无法显示matplotlib动画求助:仅展示第一帧(Python2.7.14)
解决PyCharm中Matplotlib动画仅显示第一帧的问题
嘿,我之前也踩过这个坑!在PyCharm里用matplotlib.animation做动画只显示第一帧,大概率是后端渲染设置或者动画启动逻辑的问题,结合你的Python2.7场景,给你几个实用的解决办法:
1. 调整PyCharm的绘图后端设置
PyCharm默认的科学绘图工具窗口对动画渲染支持不太友好,你可以这么改:
- 打开
File > Settings > Tools > Python Scientific - 取消勾选Show plots in toolwindow
这样matplotlib会用系统默认的独立窗口(比如TkAgg)来显示动画,就能正常播放了。
2. 补全代码的动画启动逻辑
你的代码看起来没写完,记得要确保动画对象被保留,并且正确触发播放。在代码末尾加上这些内容:
# 假设你已经创建了anim动画对象(比如FuncAnimation) plt.show() # 保留动画对象引用,防止被Python垃圾回收机制销毁 plt.gcf().canvas.draw()
另外,在Python2.7里,有时候需要手动指定支持动画的后端,在代码最开头加上:
import matplotlib matplotlib.use('TkAgg') # 系统如果支持Qt4Agg/Qt5Agg也可以选
注:如果用TkAgg,要确保你的Python2.7安装了Tkinter库,一般默认自带,没有的话需要手动安装。
3. 参考完整的移动矩形动画代码
给你补全适配你数据的完整示例,你可以对照调整自己的代码:
import numpy as np import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt import matplotlib.patches as patches from matplotlib import animation x = [0, 1, 2] y = [0, 1, 2] yaw = [0.0, 0.5, 1.3] fig = plt.figure() plt.axis('equal') plt.grid() ax = fig.add_subplot(111) ax.set_xlim(-1, 3) ax.set_ylim(-1, 3) # 创建初始矩形(尺寸可以根据你的需求调整) rect = patches.Rectangle((x[0], y[0]), 0.5, 0.3, angle=np.degrees(yaw[0]), fill=False) ax.add_patch(rect) def update(frame): # 更新每帧的矩形位置和角度 rect.set_xy((x[frame], y[frame])) rect.set_angle(np.degrees(yaw[frame])) return rect, # 创建动画:frames是总帧数,interval是帧间隔(毫秒) anim = animation.FuncAnimation(fig, update, frames=len(x), interval=500, blit=True) plt.show()
这里要注意:
- 必须保留
anim变量的引用,不然动画对象会被垃圾回收,只显示第一帧 - 如果
blit=True报错,可以改成blit=False,部分后端不支持硬件加速
运行上面的代码后,会弹出独立的matplotlib窗口,里面就能看到矩形随帧移动旋转的动画了。
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

