matplotlib 删除混合2D/3D子图中的3D白色

nsc4cvqm  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(184)

在混合2D和3D子图时,我很难去除多余白色。对于纯3D子图,我可以调整用fig.subplots_adjust()绘制的区域以删除白色,参见here
然而,如果这个3D图像在2D子图中,同样的技巧就不起作用了。我创建了如下混合子图:

import matplotlib.pyplot as plt    
from matplotlib import cm
from mpl_toolkits.mplot3d import axes3d

fig,axes = plt.subplots(2,2)
ax = axes.flat

for a in range(3):
    ax[a].plot(range(10),range(10))

ax[3].remove()
ax[3] = fig.add_subplot(224,projection='3d')

X, Y, Z = axes3d.get_test_data(0.03)
ax[3].plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.8,cmap=cm.coolwarm)

ax[3].set_xticklabels('')
ax[3].set_yticklabels('')
ax[3].set_zticklabels('')

fig.subplots_adjust(hspace=0,wspace=0)

现在的把戏EG。fig.subplots_adjust(left=-0.01)将作用于2D子图的左边缘,并且不修改3D子图。有没有一种方法可以完全去除3D子图周围的白色?我也尝试了更小的ax.dist,如果3D图在z方向上更长,那就不好了。

56lgkhnf

56lgkhnf1#

轴周围没有空白,它甚至与其他子图重叠(它们的 Backbone.js 被3D轴隐藏)。
你要做的是调整轴内灰色立方体的大小。这可以通过改变到该立方体的观看距离来完成。
例如ax[3].dist = 7

ax[3].dist = 9

最佳距离当然取决于视角。

相关问题