当一个人有标签而不是另一个时,如何对齐子图边界?

时间:2017-11-16 14:33:04

标签: python matplotlib subplot

在下面的示例中,我如何让ax2(底部)占据左侧的整个空间? 通过"充分利用空间"我的意思是将绘图区域扩展到图的左边界,即。还使用标签标题下方的空格和ax1的刻度。

import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
def example_plot(ax, fontsize=12):
    ax.plot([1, 2])
    ax.locator_params(nbins=3)
    ax.set_xlabel('x-label', fontsize=fontsize)
    ax.set_ylabel('y-label', fontsize=fontsize)
    ax.set_title('Title', fontsize=fontsize)

def example_plot_noY(ax, fontsize=12):
    ax.plot([1, 2])
    ax.locator_params(nbins=3)
    ax.set_xlabel('x-label', fontsize=fontsize)
    ax.set_yticks([])
    ax.set_title('Title', fontsize=fontsize)

plt.close('all')
fig = plt.figure()

gs1 = gridspec.GridSpec(2, 1)
ax1 = fig.add_subplot(gs1[0])
ax2 = fig.add_subplot(gs1[1])

example_plot(ax1)
example_plot_noY(ax2)

gs1.tight_layout(fig)

plt.show()

Example

1 个答案:

答案 0 :(得分:2)

GridSpec with Varying Cell Sizes。 您可以在gridspec中添加另一列,该列占用上图的标签空间。如果你之后调用严格的布局,你不需要关心它的宽度,它可以是0大小,

gs1 = gridspec.GridSpec(2, 2, width_ratios=[0, 1])
ax1 = fig.add_subplot(gs1[0,1])
ax2 = fig.add_subplot(gs1[1,0:])
# ...
fig.tight_layout()

enter image description here