matplotlib cla() 问题
我正在尝试用matplotlib做一些动画。
fig = plt.figure()
ax = fig.gca(projection='3d')
...
for k in xrange(10):
...
ax.cla()
ax.plot_surface(X, Y, field.real, rstride=2, cstride=2, cmap=cm.hot,
linewidth=0, antialiased=False)
ax.set_zlim3d(-50, 150)
filename = "out_%d.png" % k
fig.savefig(filename)
...
一开始我没有使用cla(),所以每次循环我得到的都是同样的画面(http://dl.dropbox.com/u/4988243/out_0.png)。当我加上ax.cla()后,动画效果还不错,但出现了一些我不知道怎么去掉的多余坐标轴(http://dl.dropbox.com/u/4988243/out_1.png)。
1 个回答
0
我在Ubuntu 11.04上运行最新版本的Matplotlib,这个版本是从github上下载的。我写了一段代码,每次都创建一个新的坐标轴实例,这样可以生成你想要的图表,并且坐标轴也保持完整。你遇到的问题可能只是一个小错误,但我觉得这种方法可以绕过这个问题。我做了一些随机数的图表,仅仅是为了演示。
import numpy
from matplotlib import pyplot
X = numpy.arange(250)
Y = numpy.arange(250)
X, Y = numpy.meshgrid(X, Y)
fig = pyplot.figure()
for ind in range(10):
Z = numpy.random.random( (250,250) )
ax = fig.add_subplot(111,projection='3d')
ax.plot_surface(X, Y, Z, cmap='hot', linewidth=0, cstride = 2, rstride = 2, antialiased=False)
ax.set_zlim3d(0, 1)
pyplot.savefig('example' + str(ind) + '.png' )