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

如何在同一图表中适配Earnings与NBPrice两类差异较大的折线图?

解决两组数值范围差异大的折线图展示问题

针对Earnings(0-80000)和NBPrice(0-200)数值范围差距大导致折线图显示不佳的问题,给你三个实用解决方案:

1. 使用双Y轴(最推荐)

给两组数据分别配置独立的Y轴,左轴对应大数值的Earnings,右轴对应小数值的NBPrice,各自刻度适配自身数据范围,既能保留原始数值,又能直观对比趋势。

以Python的Matplotlib为例,代码实现如下:

import matplotlib.pyplot as plt

# 假设x是共享的横轴数据(比如时间、样本序号)
x = range(len(Earnings))

fig, ax1 = plt.subplots()

# 绘制Earnings到左Y轴
color = 'tab:blue'
ax1.set_xlabel('横轴(如时间/样本)')
ax1.set_ylabel('Earnings', color=color)
ax1.plot(x, Earnings, color=color)
ax1.tick_params(axis='y', labelcolor=color)

# 创建右Y轴绘制NBPrice
ax2 = ax1.twinx()
color = 'tab:orange'
ax2.set_ylabel('NBPrice', color=color)
ax2.plot(x, NBPrice, color=color)
ax2.tick_params(axis='y', labelcolor=color)

fig.tight_layout()
plt.show()

如果用Excel/Tableau这类工具,直接添加次坐标轴即可实现类似效果。

2. 数据归一化

把两组数据缩放到同一数值范围(比如0-100),这样可以用同一Y轴展示,但要明确标注原始数值对应关系,避免误解数据量级。

还是用Python示例:

# Min-Max归一化函数,将数据映射到0-100区间
def normalize(data):
    min_val = min(data)
    max_val = max(data)
    return [(x - min_val) / (max_val - min_val) * 100 for x in data]

# 对两组数据做归一化处理
norm_earnings = normalize(Earnings)
norm_nbprice = normalize(NBPrice)

# 绘制折线图
plt.plot(x, norm_earnings, label='归一化后Earnings')
plt.plot(x, norm_nbprice, label='归一化后NBPrice')
plt.xlabel('横轴')
plt.ylabel('归一化数值(0-100)')
plt.legend()
plt.show()

这个方法适合观察两组数据的相对变化趋势,但会丢失原始数值的直观感知。

3. 拆分独立子图

把两组数据分别放在上下或左右排列的子图中,各自使用适配的Y轴刻度,能清晰展示每组数据的细节,缺点是对比趋势需要跨图观察。

Python代码示例:

fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)

# 上方子图展示Earnings
ax1.plot(x, Earnings)
ax1.set_ylabel('Earnings')

# 下方子图展示NBPrice(共享横轴)
ax2.plot(x, NBPrice)
ax2.set_xlabel('横轴')
ax2.set_ylabel('NBPrice')

plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:00:12