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

如何在Matplotlib中自定义非标准X/Y轴主刻度

自定义Matplotlib轴刻度实现非标准对数样式

这种刻度属于非标准的混合对数刻度,无法通过set_xscale/set_yscale的默认参数直接实现,需要手动指定主刻度位置并配合对数轴坐标变换,具体实现步骤如下:

实现代码

import matplotlib.pyplot as plt
from matplotlib.ticker import FixedLocator, ScalarFormatter

# 创建画布和坐标轴
fig, ax = plt.subplots(figsize=(8, 6))

# 配置X轴自定义刻度
x_custom_ticks = [0.1, 0.3, 1, 3, 10, 30, 100]
ax.set_xscale('log')  # 开启对数坐标,保证刻度间距符合对数比例
ax.xaxis.set_major_locator(FixedLocator(x_custom_ticks))  # 指定主刻度位置
ax.xaxis.set_major_formatter(ScalarFormatter())  # 显示原始数值,而非对数标签
ax.xaxis.set_minor_locator(plt.NullLocator())  # 关闭次要刻度,避免干扰

# 配置Y轴自定义刻度
y_custom_ticks = [0.02, 0.06, 0.1, 0.2, 0.6, 1, 2, 6, 20]
ax.set_yscale('log')
ax.yaxis.set_major_locator(FixedLocator(y_custom_ticks))
ax.yaxis.set_major_formatter(ScalarFormatter())
ax.yaxis.set_minor_locator(plt.NullLocator())

# 示例绘图验证效果
ax.plot([0.1, 30], [0.02, 20], marker='o')
plt.tight_layout()
plt.show()

关键说明

  • 先开启对数轴(set_xscale('log'))是为了让坐标轴的坐标变换遵循对数比例,确保自定义刻度的间距在视觉上符合数值的倍数关系
  • FixedLocator:强制Matplotlib使用你指定的数值作为主刻度,完全自定义刻度位置
  • ScalarFormatter:让刻度显示原始的十进制数值,替代对数轴默认的科学计数法或log格式标签
  • 关闭次要刻度(NullLocator()):避免默认对数轴的大量次要刻度与自定义主刻度重叠,保持视觉清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:55:18