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

如何用Seaborn绘制按半小时间隔分组的箱线图

解决方案:Seaborn绘制按半小时间隔分组的箱线图

问题分析

  • 直接用时间索引作为x参数时,Seaborn无法对连续唯一的时间戳自动分组,导致生成空白图。
  • 你用groupby时按分钟维度(%H:%M)分组,不符合半小时分组需求,且原生boxplot方法难以结合Seaborn的配色逻辑。

实现步骤

  1. 生成半小时分组列:利用Pandas时间处理能力,将每个时间戳向下取整到最近的半小时起始点,创建用于分组的新字段。
  2. Seaborn绘制箱线图:以分组后的时间列为x,目标数据列为y,通过hue参数指定Y列作为颜色区分依据。

完整代码示例

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 假设数据框df的索引已转为datetime格式
# 第一步:创建半小时分组列
df['half_hour_interval'] = df.index.floor('30min')

# 第二步:绘制箱线图
fig, ax = plt.subplots(figsize=(20, 8))
sns.boxplot(
    data=df,
    x='half_hour_interval',
    y='X',
    hue='Y',  # 用Y列区分箱线颜色
    ax=ax
)

# 优化X轴标签显示
ax.tick_params(axis='x', rotation=45)
plt.tight_layout()
plt.show()

关键说明

  • index.floor('30min'):自动将时间戳归到对应半小时的起始点,比如2024-04-03 10:10:10会被分到2024-04-03 10:00:00,10:40:00会被分到10:30:00,精准实现半小时分组。
  • hue='Y':自动为Y列的不同取值分配差异化颜色,满足你用Y列区分箱线的需求。
  • 若Y列为连续值,建议先对其做离散化处理(如分箱),否则颜色区分会失去实际意义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:01:02