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

如何将Matplotlib图表X轴1e-5改为10^-6并保持缩放刻度一致

Matplotlib X轴刻度改为10^N格式并保持缩放时生效

实现方法

要将X轴刻度从1e-5这类科学计数法改为10^-5的上标格式,同时确保图表放大(缩放)时格式不变,可以通过自定义刻度格式化器实现:


1. 导入依赖库

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

2. 自定义刻度格式化函数

根据你的轴类型(对数/线性)选择对应的格式化逻辑:

情况1:X轴为对数刻度(推荐,适配小数值范围)
def log_format(value, tick_number):
    # 计算数值的10次幂指数
    exponent = np.floor(np.log10(value))
    # 返回TeX格式的上标文本
    return r'$10^{%d}$' % exponent
情况2:X轴为线性刻度(保留系数,如2×10^-5)
def linear_format(value, tick_number):
    exponent = np.floor(np.log10(value))
    coeff = value / (10 ** exponent)
    # 系数接近1时直接显示10^N,否则显示系数×10^N
    if np.isclose(coeff, 1):
        return r'$10^{%d}$' % exponent
    else:
        return r'$%.1f \times 10^{%d}$' % (coeff, exponent)

3. 应用格式化器并启用缩放保留

# 生成示例数据
x = np.linspace(1e-6, 1e-5, 100)
y = np.sin(x * 1e6)

fig, ax = plt.subplots()
ax.plot(x, y)

# 绑定格式化器到X轴
# 对数刻度场景
ax.xaxis.set_major_locator(ticker.LogLocator(base=10))  # 让刻度落在10的幂次位置
ax.xaxis.set_major_formatter(ticker.FuncFormatter(log_format))

# 线性刻度场景(替换上面两行)
# ax.xaxis.set_major_formatter(ticker.FuncFormatter(linear_format))

# 开启交互式窗口后,缩放图表时格式会自动保留
plt.show()

关键说明

  • 使用FuncFormatter自定义格式化逻辑,Matplotlib会用TeX渲染上标,确保10^-6的显示效果。
  • 搭配LogLocator可以让对数刻度的轴自动匹配10的幂次位置,缩放时会自动调整刻度并保持格式。
  • 交互式缩放时,自定义格式化器不会被重置,因此始终保持10^N的显示样式。

内容的提问来源于stack exchange,提问作者Horst-Jackson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:20:56