在单个 matplotlib 图上嵌入多个 gridspec 布局?

2024-04-09

我正在使用 python 图形库 matplotlib 来绘制报告中的几项内容,我发现自己需要在较小图形的任意网格上方有几个固定计数的图形。我四处搜索,但找不到任何可以让我在单个 matplotlib 图上使用两个 gridspec 布局的东西。我本质上想要的是:

我知道如果第二组中每行的图形数量是偶数,我可以破解一些解决方案。但如果每一行都有奇数个数,那么这样的解决方案是不可能的。例如,假设我在小图形部分中每行有 5 个图形,那么不可能在它们上方并排放置两个相同大小的图形,并且 gridspec 不允许您指定分数索引(也不应该) 。

在我看来,正确的解决方案是在单个图形上有两个单独的 gridspec 布局,一个用于上半部分的固定计数图形,然后是一个以编程方式缩放的 gridspec 用于下半部分的较小图形。我在带有 gridspec 或子图的 matplotlib 中没有找到这样的解决方案,那么有人对使用 matplotlib 进行此类图形设置有任何建议吗?


Matplotlib 的matplotlib.gridspec模块包含一个名为的类gridspec.GridSpecFromSubplotSpec. Like gridspec.GridSpec,它需要 nrow 和 ncols 参数,允许您指定子图将占用/跨度的单元格,但是它还需要SubplotSpec对象,可以是单元格或单元格跨度GridSpec目的。返回的对象是一个GridSpec这取决于电池的尺寸SubplotSpec这是用来创建它的。

Example:

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

outer_grid = gridspec.GridSpec(1,2) # gridspec with two adjacent horizontal cells
left_cell = outer_grid[0,1] # the left SubplotSpec within outer_grid

inner_grid = gridspec.GridSpecFromSubplotSpec(2,1, left_cell)

# From here we can plot usinginner_grid's SubplotSpecs
ax1 = plt.subplot(inner_grid[0,0])
ax2 = plt.subplot(inner_grid[1,0])

ax1.plot(data)
ax2.plot(other_data)

plt.show()

这段代码的结果是:

---------------------------------
|               |---------------|
| We didn't plot| |     |other| |
| anything here.| |data |data | |
|               | |     |     | |
|               |---------------|
---------------------------------
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在单个 matplotlib 图上嵌入多个 gridspec 布局? 的相关文章

随机推荐