Python 使用matplotlib打印三维打印,draw()接受一个附加参数

Python 使用matplotlib打印三维打印,draw()接受一个附加参数,python,matplotlib,Python,Matplotlib,亲爱的大家。昨天我在探索matplotlib的3d绘图功能(令人惊喜的是,它看起来不错)。我只是想说清楚一点 from mpl_toolkits.mplot3d import Axes3D 但是,当我尝试使用draw()连续重新绘制绘图时,我得到一个错误,即draw()(对于三维绘图)除了self之外还使用了一个附加参数。此参数称为renderer,不是可选的。通过查看3d轴的代码,我找不到应该作为渲染器的规范 你知道我应该如何解决这个问题吗?为了清楚起见,我可以将draw()用于普通绘图(打

亲爱的大家。昨天我在探索matplotlib的3d绘图功能(令人惊喜的是,它看起来不错)。我只是想说清楚一点

from mpl_toolkits.mplot3d import Axes3D
但是,当我尝试使用draw()连续重新绘制绘图时,我得到一个错误,即draw()(对于三维绘图)除了self之外还使用了一个附加参数。此参数称为renderer,不是可选的。通过查看3d轴的代码,我找不到应该作为渲染器的规范

你知道我应该如何解决这个问题吗?为了清楚起见,我可以将draw()用于普通绘图(打开ion()等),因此我的问题仅限于Axes3D

基本上,我想模仿我已经在matlab中编写的一些代码,它绘制一个3d绘图,然后进行更新(使用drawnow()


编辑:我意识到renderer参数可能是特定于计算机的。我正坐在一个安装了Python的Windows上。如果您需要更多信息,请告诉我。

编辑:我收回。您可以从
fig.canvas.renderer
获得它。不过,我会留下下面的例子


似乎没有一种文档化的方式来获取渲染器,但是您可以在_cachedRenderer中查看axes结构。请注意,在设置此项之前,必须先绘制绘图

请参见本示例的最后一行:

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

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
xlen = len(X)
Y = np.arange(-5, 5, 0.25)
ylen = len(Y)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)



colortuple = ('y', 'b')
colors = np.empty(X.shape, dtype=str)
for y in range(ylen):
    for x in range(xlen):
        colors[x, y] = colortuple[(x + y) % len(colortuple)]

surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=colors,
        linewidth=0, antialiased=False)

ax.set_zlim3d(-1, 1)
ax.w_zaxis.set_major_locator(LinearLocator(6))
ax.w_zaxis.set_major_formatter(FormatStrFormatter('%.03f'))

plt.draw()
print ax._cachedRenderer

你有一些示例代码吗?谢谢。事实证明,这并没有最终解决我的问题,但它确实回答了我的问题!我原来的问题已经解决了,部分原因是这个。