You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并两个Y轴范围不同的Matplotlib绘图且保留各自原有形状

绘图变形解决方法

两组数据Y轴绝对数值差异较大,共用单一Y轴会压缩单组数据的波动幅度导致图形变形,采用双独立Y轴共享X轴的方案即可保留两组数据的原始形状。双Y轴模式下,两个Y轴的刻度范围、缩放比例完全独立,只会对绑定的序列生效,不会互相干扰,因此可以完美保留两组数据单独绘制时的形状特征。

Python Matplotlib实现代码如下:

import matplotlib.pyplot as plt

# 原始数据
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]

# 初始化画布和第一个坐标轴
fig, ax1 = plt.subplots()

# 绘制y1,绑定左侧Y轴
color1 = "#ff4b5c"
ax1.set_xlabel("X取值")
ax1.set_ylabel("Y1取值", color=color1)
ax1.plot(x, y1, color=color1, linewidth=2, label="Y1序列")
ax1.tick_params(axis="y", labelcolor=color1)

# 创建共享X轴的第二个坐标轴,绑定右侧Y轴
ax2 = ax1.twinx()
color2 = "#1e88e5"
ax2.set_ylabel("Y2取值", color=color2)
ax2.plot(x, y2, color=color2, linewidth=2, label="Y2序列")
ax2.tick_params(axis="y", labelcolor=color2)

# 合并图例
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines1 + lines2, labels1 + labels2, loc="upper left")

fig.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者Aryaman Velampalli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:45:03