如何在分组求最小卡路里的柱状图柱子下方同时显示类别与食物名
解决柱状图X轴同时显示食物类别与对应低卡食物名称的问题
你当前的代码仅提取了每个类别下的最低卡路里数值,丢失了对应的食物名称信息。要实现需求,需先获取每个类别中卡路里最低的完整行数据,再自定义X轴标签。
完整解决方案代码
import matplotlib.pyplot as plt # 获取每个Category中Calories最小的行数据 min_cal_rows = data.loc[data.groupby('Category')['Calories'].idxmin()] # 绘制柱状图,指定Y轴为卡路里数值 ax = min_cal_rows.plot.bar(y='Calories', figsize=(10, 6), legend=False) # 自定义X轴刻度标签:拼接类别名称与对应低卡食物名称,换行显示 ax.set_xticklabels([f"{cat}\n{item}" for cat, item in zip(min_cal_rows['Category'], min_cal_rows['Item'])]) # 设置图表标题与轴标签 ax.set_title('各食物类别最低卡路里食物热量') ax.set_ylabel('卡路里数值') ax.set_xlabel('食物类别与低卡食物') # 自动调整布局,避免标签被截断 plt.tight_layout() plt.show()
关键步骤说明
data.groupby('Category')['Calories'].idxmin():定位每个类别中卡路里值最小的行索引。data.loc[...]:通过索引提取完整行数据,保留Category、Item和Calories等关键信息。ax.set_xticklabels(...):将X轴刻度替换为「类别名称+食物名称」的组合,用\n换行保证标签可读性。
内容的提问来源于stack exchange,提问作者kwien37
相关产品推荐
相关产品推荐

