You need to enable JavaScript to run this app. Matplotlib中GridSpec网格切片对应子图区域的计算规则疑问
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib中GridSpec网格切片对应子图区域的计算规则疑问

g[0,:1]对应的网格范围

你定义的gridspec.GridSpec(2,2)是一个2行、2列的0基索引网格,g[0,:1]的维度拆分规则如下:

  • 第一个参数0:代表取行索引为0的行,也就是整个网格的第一行
  • 第二个参数:1:是Python标准左闭右开切片,等价于0:1,代表从列索引0开始,到列索引1之前结束,仅覆盖列索引为0的列,也就是整个网格的第一列

所以g[0,:1]最终对应的是第一行第一列的单个网格区域,生成的子图是1行1列的大小,和直接写g[0,0]效果完全一致。
如果你原本的需求是让子图占满整个第一行(横跨2列),需要把切片改成g[0,:]即可。

GridSpec切片的通用计算逻辑

GridSpec的索引逻辑完全对齐Python二维序列、numpy数组的规则:

  • 索引顺序固定为[行维度选择, 列维度选择],行在前、列在后,所有索引默认从0开始计数
  • 单值索引:如果某维度传入单个整数,代表仅选取该维度下对应索引的1个网格
  • 切片索引:如果某维度传入start:end格式的切片,遵循左闭右开规则:
    • 包含start对应的索引位置,不包含end对应的索引位置
    • 省略start时(比如:2)默认从索引0开始
    • 省略end时(比如1:)默认覆盖到该维度的最后一个网格
  • 跨区示例(基于你2行2列的网格):
    • g[1, :]:取第二行所有列,子图占满整个第二行,横跨2列
    • g[:, 1]:取第二列所有行,子图占满整个第二列,纵跨2行
    • g[0:2, 0:2]:取全部2行2列,子图覆盖整个画布

内容的提问来源于stack exchange,提问作者P K M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 23:06:01