【问题标题】:Embedding multiple gridspec layouts on a single matplotlib figure?在单个 matplotlib 图上嵌入多个 gridspec 布局?
【发布时间】:2019-06-07 21:11:49
【问题描述】:

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

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

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

【问题讨论】:

标签: python matplotlib


【解决方案1】:

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

示例:

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 | |
|               | |     |     | |
|               |---------------|
---------------------------------

【讨论】:

    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 2021-10-17
    • 2016-07-05
    • 2021-10-16
    相关资源
    最近更新 更多