You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas和Matplotlib绘制日期为X轴的每日箱线图

按日期绘制每日PM2.5统计箱线图(仅用Pandas+Matplotlib)

问题背景

已通过Pandas预处理得到2022年每日PM2.5的统计数据(包含min、q1、median、q3、max等列),希望绘制箱线图,让X轴显示全年日期,每个日期对应一个箱线。当前仅能将统计列作为X轴展示,需调整数据选择方式实现需求。

解决方案

1. 构建箱线图所需数据集

Matplotlib的boxplot函数接受二维数组作为输入:每一行对应一个类别(此处为单个日期)的箱线数据,顺序需为[最小值, 下四分位数(q1), 中位数(median), 上四分位数(q3), 最大值]。直接从现有DataFrame中提取对应列即可:

# 提取每个日期的min、q1、median、q3、max,按顺序组成二维数组
box_data = df[['min', 'q1', 'median', 'q3', 'max']].values

2. 绘制箱线图并配置X轴

使用Matplotlib绘制箱线图,将X轴刻度设置为对应的日期,并调整显示格式避免重叠:

import matplotlib.pyplot as plt

# 创建画布,设置合适尺寸避免拥挤
fig, ax = plt.subplots(figsize=(18, 7))

# 绘制箱线图,patch_artist=True可自定义箱线填充颜色
ax.boxplot(box_data, vert=True, patch_artist=True)

# 设置X轴刻度为日期,格式化为"月-日"简化显示,旋转45度避免重叠
ax.set_xticklabels(df.index.strftime('%m-%d'), rotation=45, fontsize=8)

# 配置轴标签与标题
ax.set_xlabel('日期(2022年)', fontsize=10)
ax.set_ylabel('PM2.5浓度', fontsize=10)
ax.set_title('2022年每日PM2.5浓度分布箱线图', fontsize=12)

# 自动调整布局,防止标签被截断
plt.tight_layout()
plt.show()

说明

  • box_data的每一行对应一个日期的完整统计区间,boxplot会自动将其生成为单个箱线。
  • 通过df.index直接获取日期作为X轴刻度,配合strftime格式化后,X轴将按日期顺序展示全年的箱线。
  • 调整画布尺寸、刻度字体大小和旋转角度,可优化大量日期标签的显示效果。

内容的提问来源于stack exchange,提问作者Latex User 101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:47:48