首页 > 解决方案 > 如何在一个 matplotlib 轴中集成子图?

问题描述

查看backtrader的输出,我可以看到 matplotlib 中似乎有一个功能可以将多个子图集成到一个图中:

另见 https://www.backtrader.com/docu/plotting/plotting/ 分别 https://www.backtrader.com/docu/plotting/01-sample-code.png (另见https://www.backtrader.com/docu/plotting/plotting/

屏幕截图显示了一个图形 - 显然没有任何 matplotlib 子图 - 它具有三个子图 ( broker, trades, price data)。

我知道如何使用 matplotlib 创建子图——但这不是我想要的。

我想知道如何在一个轴上创建几个共享相同 x 轴的子图(这是正确的 matplotlib 术语吗?)。

标签: pythonmatplotlibmplfinance

解决方案


您可以通过定义height_ratios其中的子图来完成图片显示的操作。

几个共享相同 x 轴的子图。

您可以参考matplotlib.pyplot.subplots关于sharexsharey

当子图沿列具有共享 x 轴时,仅创建底部子图的 x 刻度标签。

类似地,当子图在一行上有一个共享的 y 轴时,只会创建第一列子图的 y 刻度标签。

import matplotlib.pyplot as plt


fig, axs = plt.subplots(3, 1, sharex='col',
                        gridspec_kw={'width_ratios': [1], 'height_ratios': [2, 2, 10],
                        'hspace': 0, 'wspace': 0})

# avoid overlay
axs[1].set_yticks([0, 0.5, 1])
axs[1].set_yticklabels(["", "0.5", ""])

   
plt.show()

在此处输入图像描述

如果您对如何注释 y 标签感兴趣,可以查看我的这个答案


推荐阅读