如何用Pandas修改柱状图X轴标签为「分类:低热量菜品名」格式
解决方案
你可以通过获取绘图的轴对象,自定义X轴标签内容来实现需求。核心是利用筛选出的LowestCalMeals数据,将Category和Item字段拼接成目标格式的标签,再替换原有X轴标签。
修改后的完整代码如下:
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 上传文件 from google.colab import files uploaded = files.upload() # 读取数据:移除parse_dates=True(Item列不是日期格式),取消index_col避免索引混淆 data = pd.read_csv("/content/example1.csv") # 找出每个分类下热量最低的菜品 LowestCal = data.groupby('Category')['Calories'].idxmin() LowestCalMeals = data.loc[LowestCal] # 绘图并获取轴对象 ax = LowestCalMeals.plot.bar(x='Category', y='Calories', rot=90) # 构造自定义X轴标签:分类名称:对应菜品名称 custom_labels = [f"{cat}: {item}" for cat, item in zip(LowestCalMeals['Category'], LowestCalMeals['Item'])] # 替换原有X轴标签 ax.set_xticklabels(custom_labels, rotation=90) plt.xlabel('分类与最低热量菜品') plt.show() # 测试输出 ItemList = LowestCal.tolist() print(ItemList)
关键步骤说明:
- 获取轴对象:调用
plot.bar()时将返回值赋值给ax,方便直接对绘图轴进行自定义操作。 - 拼接自定义标签:通过列表推导式,把每个分类的名称和对应最低热量菜品名称拼接成你需要的格式。
- 替换标签:用
ax.set_xticklabels()替换原有X轴标签,保留rotation=90确保标签垂直显示不重叠。
另外,原代码中parse_dates=True属于多余设置(Item列并非日期类型),建议移除避免潜在问题;如果不需要将Item设为索引,取消index_col=2会让后续数据操作更直观。
内容的提问来源于stack exchange,提问作者JB Veenstra
相关产品推荐
相关产品推荐

