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

如何解决matplotlib折线图y轴大数值显示为1、2、3的问题

问题原因及解决方案

核心问题排查方向

  • 首先排查New、Old列表的数据类型:如果两个列表里的元素是带千分位分隔符的字符串(比如'18,965,554'),matplotlib无法将其识别为数值,会默认转换为从0开始的分类索引,这就是y轴仅显示1、2、3这类小数值的最常见原因。
  • 其次排查未定义变量问题:你当前提供的代码中FLMAUB、RandomFL、x1以及L列表里的A~H都没有定义,如果实际运行时这些变量的赋值不符合预期,也会导致坐标轴渲染异常。
  • 最后排查绘图逻辑错误:你调用plt.plot(New, Old)是将New作为x轴坐标、Old作为y轴坐标绘制单条折线,和你预期的“x轴为A~H,分别绘制New、Old两条折线”的需求不符。

修正后的可运行代码

import matplotlib.pyplot as plt
plt.rcParams.update({'font.size': 16})

# 修正L列表元素为字符串,避免未定义报错
L = ['A','B','C','D','E','F','G','H']
x = range(len(L)) # 生成x轴位置序列,替换未定义的x1
New = [18965544, 45668787, 46768733, 865533, 32586879, 996665544, 53544222,97775644]  
Old = [23455, 0,0,0,0, 996665544, 65645, 654535]

# 修正绘图逻辑:删除未定义的FLMAUB、RandomFL绘图代码,分别绘制New、Old两条折线
plt.plot(x, New) 
plt.plot(x, Old)

plt.legend(['new', 'old'], loc='upper right')
plt.xticks(x, L, rotation=30, horizontalalignment='right')
plt.title('New Vs Old')
plt.xlabel('Names')
plt.ylabel('Cost')

# 可选配置:如果y轴数值跨度过大,可开启对数坐标更便于查看小数值
# plt.yscale('log')
plt.show()

额外说明

如果你的原始数据是从csv等文件读取的,读取时注意关闭千分位分隔符识别,或者手动将字符串格式的数值转换为整型:
New = [int(val.replace(',','')) for val in New]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:36:04