You need to enable JavaScript to run this app. 如何使用Matplotlib设置x轴显示自定义不等间距指定刻度
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Matplotlib设置x轴显示自定义不等间距指定刻度

自定义Matplotlib指定不等距x轴刻度的实现方法

核心逻辑

Matplotlib默认会根据x轴覆盖的数值范围自动生成均匀分布的连续刻度,不会主动适配你传入的离散数据点位置。要实现“在指定x值位置显示刻度、其余位置不显示”的效果,需要手动调用接口明确指定刻度的位置与对应展示内容,同时保留x轴本身的真实数值比例。

操作步骤

在原有代码基础上,仅需添加两处刻度配置即可满足需求:

  • 调用ax.set_xticks(),传入你需要展示的x值列表,强制x轴仅在这些坐标位置生成刻度,自动屏蔽列表范围外的默认生成刻度
  • (可选)调用ax.set_xticklabels(),传入与x值一一对应的显示文本,自定义刻度的展示格式(比如统一保留固定小数位)

修改后的完整代码

fig = plt.figure()
fig.suptitle("True Positive Rate")
ax = fig.add_subplot(111)

subsets = [0, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
# 替换为你实际的recall_results实测值即可
recall_results = [0.77, 0.81, 0.84, 0.86, 0.875, 0.885, 0.89]

ax.plot(subsets, recall_results, marker = "o", linestyle = "--")

# 自定义x轴刻度核心配置
ax.set_xticks(subsets)
ax.set_xticklabels([f"{val:.1f}" for val in subsets])

ax.set_ylabel("True Positive Rate")
ax.set_xlabel("% complete data in samples")
plt.show()

注意事项

  • 该配置会完全保留x轴的真实数值距离:比如坐标0到0.5的区间长度,是0.5到1区间长度的一半,不会因为刻度设置扭曲x轴代表的数值递进关系
  • 避免误用类别轴模式:如果把x轴的绘图位置替换为1、2、3这类均匀排列的序号值,会把所有数据点之间的距离强制拉成相等,完全失去x轴代表数据完整度的数值意义,仅适合需要等距展示离散无序列别的场景
  • 如果需要加宽0刻度附近的显示空间,可以额外调用ax.set_xlim(left=-0.05, right=1.05),让最左侧的基线数据点不会贴在轴边缘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 11:57:01