如何将 `GridSpec()` 与 `subplots()` 一起使用

Posted

技术标签:

【中文标题】如何将 `GridSpec()` 与 `subplots()` 一起使用【英文标题】:How to use `GridSpec()` with `subplots()` 【发布时间】:2016-03-20 00:49:52 【问题描述】:

有几个 (example) SO 帖子涉及如何使用GridSpec 进行一般的子图绘制。 我试图实现的无济于事的是允许将GridSpecsubplots 一起使用,就像这样,我可以用一些循环控制的索引替换实际的数组和列表索引:

gs = gridspec.GridSpec(4, 1, height_ratios=[2, 2, 1, 1])        
tPlot, axes = plt.subplots(4, sharex=True, sharey=False)
tPlot.suptitle(node, fontsize=20)
axes[0].plot(targetDay[0], gs[0])
axes[1].plot(targetDay[1], gs[1])
axes[2].scatter(targetDay[2], gs[2])
axes[3].plot(targetDay[3], gs[3])

不用说这段代码不起作用,它只是一个例子。

【问题讨论】:

【参考方案1】:

您可以在subplots 调用中使用gridspec_kw 参数将kwargs 发送到GridSpec,而不是在subplots 之前调用gridspec.GridSpec。来自docs:

gridspec_kw : 字典

带有关键字的字典传递给用于创建放置子图的网格的 GridSpec 构造函数。

所以,例如:

import matplotlib.pyplot as plt

tPlot, axes = plt.subplots(
        nrows=4, ncols=1, sharex=True, sharey=False, 
        gridspec_kw='height_ratios':[2,2,1,1]
        )

tPlot.suptitle('node', fontsize=20)

axes[0].plot(range(10),'ro-') 
axes[1].plot(range(10),'bo-') 
axes[2].plot(range(10),'go-') 
axes[3].plot(range(10),'mo-') 

plt.show()

【讨论】:

以上是关于如何将 `GridSpec()` 与 `subplots()` 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

创建一个图形,其中包含按 gridspec 布局排列的绘图、滑块和其他小部件

Matplotlib 使用GridSpec和其他功能自定义图形布局

gridspec 和共享 yaxis 的问题:如何正确格式化?

多个子图的GridSpec“正在清除包含传递轴的图形”

如何使子图的大小相等?

SQL SERVER 2005删除维护作业报错:The DELETE statement conflicted with the REFERENCE constraint "FK_subpl