返回介绍

使用 GridSpec 和 SubplotSpec

发布于 2024-05-19 17:51:27 字数 3983 浏览 0 评论 0 收藏 0

你可以直接创建 matplotlib.gridspec.GridSpec 然后通过它来创建 SubPlot 。如:

gs=matplotlib.gridspec.GridSpec(2,2) #网格 2 行 2 列
matplotlib.pyplot.subplot(gs[0,0])

等价于`matplotlib.pyplot.subplot2grid((2,2),(0,0))

GridSpec 对对象提供了类似 array 的索引方法,其索引的结果是一个 SubplotSpec 对象实例。如果你想创建横跨多个网格的 SubplotSpec ,那么你需要对 GridSpec 对象执行分片索引,如 pyplot.subplot(gs[0,:-1])

使用 GridSpec 和 SubplotSpec

a. 调整 GridSpec layout

如果你使用 GridSpec ,那么你可以调整由 GridSpec 创建的 SubplotSpeclayout parameter 。如:

gs=gridspec.GridSpec(3,3)
gs.update(left=0.05,right=0.48,wspace=0.05)

这种用法类似于 subplots_adjust ,但是它仅仅影响由本 GridSpec 创建的 SubplotSpec 。其中 gs.update() 的关键字参数有:

  • left 关键字参数: subplot 左侧宽度
  • right 关键字参数: subplot 右侧宽度
  • bottom 关键字参数: subplot 底部高度
  • top 关键字参数: subplot 顶部高度
  • wspace 关键字参数: subplot 之间的空白宽度
  • hspace 关键字参数: subplot 之间的空白的高度

b. 从 SubplotSpec 创建 GridSpec :

你可以从 SubplotSpec 创建 GridSpec 。此时 layout parameter 由该 SubplotSpec 指定。如:

gs0=gridspec.GridSpec(1,2)
gs00=gridspec.GridSpecFromSubplotSpec(3,3,subplot_spec=gs0[0])

matplotlib.gridspec.GridSpecFromSubplotSpec(nrows, ncols, subplot_spec, wspace=None, hspace=None,height_ratios=None,width_ratios=None) :创建一个 GridSpec ,它的 subplot layout parameter 继承自指定的 SubplotSpec 。其中 nrows 为网格行数, ncols 为网格列数, subplot_spec 为指定的 SubplotSpec

从 SubplotSpec 创建 GridSpec

c. 创建不同大小的 GridSpec 网格

默认情况下, GridSpec 创建的网格都是相同大小的。当然你可以调整相对的高度和宽度。注意这里只有相对大小(即比例)是有意义的,绝对大小值是没有意义的。如:

gs=gridspec.GridSpec(2,2,width_ratios=[1,2],height_ratios=[4,1]
plt.subplot(gs[0]
....

这里 width_ratios 关键字参数指定了一行中,各列的宽度比例(有多少列就有多少个数字); height_ratios 关键字参数指定了一列中,各行的高度比例(有多少行就有多少个数字)。

不同大小的 GridSpec 网格

d. GridSpec.tight_layout()

GridSpec.tight_layout(fig, renderer=None, pad=1.08, h_pad=None, w_pad=None, rect=None) : tight_layout 能够自动调整 subplot param 从而使得 subplot 适应 figure area 。它仅仅检查 ticklabel、axis label、title 等内容是否超出绘制区域。其参数为:

  • fig 关键字参数: Figure 对象,图表。
  • pad 关键字参数:一个浮点数,单位是 fontsize ,表示 figure edgeedges of subplots 之间的填充区域。
  • h_pad 关键字参数:一个浮点数,单位是 fontsize ,示 subplots 之间的高度,默认为 pad
  • w_pad 关键字参数:一个浮点数,单位是 fontsize ,示 subplots 之间的宽度,默认为 pad
  • rect 关键字参数:如果给定了该参数为一个列表或元组(是一个矩形的四要素,分别代表左下角坐标,宽度,高度),则指定了网格的轮廓矩形,所有的 subplots 都位于该矩形中。其坐标系是 figure coordinate ,从 [0...1] ,如果没有提供该参数,则默认为 (0, 0, 1, 1)

当然你可以使用 matplotlib.pyplot.tight_layout() 来达到同样的效果。

GridSpec.tight_layout()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文