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

Matplotlib绘图y轴刻度自动偏移 实际值约100却显示0.001量级如何修复

问题原因

这是matplotlib默认的刻度优化逻辑导致的:你提供的Y轴数值全部集中在99.997到100.003区间,整体基准值接近100,但数值波动幅度不到0.01。为了更清晰展示波动细节,matplotlib会自动把Y轴刻度转换为相对于基准值的差值,基准值100会单独标注在Y轴边缘,不会显示在刻度上,所以你看到的刻度都是0.001量级的数值。

修正方案

任选以下任意一种方法即可解决:

  • 方案1:关闭Y轴的偏移显示(最便捷)
    直接关闭matplotlib的Y轴自动偏移逻辑,强制显示完整的数值刻度,修改代码如下:
import matplotlib.pyplot as plt

# 原有绘图代码
plt.plot(ss['x'].iloc[0:n], ss['y'].iloc[0:n], linestyle="-", marker='>', label=sector)
plt.legend()
# 新增关闭Y轴偏移的代码
plt.ticklabel_format(axis='y', useOffset=False)
# 如果同时需要禁止科学计数法,可替换为下面这行
# plt.ticklabel_format(axis='y', useOffset=False, style='plain')
plt.show()
  • 方案2:手动指定Y轴刻度范围
    如果需要更精确控制Y轴的显示范围,可以手动设置Y轴上下限:
plt.plot(ss['x'].iloc[0:n], ss['y'].iloc[0:n], linestyle="-", marker='>', label=sector)
plt.legend()
# 可根据你的实际数据调整上下限数值
plt.ylim(99.997, 100.003)
plt.show()
  • 方案3:自定义Y轴刻度格式化
    如果需要自定义刻度的小数显示位数,可以用FuncFormatter自定义格式:
from matplotlib.ticker import FuncFormatter

# 定义格式化函数,可按需调整保留的小数位数
def format_y_tick(val, pos):
    return f"{val:.6f}"

plt.plot(ss['x'].iloc[0:n], ss['y'].iloc[0:n], linestyle="-", marker='>', label=sector)
plt.legend()
# 应用自定义格式
plt.gca().yaxis.set_major_formatter(FuncFormatter(format_y_tick))
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:18:02