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

如何正确绘制Pandas DataFrame折线图?解决X轴标签错位重叠问题

问题诊断与修复方案

我帮你找出了X轴标签错位的核心问题,主要是代码里的几个关键错误导致的:

错误点分析

  • 错误1:X轴刻度位置用错了数据
    你写了ax.set_xticks(df.Score),这把Score列的值当成了X轴刻度的位置,但你的X轴对应的是Split列的数值,完全不匹配的刻度位置直接导致标签错位。
  • 错误2:X轴范围被错误限制
    ax.set_xlim((0, 1))把X轴的显示范围锁死在了0到1之间,但你的Split值明显包含远大于1的数值(比如15、50、95等),所以所有数据点都被挤压到X轴最右侧,标签自然重叠在那里。
  • 潜在问题:标签数量可能不匹配
    你提供的X轴标签有25个,需要确保df的行数也是25,否则会出现刻度与标签对应不上的情况。

修正后的完整代码

# importing pandas package
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# making data frame from csv file
dataset = pd.read_csv('curve.csv.csv')
df = pd.DataFrame(dataset.sort_values('Split')[['Split', 'Score']])
df.reset_index(drop=True, inplace=True)
print(df)

ax = df.plot.line(x='Split', y='Score', color='green', marker=".")
# 移除错误的X轴范围限制,让matplotlib自动适配数据范围
# ax.set_xlim((0, 1))  # 已删除该行
ax.grid(True)

# 设置X轴刻度为Split列的实际数值,确保刻度与数据点对齐
ax.set_xticks(df.Split)
# 设置标签并添加旋转避免重叠,同时确保标签数量与df行数一致
ax.set_xticklabels(
    ['.005','.010','.015','.020','.040','.060','.080','1','15','20','25','30','35','40','45','50','55','60' ,'65','70','75','80','85','90','95'],
    rotation=45  # 旋转标签防止重叠
)
ax.grid(True, linestyle='-.')
ax.tick_params(labelcolor='r', labelsize='medium', width=3)
plt.tight_layout()  # 自动调整布局,避免标签被截断
plt.show()

关键修复说明

  1. 移除了错误的ax.set_xlim((0, 1)),让matplotlib根据Split列的实际数值自动适配X轴范围,数据点不再被挤压。
  2. 将ax.set_xticks(df.Score)改为ax.set_xticks(df.Split),使X轴刻度位置与每个数据点的Split值完全对应,标签自然对齐到标记点。
  3. 给set_xticklabels添加了rotation=45参数,并使用plt.tight_layout()优化布局,解决标签重叠或被截断的问题。
  4. 确认xticklabels的数量与df的行数一致,保证每个刻度都有对应的标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:05:28