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

如何用hvplot或Holoviews在Python中复现堆叠面积图?

问题:用hvplot/Holoviews复现集群-小时功率堆叠面积图

需求概述

需要生成11个集群的时序堆叠面积图,每个集群对应24小时的功率输出,按不同Tech类别堆叠展示。数据包含Cluster(11个集群)、Hr(0-23小时)、Tech、Power字段。

已尝试的代码及问题

堆叠面积图代码

dfCP_CCS.hvplot.area(x='Hr', y='Power', groupby=['Cluster', 'Tech'], 
stacked=True)

问题:生成的子图仅展示单个Tech的面积,无法实现同集群下多Tech的堆叠效果,不符合目标图表形态。

柱状图代码

dfCP_CCS.hvplot(kind='bar', x='Cluster', y='Power', by='Tech')

问题:生成的是按Cluster分组的Tech功率对比柱状图,并非目标的时序堆叠面积图。

解决建议

方案1:分面展示所有集群的堆叠面积图

通过分面操作,每个子图对应一个集群,展示该集群24小时内各Tech的功率堆叠:

import holoviews as hv
hv.extension('bokeh')

# 确保数据无重复的Cluster-Hr-Tech组合(如有重复先聚合)
# dfCP_CCS = dfCP_CCS.groupby(['Cluster','Hr','Tech'])['Power'].sum().reset_index()

dfCP_CCS.hvplot.area(
    x='Hr', 
    y='Power', 
    by='Tech', 
    stacked=True,
    width=300, height=200
).facet(
    row='Cluster', 
    sharex=True, sharey=True
).opts(
    hv.opts.Area(alpha=0.7),
    hv.opts.Layout(merge_tools=False)
)

方案2:交互式切换集群查看堆叠面积图

保留单个画布,通过下拉菜单切换不同集群,查看对应24小时的堆叠面积:

dfCP_CCS.hvplot.area(
    x='Hr', 
    y='Power', 
    groupby='Cluster', 
    by='Tech',  # by参数控制堆叠的类别
    stacked=True,
    width=600, height=400
).opts(
    hv.opts.Area(alpha=0.7)
)

关键注意点

  • 原代码错误在于同时对Cluster和Tech做groupby,导致每个子图仅显示单一Tech的面积,无法堆叠;by参数才是指定堆叠类别的正确方式。
  • 若数据存在重复的Cluster-Hr-Tech记录,需先对Power进行聚合(求和/均值等),避免绘图时数据异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:50:28