我阅读了Customizing Location of Subplot Using GridSpec中的说明,并尝试了以下代码并获得了绘图布局:

 import matplotlib.gridspec as gridspec
    gs = gridspec.GridSpec(3, 3)
    ax1 = plt.subplot(gs[0, :])
    ax2 = plt.subplot(gs[1, :-1])
    ax3 = plt.subplot(gs[1:, -1])
    ax4 = plt.subplot(gs[-1, 0])
    ax5 = plt.subplot(gs[-1, -2])


python - Matplotlib.gridspec:如何通过数字指定位置?-LMLPHP

我知道gridspec.GridSpec(3, 3)将提供3 * 3的布局,但是对于gs[0, :] gs[1, :-1] gs[1:, -1] gs[-1, 0] gs[-1, -2]意味着什么?我在网上查找,但未找到详细的内容,我也尝试更改索引,但未找到常规模式。有人可以给我一些解释或给我一个链接吗?

最佳答案

使用gs = gridspec.GridSpec(3, 3),您已经为绘图创建了一个3 x 3的“网格”。在此处,您可以使用gs[...,...]通过每个子图填充该3x3网格的行数和列数来指定每个子图的位置和大小。详细查看:

gs[1, :-1]指定子图将在网格空间中的哪个位置。例如,ax2 = plt.subplot(gs[1, :-1])表示:将名为ax2的轴放在第一行(用[1,...表示)(请记住,在python中,索引为零,因此,这实际上意味着“从顶部向下第二排”),从第0列一直延伸到最后一列(以...,:-1]表示)。因为我们的网格空间是3列宽,所以它将延伸2列。

也许最好通过在示例中注释每个轴来显示这一点:

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(3, 3)
ax1 = plt.subplot(gs[0, :])
ax2 = plt.subplot(gs[1, :-1])
ax3 = plt.subplot(gs[1:, -1])
ax4 = plt.subplot(gs[-1, 0])
ax5 = plt.subplot(gs[-1, -2])

ax1.annotate('ax1, gs[0,:] \ni.e. row 0, all columns',xy=(0.5,0.5),color='blue', ha='center')
ax2.annotate('ax2, gs[1, :-1]\ni.e. row 1, all columns except last', xy=(0.5,0.5),color='red', ha='center')
ax3.annotate('ax3, gs[1:, -1]\ni.e. row 1 until last row,\n last column', xy=(0.5,0.5),color='green', ha='center')
ax4.annotate('ax4, gs[-1, 0]\ni.e. last row, \n0th column', xy=(0.5,0.5),color='purple', ha='center')
ax5.annotate('ax5, gs[-1, -2]\ni.e. last row, \n2nd to last column', xy=(0.5,0.5), ha='center')

plt.show()


python - Matplotlib.gridspec:如何通过数字指定位置?-LMLPHP

关于python - Matplotlib.gridspec:如何通过数字指定位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49323348/

10-12 19:38