Pandas绘图时能否不修改DataFrame列名自定义图例标签?
问题解答
结论
无需修改原DataFrame的列名即可实现自定义图例标签。你之前使用yticks和ylabel参数未达到预期,是因为这两个参数分别用于修改Y轴刻度文本、Y轴总标题,和图例配置没有关联。
实现方式
推荐使用手动设置图例的方案,只需在原有代码基础上补充少量逻辑即可:
- 按你传入的绘图列顺序,提前定义好对应的自定义标签列表
- 接住pandas绘图返回的Axes对象,调用
legend方法传入自定义标签列表
修改后的参考代码如下:
import matplotlib.pyplot as plt # 绘图用列列表,顺序和自定义标签一一对应 marc = ['RT_norm', 'RT_user_norm', 'Metacritic_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Stars'] # 自定义图例标签,顺序和上述marc列表的列顺序完全一致 custom_labels = [ 'Rotten Tomatoes 标准化评分', 'Rotten Tomatoes 用户标准化评分', 'Metacritic 标准化评分', 'Metacritic 用户标准化评分', 'IMDB 标准化评分', 'Fandango 星级' ] # 绘图时接住返回的Axes对象 ax = df.head().plot.bar(x='FILM', y=marc, figsize=(10,8), grid=True) # 手动替换图例标签 ax.legend(custom_labels) plt.title('各平台电影评分对比') plt.ylabel('评分') plt.xlabel('电影') plt.show()
注意:自定义标签列表的顺序必须和marc列表的列顺序完全匹配,否则会出现图例和对应数据不匹配的问题
内容的提问来源于stack exchange,提问作者luisfer
相关产品推荐
相关产品推荐

