Анимация 3D-сюжета на Python

#python #python-3.x #matplotlib #animation

#python #python-3.x #matplotlib #Анимация

Вопрос:

У меня проблема, когда я пытаюсь анимировать 3D-график. Чтобы дать представление, допустим, я собрал 3 точки данных из каждого видеокадра. Допустим, мое видео содержит только 5 кадров.

Я извлек координаты следующим образом, например;

 x = [[1.0,1.2,1.3], [1.2,1.1,1.3], [1.3,1.2,1.0], [1.2,1.1,1.4], [1.2,1.4,1.1]]
y = [[2.0,2.2,2.3], [2.2,2.1,2.3], [2.3,2.2,2.0], [2.2,2.1,2.4], [2.2,2.4,2.1]]
z = [[3.0,3.2,3.3], [3.2,3.1,3.3], [3.3,3.2,3.0], [3.2,3.1,3.4], [2.2,2.4,2.1]]

len(x) = len(y) = len(z) = 5 (# of frames)
 

это означает, что в 1st кадре мои координаты (1.0, 2.0, 3.0), (1.2, 2.2, 3.2) amp; (1.3,2.3, 3.3) ,
в 2nd кадре (1.2,2.2,3.2), (1.1,2.1,3.1) amp; (1.3,2.3, 3.3) и так далее.
Я попытался, как указано в записной книжке Jupyter; но безуспешно.

 import numpy as np                          
import matplotlib.pyplot as plt            
from mpl_toolkits.mplot3d import Axes3D
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation


fig = plt.figure()
ax = p3.Axes3D(fig)
timesteps = 100
border = 2
ax.set_xlim3d([-border, border])
ax.set_ylim3d([-border, border])
ax.set_zlim3d([-border, border])


def animate(i):

    ax.set_xlim3d([-border, border])
    ax.set_ylim3d([-border, border])
    ax.set_zlim3d([-border, border])

    ax.scatter(x[i],y[i],z[i])

anim = animation.FuncAnimation(fig, animate, frames=timesteps, interval=1, blit=False, repeat=False)
anim
 

Ответ №1:

Я смог решить ее, используя следующую ссылку: смотрите здесь. Я публикую это здесь, если кому-то это понадобится в будущем.

Комментарии:

1. поместите решение здесь и отметьте его как ответ для дальнейшего использования