python - 如何在一个 matplotlib 轴中集成子图?
问题描述
查看backtrader的输出,我可以看到 matplotlib 中似乎有一个功能可以将多个子图集成到一个图中:
(另见https://www.backtrader.com/docu/plotting/plotting/)
屏幕截图显示了一个图形 - 显然没有任何 matplotlib 子图 - 它具有三个子图 ( broker
, trades
, price data
)。
我知道如何使用 matplotlib 创建子图——但这不是我想要的。
我想知道如何在一个轴上创建几个共享相同 x 轴的子图(这是正确的 matplotlib 术语吗?)。
解决方案
您可以通过定义height_ratios
其中的子图来完成图片显示的操作。
几个共享相同 x 轴的子图。
您可以参考matplotlib.pyplot.subplots关于sharex
和sharey
当子图沿列具有共享 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 标签感兴趣,可以查看我的这个答案。
推荐阅读
- javascript - 如何按列比较多维数组
- jquery - 如何在 Wordpress 中删除 VC Image Carousel 的高度设置
- excel - 检查 2 列中是否有重复项,如果是,则替换为新数据或保留旧数据?VBA
- scala - 创建一个模棱两可的低优先级隐式
- c - 回收“rbinom”输入的代码在哪里?
- javascript - 为什么这些查询独立工作而不是一起工作?
- r - 如何并行化贝叶斯网络结构学习
- java - 如何解决“NoClassDefFoundError: Failed resolution of: Landroidx/core/animation/AnimatorCompatHelper;”
- python - TypeError:无法转换类型的对象
张量 - unity3d - 可以通过 AR 应用更新 Vuforia 数据库数据吗?