5

有没有办法在 NxM 子图面板中只显示左列和底行的轴。

A|N|N|N
A|N|N|N
A|N|N|N
A|A|A|A

其中 A = 轴,N = 无轴

有时我的子图是 10x8、3x4、4x9 等,它们都有相同的 x 和 y 轴。我只希望它出现在该子集的最左侧和最底部。目前我必须知道它正在绘制和执行哪个轴

    if (figi-1) % 7 != 0:
        ax.set_yticklabels([])

    if figi < 29:
        ax1.set_xticklabels([])

我想将这一点推广到任何 NxM 面板布置,而不必事先知道。谢谢。

编辑:我找到了一种方法来做 y 轴。我使用以下方法设置面板的数量:

nwide = 12
nhigh = 5

这意味着我可以做到

if (figi-1) % nwide != 0:
    ax.set_yticklabels([])

对底部有什么想法吗?

编辑:解决了。x轴如下:

if figi < (nwide*nhigh) - nwide:
    ax.set_xticklabels([])
4

1 回答 1

6

最好的解决方案可能是pyplot.subplots(). 你可以这样做:

fig, axes = pyplot.subplots(nrows=3, ncols=4, sharex=True, sharey=True)

在此处输入图像描述

然后只有左轴和下轴会显示标签。

axes要访问每个子图,您可以像在矩阵中一样获取它:ax = axes[i,j]

要控制刻度位置,您可以使用:

ax.xaxis.set_tick_position('bottom')
ax.yaxis.set_tick_position('left')

要设置轴标签,您可以执行以下操作:

ax.set_label_text('Something')
于 2013-06-19T17:24:05.670 回答