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

Python绘图中Matplotlib的Y轴科学计数法格式自定义设置

在Matplotlib中让Y轴每个刻度显示完整科学计数格式

默认使用plt.ticklabel_format(style='sci')时,Matplotlib只会在Y轴顶部显示一次科学计数的乘法因子,刻度仅保留系数。要让每个刻度都显示完整的科学计数表达式(如0×10⁷、2×10⁷),可以通过自定义刻度格式化器实现:

实现步骤

  1. 计算Y轴数据对应的科学计数指数;
  2. 使用FuncFormatter自定义每个刻度的显示文本,将刻度值转换为「系数×10^指数」的格式;
  3. 应用自定义格式化器到Y轴。

完整示例代码

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

# 生成示例数据
x = np.linspace(0, 10, 100)
y = np.linspace(0, 6e7, 100)

plt.plot(x, y)

# 计算科学计数的指数(基于Y轴最大值)
max_y = np.max(y)
exp = int(np.floor(np.log10(max_y)))

# 定义刻度格式化函数
def y_tick_formatter(value, pos):
    scaled_val = value / (10 ** exp)
    # 使用LaTeX渲染上标,让格式更美观
    return f"${scaled_val:.0f} \\times 10^{{{exp}}}$"

# 应用格式化器到Y轴
plt.gca().yaxis.set_major_formatter(FuncFormatter(y_tick_formatter))

plt.show()

说明

  • 如果不需要LaTeX渲染的上标,可将返回语句改为普通文本格式:return f"{scaled_val:.0f}×10^{exp}";
  • 若Y轴数据范围变化,代码会自动重新计算指数,保证格式适配当前数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:20:11