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

用pandas和matplotlib按天分组绘制时间序列箱线图丢失X轴日期如何解决?

问题原因

  1. 第一种实现丢失X轴日期标签,是因为拼接分组数据时没有将分组对应的日期设置为DataFrame的列名,最终绘图时X轴只能读取默认的数值序列作为标签。
  2. 第二种实现出现跨月同日数据堆叠,是因为index.day仅提取了日期中的日数值,不同月份的相同日会被识别为同一类别。

最简实现方案

方案1:pandas自带绘图工具(代码量最少)

直接使用boxplot的by参数指定按天分组,无需手动拼接分组数据:

import pandas as pd
import matplotlib.pyplot as plt

df.boxplot(by=pd.Grouper(freq='D'), column='Temp', figsize=(20,5))
# 移除默认生成的冗余分组标题
plt.suptitle('')
# 可选:调整标签样式避免重叠
plt.xticks(rotation=45, ha='right')
plt.xlabel('日期')
plt.ylabel('温度')
plt.show()

方案2:Seaborn实现(样式更美观)

新增精确到天的日期列作为X轴维度,自动区分不同月份的日期:

import seaborn as sns
import matplotlib.pyplot as plt

# 生成精确到天的日期字符串,作为X轴分类依据
df['date'] = df.index.strftime('%Y-%m-%d')

plt.figure(figsize=(20,5))
sns.boxplot(x='date', y='Temp', data=df)
plt.xticks(rotation=45, ha='right')
plt.xlabel('日期')
plt.ylabel('温度')
plt.show()

两种方案都可以直接生成带正确日期标签的箱线图,不会出现跨月数据堆叠的问题,代码也更简洁易读。


内容的提问来源于stack exchange,提问作者Lleims

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:45:03