首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将具有不同Y轴范围的两个Matplotlib图合并为一个图,以便各个图的形状保持不变

将具有不同Y轴范围的两个Matplotlib图合并为一个图,以便各个图的形状保持不变
EN

Stack Overflow用户
提问于 2021-10-28 19:08:12
回答 1查看 55关注 0票数 0

我想把我的两个图放在一个图中,而不改变它们的形状。他们有一个非常不同的y范围。下面是我的两个图(我在运行图的相应代码行时得到了它们):

图1:

图2:

当我尝试将它们都绘制到同一张图上时,我得到:

图3:

这些地块最终失去了原来的形状。我假设发生这种情况是因为两个图中使用的y的范围不同。以下是我用来绘制的数据值:

代码语言:javascript
复制
y1 = [3.3549674089380157, 3.3549674741748685, 3.354967474135432, 3.3549674741683244, 3.354967802849705] 
y2 = [2.273429505964899, 2.273429556154414, 2.2734295561240736, 2.2734295561482813, 2.2734297980416596]
x = [-16.0, -13.0, -10.0, -6.0, -2.0]
EN

回答 1

Stack Overflow用户

发布于 2021-10-28 19:25:49

可以使用ax.twinx()在右侧创建第二个Y轴,然后单独绘制每条直线:

代码语言:javascript
复制
import matplotlib.pyplot as plt

x = [-16.0, -13.0, -10.0, -6.0, -2.0]
y1 = [3.3549674089380157, 3.3549674741748685, 3.354967474135432, 3.3549674741683244, 3.354967802849705]
y2 = [2.273429505964899, 2.273429556154414, 2.2734295561240736, 2.2734295561482813, 2.2734297980416596]

fig, ax_left = plt.subplots()
ax_left.plot(x, y1, label='y1', color='green')
ax_left.set_ylabel('y1')

ax_right = ax_left.twinx()
ax_right.plot(x, y2, label='y2', color='orange')
ax_right.set_ylabel('y2')

plt.show()

输出:

请注意,由于两条线具有基本相同的形状,因此当在每个轴上单独绘制时,它们会重叠-但这两条线都保留了“原始”形状。我试图通过使用不同的颜色和标记每个Y轴来使这一点变得更清楚。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69759607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档