matplotlib:删除混合2D / 3D子图中的3D绘图的空白区域

时间:2017-07-05 05:48:26

标签: python matplotlib mplot3d

在混合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)

现在的诀窍就是这样。 fig.subplots_adjust(left=-0.01)将作用于2D子图的左边缘,并且不会修改3D子图。有没有办法彻底清除3D子图周围的空白区域?我也尝试过更小的ax.dist,如果3D图在z方向上更长,那就不好了。

enter image description here

1 个答案:

答案 0 :(得分:2)

轴周围没有空白,甚至与其他子图重叠(它们的脊椎被3D轴隐藏)。

您想要的是调整轴内灰色立方体的大小。这可以通过改变到该立方体的观察距离来完成。

E.g。 ax[3].dist = 7

enter image description here

ax[3].dist = 9

enter image description here

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