Не удается сохранить 3D-анимацию в gif с помощью writer = imagemagick - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу создать анимацию трехмерного изображения. Сама анимация работает с использованием matplotlib.animation.

3D_Animation Но при попытке сохранить анимацию в gif с помощью imagemagick возникает ошибка:

File "D:\ProgramFiles\miniconda3\lib\tkinter\__init__.py", line 1841, in wm_geometry
    return self.tk.call('wm', 'geometry', self._w, newGeometry)
_tkinter.TclError: can't invoke "wm" command: application has been destroyed

Вот мой код:

import matplotlib.pyplot as plt
import json
from matplotlib.animation import FuncAnimation

with open('results.json') as f:
    example = json.load(f)

fig = plt.figure(figsize=(15, 10))
ax = plt.axes(projection="3d")

x =[]
y =[]
x2=[]
x3=[]
for i in range(len(example['population'])):
    e = (-1) * example['population'][i]['B0max']
    y.append(e)
    x.append(example['population'][i]['ALFA_M'])
    x2.append(example['population'][i]['BM'])
    x3.append(example['population'][i]['HA'])

def init_animation():
    ax.set_xlabel('ALFA_M')
    ax.set_ylabel('BM')
    ax.set_zlabel('HA')
    # ax.plot3D(x,y,y2'ko',label='population member')
    ax.scatter3D(x, x2, x3, c=y, cmap='hsv')
    texts = [ax.text(x[i], x2[i], x3[i], '%s' % str(round(y[i], 3)), size=7, zorder=1, color='k') for i in
             range(len(x))]

def animate(angle):
    for angle in range(0, 360):
        ax.view_init(30, angle)
        plt.draw()
        plt.pause(.001)

anim = FuncAnimation(fig, animate, init_func=init_animation, frames=50)
anim.save('3Danimation.gif', writer='imagemagick')
...