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

修复Jupyter中Matplotlib图表的Y轴数值显示异常问题

Matplotlib Y轴显示科学计数法(le6)的问题解决

问题原因

当Y轴数值范围较大(比如达到百万级别)时,Matplotlib会自动启用科学计数法来简化刻度显示,图中的"le6"代表"×106",也就是说所有Y轴刻度数值都需要乘以106才是实际的平方值。

修复方法

方法1:直接关闭科学计数法,显示完整数值

在代码中添加一行关闭Y轴科学计数法的配置,放在设置轴范围或刻度的代码之后即可:

修改后的完整代码:

import matplotlib.pyplot as plt

x_values = range(1, 1001)
y_values = [x**2 for x in x_values]

plt.style.use('fivethirtyeight')

fig, ax = plt.subplots()
ax.scatter(x_values, y_values, s=1)

# 设置图表标题和坐标轴标签
ax.set_title("Square numbers", fontsize=24)
ax.set_xlabel("Value", fontsize=14)
ax.set_ylabel("Square of Value", fontsize=14)

# 设置刻度标签大小
ax.tick_params(axis='both', which='major', labelsize=14)
# 设置坐标轴范围
ax.axis([0, 1100, 0, 1100000])
# 关闭Y轴科学计数法,显示完整数值
ax.ticklabel_format(style='plain', axis='y')

plt.show()

方法2:自定义刻度格式,添加千分位分隔符

如果希望数值更易读,可以自定义Y轴刻度的显示格式,比如添加千分位逗号:

import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter

x_values = range(1, 1001)
y_values = [x**2 for x in x_values]

plt.style.use('fivethirtyeight')

fig, ax = plt.subplots()
ax.scatter(x_values, y_values, s=1)

# 设置图表标题和坐标轴标签
ax.set_title("Square numbers", fontsize=24)
ax.set_xlabel("Value", fontsize=14)
ax.set_ylabel("Square of Value", fontsize=14)

# 设置刻度标签大小
ax.tick_params(axis='both', which='major', labelsize=14)
# 设置坐标轴范围
ax.axis([0, 1100, 0, 1100000])

# 自定义Y轴刻度格式,添加千分位逗号
def format_y_ticks(value, tick_number):
    return f'{int(value):,}'
ax.yaxis.set_major_formatter(FuncFormatter(format_y_ticks))

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:03:11