首页 > 解决方案 > 在 Python 中使用 Matplotlib 实现多个同步动画

问题描述

在 Python 2.7 中(我知道它已经被弃用了!),我试图在一个表面上为多个轨迹设置动画。我在以下代码的最后一行遇到问题:

from numpy import genfromtxt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
from matplotlib.animation import FuncAnimation
import numpy as np

import mpl_toolkits.mplot3d.axes3d as p3
from matplotlib import animation


fig = plt.figure()
ax = fig.gca(projection='3d')

X = np.arange(-10, 10, 0.25)
Y = np.arange(-10, 10, 0.25)
X, Y = np.meshgrid(X, Y)
Z = 0.1*X**3-0.3*X*(Y**2)

surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
                    linewidth=0, antialiased=False)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

def update(num, data, line, point):
    line.set_data(data[:2, :num])
    line.set_3d_properties(data[2, :num])
    if num < len(data[0]):
        point.set_data([data[0][num], data[1][num]])
        point.set_3d_properties(data[2][num])


def load_data(csv_file, color):
    my_data = genfromtxt(csv_file, delimiter=',')

    x = my_data[:, 0]
    y = my_data[:, 1]
    z = my_data[:, 2]

    N = 1000
    data = np.array([x, y, z])
    line, = ax.plot(x, y, z)
    point, = ax.plot([0], [0], [0], color)

    ani = animation.FuncAnimation(fig, update, N, fargs=(
        data, line, point), interval=1000/N, blit=False)
    plt.show()


load_data('gd.csv', 'ro')
# following data does not show :
# load_data('rmsprop_momentum.csv', 'go')

虽然gd.csv动画中的数据正确,但rmsprop_momentum.csv并没有显示在表面上。

这里可能是什么问题?提前谢谢了!

标签: pythonmatplotlib

解决方案


推荐阅读