Ошибка Moviewriter при сохранении анимации Matplotlib в формате gif с использованием Pillow - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь сохранить анимацию в 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. Теперь он говорит, что недостаточно данных изображения. Что это обозначает? ТИА

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...