如何解决Matplotlib:如何从 ax 对象中提取 vlines 和 fill_between 数据?
我在 Matplotlib 中有一个由两条 x/y 曲线、一条 vline 和一个 fill_between 组成的图形。
我的最终目标是在第 4 个新图形中显示这个图形以及其他 2 个图形作为子图。而且我真的很想避免为这个带有子图的新图形再次从头开始创建所有三个图形。
所以,我希望创建一个 1x3 图形(子图,1 行,3 列),如下所示:
[图1、图2、图3]
我快到了。到目前为止,我已经能够从原始图形的 ax 对象中提取两条 x/y 曲线。通过 for 循环,我已经能够将三个图形中的大部分重建为新图形中的子图:
(ax_a、ax_b、ax_c 是属于我想添加为新图形的子图的三个原始图形的 ax 对象)
fig = plt.figure(figsize = (16,4))
ax1 = fig.add_subplot(1,3,1)
ax2 = fig.add_subplot(1,2)
ax3 = fig.add_subplot(1,3)
for ax,ref in zip(fig.axes,[ax_a,ax_b,ax_c]):
for line in ref.lines:
x = line.get_xdata()
y = line.get_ydata()
ax.plot(x,y)
ax.set_xlabel(ref.get_xlabel())
ax.set_ylabel(ref.get_ylabel())
这实际上创建了我原来的 3 个图的 1x3 网格。这几乎是完美的。
缺少的是 fill_between 组件和 vlines 组件。如果我能从 ax_a、ax_b 和 ax_c 中提取这些对象,我就大功告成了。但我找不到办法做到这一点。
有办法吗?如果没有,你会如何解决这样的问题?
非常感谢您提供的任何建议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。