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

如何在matplotlib中仅为指定x轴刻度设置显示标签

解决方法

你可以根据是否需要保留原有的1单位细密网格,选择对应方案:

方案1:保留细密网格,仅隐藏非目标刻度标签

如果你想要保留原来每1单位间隔的网格线,仅把不需要显示的刻度标签设为空,可在原有代码基础上新增如下逻辑:

import numpy as np

# 你的原有代码,用于生成细密网格
ax.set_xticks(np.arange(0, 800, 1))
ax.grid()

# 1. 定义图例中存在的、需要显示的x轴数值,替换为你实际的目标值
target_xticks = [50, 150, 300, 450, 600, 750]
# 数值较多时可转成集合提升判断效率
target_set = set(target_xticks)

# 2. 生成刻度标签:仅目标值显示标签,其余为空
labels = [str(x) if x in target_set else "" for x in np.arange(0, 800, 1)]
ax.set_xticklabels(labels)

如果你的x值为浮点数存在精度问题,可先统一保留固定小数位再做判断:

target_set = set(np.round(target_xticks, decimals=2))
labels = [str(round(x,2)) if round(x,2) in target_set else "" for x in np.arange(0, 800, 1)]

方案2:不需要细密网格,仅保留目标刻度

如果不需要1单位间隔的细密网格,直接把x轴刻度设置为你需要的目标值即可:

# 定义图例中存在的、需要显示的x轴数值,替换为你实际的目标值
target_xticks = [50, 150, 300, 450, 600, 750]
ax.set_xticks(target_xticks)
ax.grid()

自动提取目标刻度的方法

如果你需要自动从图例关联的绘图对象中提取x值,可参考如下写法:

# 假设你的绘图逻辑类似下方
line1, = ax.plot(x1, y1, label="系列1")
line2, = ax.plot(x2, y2, label="系列2")
ax.legend()

# 合并所有线条的x值,去重排序得到目标刻度
all_x = np.concatenate([line1.get_xdata(), line2.get_xdata()])
target_xticks = sorted(np.unique(all_x))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:06:03