如何在Python中按字母顺序绘制带渐变色的nutrition_grade_fr标签?
解决方法:按字母排序标签并添加渐变色
关键改动说明
- 按字母顺序排列标签:先提取
nutrition_grade_fr的所有唯一类别,排序后通过hue_order参数传给sns.barplot,强制按字母顺序显示图例和分组 - 添加渐变色:使用
palette参数指定渐变风格的调色板,比如"viridis"(从蓝到黄的自然渐变),也可根据需求替换为"coolwarm"、"magma"等其他渐变系
修改后的完整代码
import seaborn as sns import matplotlib.pyplot as plt df = nutri_app # 提取并按字母排序nutrition_grade_fr的有效类别 sorted_grades = sorted(df["nutrition_grade_fr"].dropna().unique()) # 遍历变量绘制分组柱状图 for elem in ['energy_100g', 'sugars_100g','fat_100g','proteins_100g']: fig, ax = plt.subplots(figsize=(30,6)) # 传入排序后的标签顺序与渐变调色板 sns.barplot( x="pnns_group1", y=elem, hue="nutrition_grade_fr", data=df, hue_order=sorted_grades, palette="viridis" ) ax.set_title(f"nutriscore by categories related to {elem} quantity variable") plt.show()
自定义渐变扩展
如果需要更贴合类别的渐变配色,可以手动生成对应数量的渐变色彩:
# 根据标签数量生成均匀渐变的调色板 custom_palette = sns.color_palette("viridis", len(sorted_grades))
将上述custom_palette传入sns.barplot的palette参数即可实现更精准的渐变匹配。
内容的提问来源于stack exchange,提问作者yoopiyo
相关产品推荐
相关产品推荐

