Matplotlib更新3d图

时间:2015-01-23 19:57:14

标签: python matplotlib

我正在尝试将方法'set_data'和'set_3d_properties'用于matplotlib.pyplot.plot对象。

import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation

class animationObj(object):

def __init__(self):
    self.fig= plt.figure()
    self.ax = self.fig.add_subplot(111, projection='3d')
    self.plot = []
    self.plot.append(self.ax.plot([0], [0], [0], 'bo', markersize=10)[0])
    self.ani = animation.FuncAnimation(self.fig, self, frames=range(0,10), interval=50, repeat_delay=1000)

def show(self):
    return plt.show()

def __call__(self, i):

    self.plot[0].set_data([x[i]], [y[i]])
    self.plot[0].set_3d_properties([z[i]], 'z')

    return self.plot[0]

我使用了以下示例:http://matplotlib.org/1.4.2/examples/animation/simple_3danim.html

但似乎set_data和set_3d_properties无法正常工作。有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题不在于更新x,y,z数据的代码,但错误在于第一次创建动画时,x,y和z轴的范围是为第一组数据。因此,为x,y和z设置范围解决了问题:

self.ax.set_xlim([0, 5])
self.ax.set_ylim([0, 5])
self.ax.set_zlim([0, 5])