Matplotlib绘制2D图时Y轴自动重排,如何保留原始数据顺序?
解决Matplotlib绘图时Y轴标签自动排序的问题
问题根源
你的income列大概率不是数值型数据(比如是带符号的字符串、分类类型),Matplotlib会把这类数据当成离散分类变量,自动按字母/类别顺序排序,而非按原有索引对应的数值展示。
解决步骤
检查数据类型
先确认income列的类型,执行代码:print(df['income'].dtype)如果输出是
object(字符串)或category,就是问题所在。转换为数值类型
- 如果是带非数值字符(比如
$、,)的字符串,先清理再转换:# 清理字符并转为浮点型 df['income'] = df['income'].str.replace('$', '', regex=False).str.replace(',', '', regex=False).astype(float) - 如果是分类类型,直接转换:
df['income'] = df['income'].astype(float)
- 如果是带非数值字符(比如
重新绘图
转换完成后,再执行你的绘图代码:import matplotlib.pyplot as plt plt.plot(df['income']) # 折线图 # 或者散点图 plt.scatter(df.index, df['income']) plt.xlabel('索引') plt.ylabel('收入') plt.show()此时Y轴会自动根据数值范围计算刻度,不会再乱排序。
验证方法
转换后可以查看列的统计信息,确认是数值型:
print(df['income'].describe())
内容的提问来源于stack exchange,提问作者Ryan Cocuzzo
相关产品推荐
相关产品推荐

