python - matplotlib:删除混合 2D/3D 子图中的 3D 图的空白

标签 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

最佳答案

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

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

例如ax[3].dist = 7

enter image description here

ax[3].dist = 9

enter image description here

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

关于python - matplotlib:删除混合 2D/3D 子图中的 3D 图的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44917886/

相关文章:

python - 绘制非对称误差线 Matplotlib

python - matplotlib 3D 图上的反向 Z 轴

python - 计算文件中数字字符串的总和,而数字位于随机行中

python - 交互式 Bokeh map

python - python 处理时锁定 innoDB MySQL 中的记录

python - Python Matplotlib 动画绘图的更新速度缓慢。我怎样才能让它更快?

python - scipy 优化 fmin 语法

python - Python中Pandas/Matplotlib中直方图和密度的叠加

python - 彩色 3D 图

python - 如何用箭头连接 3D 散点图中的两个点?