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

如何固定plot绘图中y轴的刻度比例,实现多图表斜率直观对比

固定y轴刻度比例的解决方案
  • 方法1:统一设置所有图表的y轴取值范围
    提前计算所有待对比序列的全局y轴最值,给所有绘图语句传入相同的ylim参数,确保两张图的y轴刻度范围完全一致,不会自动适配单张图的数据范围:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 第一步:先统计所有待对比数据的全局y轴范围,可根据你的数据集列表调整取值逻辑
all_skill_values = pd.concat([df1[skill] for df1, skill in 所有待对比数据集列表])
global_y_min = all_skill_values.min()
global_y_max = all_skill_values.max()
# 可选:上下留5%的边距让图表更美观
y_margin = (global_y_max - global_y_min) * 0.05
fixed_ylim = (global_y_min - y_margin, global_y_max + y_margin)

# 后续每张图画图时传入固定的ylim参数即可
x = np.array(range(df.shape[0]))
df1[skill] = pd.to_numeric(df1[skill])
fit = np.polyfit(x, df1[skill], 1)
fit_fn = np.poly1d(fit)
df['fit_fn(x)'] = fit_fn(x)
df[['Hodrick-Prescott filter',skill,'fit_fn(x)']].plot(title=skill + date, ylim=fixed_ylim)
plt.show()
  • 方法2:子图共享y轴并排对比
    如果需要直接对两张图做直观对比,建议把两张图放在同一个画布的子图中,设置共享y轴,刻度比例会自动完全一致:
# 示例:两张图横向并排、共享y轴
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12, 5), sharey=True)

# 第一张图绘制到ax1
df1[['Hodrick-Prescott filter',skill1,'fit_fn(x)']].plot(title=skill1 + date, ax=ax1)
# 第二张图绘制到ax2
df2[['Hodrick-Prescott filter',skill2,'fit_fn(x)']].plot(title=skill2 + date, ax=ax2)

plt.tight_layout()
plt.show()
  • 方法3:固定坐标轴纵横比(可选)
    如果需要严格保证斜率的视觉呈现和数值比例完全对应,可以设置轴的纵横比参数,让x轴、y轴的单位数值对应的像素长度固定:
ax = df[['Hodrick-Prescott filter',skill,'fit_fn(x)']].plot(title=skill + date)
# 可调整参数值控制比例,比如equal代表x轴、y轴1单位数值的像素长度完全相等
ax.set_aspect('equal')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:54:08