如何用Matplotlib绘制Excel中2020年1月1日三人的体重柱状图
嗨,这个需求很容易实现,我来给你一步步拆解,保证你能快速画出想要的体重对比柱状图!
实现步骤
第一步:安装必要依赖
首先得确保你装了处理Excel和绘图的工具库,打开终端输入以下命令:
pip install pandas matplotlib openpyxl
(openpyxl是用来读取.xlsx格式Excel的,现在主流Excel都用这个格式啦)
第二步:根据你的Excel结构选择对应代码
我整理了两种常见的Excel数据结构,你对照自己的文件选就行:
情况一:Excel列对应个体,行对应日期
比如你的表格长这样:
| 日期 | 个体A | 个体B | 个体C |
|---|---|---|---|
| 2020-01-01 | 65 | 72 | 58 |
| ... | ... | ... | ... |
完整代码:
import pandas as pd import matplotlib.pyplot as plt # 1. 读取Excel文件 df = pd.read_excel('weight_data.xlsx', sheet_name='Sheet1', engine='openpyxl') # 2. 把日期列转换成标准日期格式,方便筛选 df['日期'] = pd.to_datetime(df['日期']) # 3. 筛选2020年1月1日的数据 target_date = pd.to_datetime('2020-01-01') selected_data = df[df['日期'] == target_date] # 4. 提取个体名称和对应的体重 individuals = ['个体A', '个体B', '个体C'] # 这里换成你Excel里的实际列名 weights = selected_data[individuals].values.flatten() # 5. 绘制柱状图 plt.style.use('seaborn-v0_8') # 用个好看的风格,不想用可以删掉这行 plt.bar(individuals, weights, color=['#FF6B6B', '#4ECDC4', '#45B7D1']) # 添加标题和坐标轴标签,用中文也完全没问题 plt.title('2020年1月1日三位个体体重对比', fontsize=14) plt.xlabel('个体名称', fontsize=12) plt.ylabel('体重(kg)', fontsize=12) # 在每个柱子上方显示具体体重数值,更直观 for i, weight in enumerate(weights): plt.text(i, weight + 0.5, str(weight), ha='center', fontsize=10) # 调整布局,防止标签被截断 plt.tight_layout() # 显示图表 plt.show() # 如果需要保存图片到本地,取消下面这行注释就行 # plt.savefig('体重对比图.png', dpi=300)
情况二:Excel每行是一条记录(日期、姓名、体重)
比如你的表格长这样:
| 日期 | 姓名 | 体重 |
|---|---|---|
| 2020-01-01 | 个体A | 65 |
| 2020-01-01 | 个体B | 72 |
| 2020-01-01 | 个体C | 58 |
| ... | ... | ... |
完整代码:
import pandas as pd import matplotlib.pyplot as plt # 1. 读取Excel文件 df = pd.read_excel('weight_data.xlsx', sheet_name='Sheet1', engine='openpyxl') # 2. 转换日期格式 df['日期'] = pd.to_datetime(df['日期']) # 3. 筛选目标日期的数据 target_date = pd.to_datetime('2020-01-01') selected_data = df[df['日期'] == target_date] # 4. 提取姓名和体重 individuals = selected_data['姓名'].tolist() weights = selected_data['体重'].tolist() # 5. 绘图部分和情况一完全一样 plt.style.use('seaborn-v0_8') plt.bar(individuals, weights, color=['#FF6B6B', '#4ECDC4', '#45B7D1']) plt.title('2020年1月1日三位个体体重对比', fontsize=14) plt.xlabel('个体名称', fontsize=12) plt.ylabel('体重(kg)', fontsize=12) for i, weight in enumerate(weights): plt.text(i, weight + 0.5, str(weight), ha='center', fontsize=10) plt.tight_layout() plt.show()
一些小提示
- 如果你的Excel日期格式不是
YYYY-MM-DD,比如是2020/01/01,可以在转换日期时指定格式:df['日期'] = pd.to_datetime(df['日期'], format='%Y/%m/%d') - 要是运行时提示找不到文件,要么把Excel和Python脚本放在同一个文件夹,要么写完整的文件路径(比如
C:/Users/你的用户名/Documents/weight_data.xlsx) - 柱子颜色、字体大小这些都可以根据自己的喜好随便改,比如把
color换成你喜欢的RGB值或者颜色名称
内容的提问来源于stack exchange,提问作者pandashugger
相关产品推荐
相关产品推荐

