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

如何在matplotlib对数刻度上仅显示x轴相关十进制数值而非10的幂次

实现方案

要让对数刻度的x轴显示十进制数值而非10的幂次,你可以通过修改x轴的刻度格式化器实现,具体修改如下:


修改后的完整代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter

x = sorted([0.09, 20, 0.6, 6, 0.05, 0.5, 0.4, 4, 0.3, 3, 2, 0.1, 0.2,
            0.9, 0.8, 10, 0.7, 1, 0.08, 0.07, 0.06, 0.04, 0.03, 0.02, 0.01, 0.005])
y = list(np.arange(0.0, 2.6, 0.1))

data = {'x': x,
        'y': y}

df = pd.DataFrame(data)
df.plot(x='x')
plt.ylim(0, max(y)+0.5)
plt.xscale('log', base=10)

# 新增刻度格式化配置
ax = plt.gca()
# 设置主刻度为普通十进制格式
ax.xaxis.set_major_formatter(ScalarFormatter())
# 可选:如果需要小刻度也显示十进制数值,取消注释下一行
# ax.xaxis.set_minor_formatter(ScalarFormatter())
# 强制关闭科学计数法和偏移显示
ax.ticklabel_format(axis='x', style='plain', useOffset=False)

plt.grid()
plt.show()

关键配置说明

  • 导入的ScalarFormatter是matplotlib内置的普通数值格式化工具,会把刻度值转换为常规十进制数字展示,不会自动转成10的幂次格式
  • ticklabel_format的style='plain'参数强制禁用科学计数法,useOffset=False关闭刻度值偏移显示,避免出现类似+1e-2的额外标注
  • 如果不需要显示过小的次刻度数值,删除次刻度格式化的代码即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:15:05