Я пытаюсь сохранить анимацию в GIF в Matplotlib. Я не хочу устанавливать Imagemagi c как отдельную программу на Windows 10, чтобы сохранить изображение. (Windows 10 64 бит, python 3.6 - среда анаконды - я только что обновил matplotlib практически во всем остальном)
Это код:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# from matplotlib.animation import PillowWriter
# Define properties of the "bouncing balls"
n = 10
pos = (20 * np.random.sample(n*2) - 10).reshape(n, 2)
vel = (0.3 * np.random.normal(size=n*2)).reshape(n, 2)
sizes = 100 * np.random.sample(n) + 100
colors = np.random.sample([n, 4])
fig = plt.figure(num=1, figsize=(10,10))
ax = plt.axes(xlim=(-n,n), ylim=(-n,n))
circles = plt.scatter(pos[:,0], pos[:,1], marker='o', s=sizes, c=colors)
def init():
return
def animate(i):
global pos
pos = pos + vel
bounce = abs(pos) > 10 # Find balls that are outside walls
vel[bounce] = -vel[bounce] # Bounce if outside the walls
circles.set_offsets(pos) # Change the positions
return circles
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=100, interval=20)
anim.save('bounce.gif', writer='pillow')
# plt.show()
И ошибка:
Traceback (most recent call last):
File "C:\Users\polyq\Anaconda3\lib\site-packages\matplotlib\animation.py", line 230, in saving
yield self
File "C:\Users\polyq\Anaconda3\lib\site-packages\matplotlib\animation.py", line 1156, in save
writer.grab_frame(**savefig_kwargs)
File "C:\Users\polyq\Anaconda3\lib\site-packages\matplotlib\animation.py", line 572, in grab_frame
buf.getvalue()))
File "C:\Users\polyq\Anaconda3\lib\site-packages\PIL\Image.py", line 2581, in frombytes
im.frombytes(data, decoder_name, args)
File "C:\Users\polyq\Anaconda3\lib\site-packages\PIL\Image.py", line 772, in frombytes
raise ValueError("not enough image data")
ValueError: not enough image data
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "bounce2.py", line 35, in <module>
anim.save('bounce.gif', writer='pillow')
File "C:\Users\polyq\Anaconda3\lib\site-packages\matplotlib\animation.py", line 1156, in save
writer.grab_frame(**savefig_kwargs)
File "C:\Users\polyq\Anaconda3\lib\contextlib.py", line 99, in __exit__
self.gen.throw(type, value, traceback)
File "C:\Users\polyq\Anaconda3\lib\site-packages\matplotlib\animation.py", line 232, in saving
self.finish()
File "C:\Users\polyq\Anaconda3\lib\site-packages\matplotlib\animation.py", line 575, in finish
self._frames[0].save(
IndexError: list index out of range
До того, как я обновил matplotlib, он сказал, что нет доступных moviewriters. Теперь он говорит, что недостаточно данных изображения. Что это обозначает? ТИА