如何将Matplotlib图表X轴标签替换为对应Feature名称?
解决Matplotlib图表X轴显示Feature名称的问题
方法一:直接使用原DataFrame绘图(推荐)
不需要转置DataFrame,直接提取feature列作为X轴数据,score列作为Y轴数据,代码更简洁直观:
import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame( {'feature': ['abc','bcd','abd','dax','cax','bax','def','deg','abe','cde'], 'score': [0.7732,0.8412,0.8626,0.8705,0.8811,0.8851,0.8884,0.8922,0.8934,0.8949]} ) # 直接用feature作为X轴,score作为Y轴 plt.plot(df['feature'], df['score'], color="blue", marker="o") plt.xlabel('Feature') plt.ylabel('Score') plt.xticks(rotation=45) # 可选:旋转标签避免重叠 plt.show()
方法二:基于原有代码修改X轴标签
如果想保留你原来的转置逻辑,只需通过plt.xticks()手动绑定刻度和对应的feature名称:
import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame( {'feature': ['abc','bcd','abd','dax','cax','bax','def','deg','abe','cde'], 'score': [0.7732,0.8412,0.8626,0.8705,0.8811,0.8851,0.8884,0.8922,0.8934,0.8949]} ) m = df.T k_feat = sorted(m.keys()) avg = [m[k]["score"] for k in k_feat] # 获取对应索引的feature名称 feature_names = [m[k]["feature"] for k in k_feat] plt.plot(k_feat, avg, color="blue", marker="o") # 设置X轴刻度为原索引,替换标签为feature名称 plt.xticks(ticks=k_feat, labels=feature_names, rotation=45) plt.xlabel('Feature') plt.ylabel('Score') plt.show()
两种方法都能让X轴显示对应的feature名称,添加rotation=45是为了防止标签过长时重叠,可根据实际需求调整旋转角度。
内容的提问来源于stack exchange,提问作者Amina Umar
相关产品推荐
相关产品推荐

