我阅读了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])
我知道
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:如何通过数字指定位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49323348/