Python 3.x 如何将高度和宽度子地块轴与gridspec和matplotlib对齐?

Python 3.x 如何将高度和宽度子地块轴与gridspec和matplotlib对齐?,python-3.x,matplotlib,subplot,figure,multiple-axes,Python 3.x,Matplotlib,Subplot,Figure,Multiple Axes,我试图使用创建一个子图,使轴的排列看起来与下图相似;这个数字是从一张照片上取下来的 下面是我重新创建这种轴排列的尝试具体来说,我的问题是轴没有正确对齐。例如,蓝色直方图的轴对象比具有各种绿色阴影的图像的轴对象高;橙色的柱状图似乎在宽度上正确对齐,但我认为这是运气使然如何正确对齐这些轴?与原始图形不同,我希望在轴之间添加/填充额外的空白,以便边界不相交;下面代码中的切片表示法通过添加一个空白行/列来实现这一点。(为了不让这篇文章过长,我没有通过玩轴记号之类的东西来让这些数字变得“漂亮”。) 与

我试图使用创建一个子图,使轴的排列看起来与下图相似;这个数字是从一张照片上取下来的

下面是我重新创建这种轴排列的尝试具体来说,我的问题是轴没有正确对齐。例如,蓝色直方图的轴对象比具有各种绿色阴影的图像的轴对象高;橙色的柱状图似乎在宽度上正确对齐,但我认为这是运气使然如何正确对齐这些轴?与原始图形不同,我希望在轴之间添加/填充额外的空白,以便边界不相交;下面代码中的切片表示法通过添加一个空白行/列来实现这一点。(为了不让这篇文章过长,我没有通过玩轴记号之类的东西来让这些数字变得“漂亮”。)

与原始图片不同,轴没有完全对齐。是否有一种方法可以在不使用约束布局的情况下执行此操作?这里,我指的是
fig,ax=plt.subplot(constrated_layout=True)

用于重新创建我的图形的MWE代码如下所示;请注意,
ax.imshow(…)
ax.matshow(…)
之间没有区别

编辑:

可以通过显式设置每行/每列的
宽度/U比率
高度/U比率
来初始化轴;如下所示。这不会影响输出,但可能我使用不正确

## initialize figure and axes
fig = plt.figure()
gs = gridspec.GridSpec(ncols=6, nrows=6, figure=fig, width_ratios=[1]*6, height_ratios=[1]*6)
ax_bottom = fig.add_subplot(gs[4:, 2:])
ax_left = fig.add_subplot(gs[:4, :2])
ax_big = fig.add_subplot(gs[:4, 2:])

问题在于
imshow
,它会自动调整轴的大小,以保持方形像素的外观。 您可以通过调用以下命令来防止此情况:

ax_big.imshow(..., aspect='auto')

当您制作gridspec时,您可能希望使用高度和宽度比,而不是切片到6x6网格中。Gridspec还接受pad参数
ax_big.imshow(..., aspect='auto')