Matplotlib:在3d情节中显示

8 python 3d plot matplotlib

在下面的图中,取自matplotlib的图库,contourf用于在3d图形下方创建第二个图.我的问题是,是否有可能使用imshow做同样的事情?我希望2D图中的颜色更平滑.

制作2d图似乎是可能的,因为contourf接受zdir参数,而我看了,而imshow没有.这表明这是不可能的,但为什么不呢?pcolor也可以完成工作,有可能吗?

seg*_*sai 12

只需指定contourf的levels =选项,例如

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt,numpy as np
plt.clf()
fig = plt.figure(1)
ax = fig.gca(projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contourf(X, Y, Z, zdir='z', offset=-100,
        levels=np.linspace(-100,100,1200),cmap=plt.cm.jet)
cset = ax.contourf(X, Y, Z, zdir='x', offset=-40, cmap=plt.cm.jet)
cset = ax.contourf(X, Y, Z, zdir='y', offset=40, cmap=plt.cm.jet)
ax.set_xlabel('X')
ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
ax.set_zlim(-100, 100)    
plt.show()
Run Code Online (Sandbox Code Playgroud)

图片

  • 这意味着为了近似图像,绘制了1200多个表面?这些天很难成为矢量后端:D (2认同)