matplotlib cla() 问题

0 投票
1 回答
1566 浏览
提问于 2025-04-17 02:41

我正在尝试用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' )

撰写回答