如何正确绘制Pandas DataFrame折线图?X轴标签错位问题排查
解决Pandas折线图X轴标签对齐问题
嘿,我一眼就看到你代码里的几个关键问题,导致X轴标签没对齐标记点还重叠在右侧,咱们一步步来修正:
问题1:错误设置了X轴刻度的位置
你写了ax.set_xticks(df.Score),这是把Y轴的Score值当成了X轴刻度的位置!正确的做法应该是用X轴对应的Split列值来设置刻度位置,这样标签才能和折线的标记点一一对应。
问题2:错误限制了X轴范围
ax.set_xlim((0, 1))把X轴的显示范围强行限制在0到1之间,但你的Split值明显有到95的(从你给的标签能看出来),这就导致所有数据点都被挤在了X轴最右侧,标签自然会重叠在一起。
修正后的完整代码
#importing pandas package import pandas as pd import matplotlib.pyplot as plt import csv 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=".") # 去掉错误的xlim限制,或者根据实际Split范围设置,比如ax.set_xlim(df['Split'].min(), df['Split'].max()) ax.grid(True) # 关键修正:用Split列的值设置X轴刻度位置 ax.set_xticks(df.Split) # 确保标签数量和df的行数一致(这里你的标签有25个,要确认df刚好25行) 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']) ax.grid(True, linestyle='-.') ax.tick_params(labelcolor='r', labelsize='medium', width=3) # 如果标签还是有点挤,可以旋转X轴标签,比如加上这句: # plt.xticks(rotation=45) plt.show()
额外建议
如果X轴标签太多导致还是有点拥挤,可以添加plt.xticks(rotation=45)来旋转标签,提升可读性。
内容的提问来源于stack exchange,提问作者Pelide
相关产品推荐
相关产品推荐

