我在混合2D和3D子图时遇到了去除过多空白的问题。对于纯3D子图,我可以使用fig.subplots_adjust()
调整绘制区域以去除空白,参见这里。
然而,如果这个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方向上更长,则效果不佳。