使用Pandas绘制折线图时X轴值未正确排序的问题求助
解决Python绘图时X轴日期排序异常问题
问题原因
你的X轴JOUR(PSDATE)列是字符串格式,pandas按字符串字典序排序,而非时间顺序,导致X轴显示混乱。
修复步骤
- 将
JOUR(PSDATE)列转换为datetime类型,让pandas识别为日期格式 - 对转换后的日期索引进行排序,确保时间序列按正确顺序展示
修改后的代码
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('C:/Userscsv_grouped.csv', sep=';') # 转换日期列,format参数需匹配你的日期格式(示例为日/月/年) df['JOUR(PSDATE)'] = pd.to_datetime(df['JOUR(PSDATE)'], format='%d/%m/%Y') for col in df.columns: if col != 'JOUR(PSDATE)' and col != 'GNODEB': plt.style.use('seaborn') # 先按日期排序原数据,再透视 df_sorted = df.sort_values('JOUR(PSDATE)') pivoted_df = df_sorted.pivot(index='JOUR(PSDATE)', columns='GNODEB', values=col) fig, ax = plt.subplots() pivoted_df.plot(ax=ax, kind='line', legend=True) ax.set_xlabel('JOUR(PSDATE)') ax.set_ylabel(col) ax.set_title(f'Evolution of {col} by GNODEB') plt.legend(title='GNODEB', bbox_to_anchor=(1.05, 1), loc='upper left') plt.show() break
关键说明
pd.to_datetime()的format参数要和你的日期格式匹配:如果是月/日/年格式,就改成%m/%d/%Y- 也可以选择在透视完成后对索引排序,替换成
pivoted_df = pivoted_df.sort_index(),效果一致
内容的提问来源于stack exchange,提问作者Rach
相关产品推荐
相关产品推荐

