Я хочу создать анимацию трехмерного изображения. Сама анимация работает с использованием 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')