我阅读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]
的含义是什么?我在网上查找但没有找到详细的扩展,我也尝试更改索引但没有找到常规模式。有人可以给我一些解释或给我一个关于这个的链接吗?
答案 0 :(得分:1)
使用gs = gridspec.GridSpec(3, 3)
,您基本上创建了一个3乘3"网格"为你的情节。从那里,您可以使用gs[...,...]
来指定每个子图的位置和大小,每个子图填充3x3网格中的行数和列数。查看更多细节:
gs[1, :-1]
指定您的子图将在gridspace上的 where 。例如ax2 = plt.subplot(gs[1, :-1])
说:将名为ax2
的轴放在第一行(由[1,...
表示)上(请记住,在python中,索引为零,所以这实质上意味着"第二行从顶部开始#34;),从第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()