Mandelbrot分形动画代码触发未渲染即删除警告如何解决
问题根因
你虽然已经把FuncAnimation生成的实例赋值给了anim变量,仍然触发警告的核心原因有两个:
- 普通Python脚本执行到末尾后会直接退出,
anim变量会被垃圾回收机制自动销毁,此时动画还没来得及触发渲染。 FuncAnimation不会主动触发渲染逻辑,必须手动调用展示或保存方法才会执行绘制。
修复方案
实时播放动画
直接在代码末尾添加一行plt.show()即可,该方法会阻塞脚本进程直到你手动关闭绘图窗口,阻塞期间anim变量会一直存活,动画可以正常渲染播放:
anim = FuncAnimation(fig, animate, frames=45, interval=100, repeat=True) # 新增下面这行 plt.show()
如果是在Jupyter Notebook/Lab环境运行,还需要在代码开头额外添加魔法命令来启用交互式渲染:
%matplotlib notebook
导出动画到本地文件
如果不需要实时播放,可以直接把动画导出为视频或GIF,同样写在代码末尾即可:
# 导出为MP4格式,需要提前安装ffmpeg工具 anim.save('mandelbrot动画.mp4', writer='ffmpeg', fps=10) # 导出为GIF格式,需要提前安装pillow库 # anim.save('mandelbrot动画.gif', writer='pillow', fps=10)
额外优化提示
你当前代码中用双重for循环计算Mandelbrot集的效率极低,动画运行会非常卡顿,建议改成numpy向量化运算替换循环,性能可以提升数十倍。另外animate函数的参数名和内部循环变量名都为i,属于命名冲突,建议把内部循环的i改为x_idx这类不冲突的命名。
内容的提问来源于stack exchange,提问作者Maggie
相关产品推荐
相关产品推荐

