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

如何在Matplotlib中添加自定义刻度?实现指定位置显示自定义文本

实现Matplotlib自定义刻度标签的最优方式

嘿,这个需求现在实现起来已经非常顺手啦!不用再像4年前那样手动折腾单个刻度的添加,咱们可以直接用刻度位置+字典映射标签的方式,完美契合你想用{1.0 : "some custom text"}这种形式定义自定义文本的需求。

核心思路

本质上是把刻度位置和标签分开设置:先指定要显示的所有刻度位置,再用字典把需要自定义的刻度值映射成你想要的文本,其余刻度保留原数值即可。

完整代码示例

import matplotlib.pyplot as plt

# 创建图表和轴对象
fig, ax = plt.subplots()
# 随便画点示例数据
ax.plot([1, 2, 3], [0.5, 0.8, 1.0])

# 1. 定义你要显示的所有y轴刻度位置
ytick_positions = [0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
# 2. 用字典定义需要自定义的刻度标签
custom_label_map = {1.0: "some custom text"}

# 3. 生成对应的标签列表:匹配到自定义映射就用文本,否则用原数值的字符串
ytick_labels = [custom_label_map.get(pos, str(pos)) for pos in ytick_positions]

# 4. 应用刻度和标签
ax.set_yticks(ytick_positions)
ax.set_yticklabels(ytick_labels)

plt.show()

灵活扩展技巧

如果不想手动列出所有刻度位置,想保留Matplotlib自动生成的刻度,只修改特定值的标签,可以这样做:

# 获取当前y轴自动生成的刻度位置
current_yticks = ax.get_yticks()
# 同样用字典定义自定义标签
custom_label_map = {1.0: "some custom text"}
# 生成标签列表
ytick_labels = [custom_label_map.get(pos, str(pos)) for pos in current_yticks]
# 更新标签
ax.set_yticklabels(ytick_labels)

为什么这是最优方式?

  • 完全贴合你想用字典定义自定义文本的习惯,灵活度拉满,想加多少自定义标签都只需要在字典里加键值对
  • 比4年前的手动添加单个刻度的方法高效太多,批量处理逻辑清晰,维护起来也方便
  • 兼容Matplotlib的最新版本(3.x及以上都支持),没有兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:00:51