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

时间:2015-03-08 23:40:15

标签: python matplotlib

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

Example of a Figure with two incompatible gridspec layouts

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

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

1 个答案:

答案 0 :(得分:6)

Matplotlib的matplotlib.gridspec模块包含一个名为gridspec.GridSpecFromSubplotSpec的类。与gridspec.GridSpec类似,它采用nrow和ncols参数,允许您指定子图将占用/ span的单元格,但是它还需要SubplotSpec对象,该对象可以是GridSpec的单元格或单元格范围。 {1}}对象。返回的对象是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 | |
|               | |     |     | |
|               |---------------|
---------------------------------

当我获得足够的代表时,我会上传一张图片但是ASCII艺术应该至少能够理解。