python - 保存 matplotlib 动画时出现意外错误
问题描述
我想制作一个 3D 极坐标图并导出它,因为我的计算机没有足够的 CPU 功率来显示它plt.show()
(如果你有一个很好的解决方案,如何在显示之前计算它,我也会很感激)
不幸的是,导出没有工作,我不知道为什么。在我看来,这应该有效。
我的 Python IDE(PyCharm) 或我的 Python 版本(2.7) 是否有可能负责?
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation
from IPython import display
psi_vec = np.arange(0, 2 * np.pi, 0.1)
radius = np.arange(0,1,0.05)
Z_ones = np.ones(63)
def animate(time):
X = np.zeros((np.size(psi_vec), np.size(radius)))
Y = np.zeros((np.size(psi_vec), np.size(radius)))
Z = np.zeros((np.size(psi_vec), np.size(radius)))
for i in range(np.size(radius)):
X[:,i] = np.cos(psi_vec) * radius[i]
Y[:,i] = np.sin(psi_vec) * radius[i]
Z[:,i] = np.sin(time) * i * Z_ones
line = ax.plot_surface(X, Y, Z,color= 'b')
return line
fig = plt.figure()
ax = p3.Axes3D(fig)
anim = animation.FuncAnimation(fig, animate, frames = 15, interval = 500)
video = anim.to_html5_video()
html = display(video)
display.display(html)
错误消息是:
Traceback (most recent call last):
File "/home/alexander/Dokumente/PetersHe (vectors)/animation.py", line 48, in <module>
video = anim.to_html5_video()
File "/home/alexander/anaconda2/envs/PyEnv/lib/python2.7/site-packages/matplotlib/animation.py", line 1353, in to_html5_video
self.save(f.name, writer=writer)
File "/home/alexander/anaconda2/envs/PyEnv/lib/python2.7/site-packages/matplotlib/animation.py", line 1200, in save
writer.grab_frame(**savefig_kwargs)
File "/home/alexander/anaconda2/envs/PyEnv/lib/python2.7/contextlib.py", line 35, in __exit__
self.gen.throw(type, value, traceback)
File "/home/alexander/anaconda2/envs/PyEnv/lib/python2.7/site-packages/matplotlib/animation.py", line 241, in saving
self.finish()
File "/home/alexander/anaconda2/envs/PyEnv/lib/python2.7/site-packages/matplotlib/animation.py", line 367, in finish
self.cleanup()
File "/home/alexander/anaconda2/envs/PyEnv/lib/python2.7/site-packages/matplotlib/animation.py", line 405, in cleanup
out, err = self._proc.communicate()
File "/home/alexander/anaconda2/envs/PyEnv/lib/python2.7/site-packages/subprocess32.py", line 748, in communicate
stdout, stderr = self._communicate(input, endtime, timeout)
File "/home/alexander/anaconda2/envs/PyEnv/lib/python2.7/site-packages/subprocess32.py", line 1557, in _communicate
orig_timeout)
File "/home/alexander/anaconda2/envs/PyEnv/lib/python2.7/site-packages/subprocess32.py", line 1613, in _communicate_with_poll
register_and_append(self.stdout, select_POLLIN_POLLPRI)
File "/home/alexander/anaconda2/envs/PyEnv/lib/python2.7/site-packages/subprocess32.py", line 1592, in register_and_append
poller.register(file_obj.fileno(), eventmask)
ValueError: I/O operation on closed file
Process finished with exit code 1
谢谢你!
解决方案
推荐阅读
- pdf-generation - 是否可以在 PDF 模板的同一页面上使用两个或多个重复组(不是替代)。BI 出版商
- php - 如何使用作曲家安装 fpoirotte/cryptal?
- acumatica - 操作按钮未在屏幕上更新
- python - 无法使用日期时间列根据 2 个条件对数据框进行子集化
- ios - MVP:视图控制器可以向另一个视图控制器的演示者发送消息吗?
- ios - 滚动 ScrollView 时更新后退按钮文本
- html - 强制图像保持在高度和宽度“边界”之间,并保持纵横比
- angular - 如何在 express 服务器中启用 CORS?
- node.js - 将参数快速传递给异步中间件
- sql - 两个不同大小的重复索引