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

如何在matplotlib中仅显示坐标轴科学计数法的指数

解决Matplotlib坐标轴仅显示科学计数法指数部分的问题

要实现只显示坐标轴刻度的指数部分(比如把1e2、1e3改成显示2、3),可以通过自定义刻度格式化函数来实现,具体代码示例如下:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据(模拟你的绘图场景)
x = np.logspace(2, 5, 100)
y = np.logspace(1, 4, 100)

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

# 定义刻度格式化函数:将刻度值转换为10的指数整数
def exp_formatter(value, pos):
    return str(int(np.log10(value)))

# 应用到X轴
ax.xaxis.set_major_formatter(exp_formatter)
# 隐藏默认的科学计数法偏移标签(比如轴旁的"1e5"字样)
ax.xaxis.get_offset_text().set_visible(False)

# 对Y轴执行同样操作
ax.yaxis.set_major_formatter(exp_formatter)
ax.yaxis.get_offset_text().set_visible(False)

# 可选:给坐标轴添加说明,明确刻度代表10的指数
ax.set_xlabel(r"$10^{\text{指数}}$")
ax.set_ylabel(r"$10^{\text{指数}}$")

plt.show()

关键步骤说明:

  • 自定义exp_formatter函数:通过np.log10()计算刻度值的10为底对数,取整数后转为字符串作为刻度标签。
  • 隐藏偏移文本:默认科学计数法会在轴旁显示类似1eN的偏移标注,通过get_offset_text().set_visible(False)将其隐藏。
  • 坐标轴标签补充:添加带LaTeX格式的标签,让读者清晰理解刻度代表的是10的指数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:09:58