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

matplotlib使用set_xticklabels时x轴标签偏移1位丢失首个标签如何解决

问题根因

x轴标签错位、首标签丢失的核心原因是x轴刻度位置和标签没有一一对应,常见触发场景:

  • 绘图时未指定x坐标,matplotlib默认生成0到len(scores)-1的刻度位置,但调用plt.xticks()时仅传了标签参数、未指定刻度位置,或是刻度位置范围填成了1到len(names)
  • 低于3.5版本的matplotlib对字符串类型的x轴参数自动适配存在缺陷,直接传分类名列表会出现偏移
修复方案

以下两种方案任选其一即可:

方案1:全版本通用显式绑定方案

手动对齐刻度位置和标签,兼容所有matplotlib版本:

import matplotlib.pyplot as plt

# 替换为你的实际数据
scores = [0.89, 0.93, 0.82, 0.96]
names = ["Nearest Neighbors", "SVM", "Decision Tree", "Random Forest"]

# 生成和分类器数量一致的x轴索引坐标
x_coords = range(len(names))
# 绘图时同时传入x坐标和y值
plt.plot(x_coords, scores, marker='o')
# 显式绑定刻度位置和对应标签,rotation可旋转标签避免重叠
plt.xticks(ticks=x_coords, labels=names, rotation=45)

plt.ylabel('Score')
plt.xlabel('Classifier')
# 自动调整布局避免底部标签被截断
plt.tight_layout()
plt.show()

方案2:高版本简化方案

如果你的matplotlib版本≥3.5,不需要手动处理索引,直接传分类名作为x参数即可:

import matplotlib
print(matplotlib.__version__) # 确认版本符合要求

plt.plot(names, scores, marker='o')
plt.xticks(rotation=45)

plt.ylabel('Score')
plt.xlabel('Classifier')
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 07:15:02