2016-11-28 1 views
0

Есть ли простой способ анимировать диаграмму рассеяния в matplotlib, подобно тому, как создается сюжет?Простой способ анимации графика matplotlib без использования коллекций

В настоящее время я знаю, что могу это сделать, чтобы создать сюжет: scatter = ax.scatter([x values], [y values], [z values])

Однако каждый пример я найти в Интернете использует Numpy функции для создания своих данных, а не что-то внешнее, как три списка, оставив меня с большим трудом понимания как данные изменяются в методе, который обновляет анимацию.

Возможно ли предоставить matplotlib совершенно новый набор данных для построения графика для каждого кадра? (каждая точка данных будет меняться в любом случае)

Примечание: в случае особых соображений для этой ситуации это трехмерный график.

ответ

1

Самый простой способ для анимации, чтобы построить в интерактивном режиме, в качестве минимального (ISH) примеров со списками,

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 

plt.ion() 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
plt.show() 

for i in range(1000): 
    x =[1,2,3,4,5,6,7,8,9,10] 
    y =[5,6+i%10,2,3,13,4,1,2,4-i%10,8] 
    z =[2+(i%10)*2.,3,3,3,5,7,9+i%10,11,9+i%10,10] 

    ax.scatter(x, y, z, marker='o') 

    ax.set_xlim([0.,10.]) 
    ax.set_ylim([0.,20.]) 
    ax.set_zlim([0.,20.]) 

    plt.pause(0.01) 
    plt.cla() 

причина, чтобы построить используя Numpy массивы вместо списков данные хранятся в виде смежный блок, и это ускоряет графики (легко преобразовать в массив с xn = np.array(x)). Основная причина, по которой большинство примеров будут использовать различные функции numpy, заключается в том, что проще всего обеспечить самостоятельную демонстрацию с анимацией в matplotlib, требующую функции, которая настраивает объект коллекции. Для отличного примера анимации анимации минимального рассеяния см. Второй пример this.

Смежные вопросы