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

如何在Excel或Python Holoviews中制作可变底柱形图?

可变底柱形图实现方案

Excel 实现说明

Excel原生图表无直接支持可变宽度柱形的功能,无法完全脱离辅助表实现。但可以优化辅助表设计来满足你的需求:

  • 辅助表需包含字段:周期起始月份(数值化,如1代表1月)、周期时长(月数)、对应数值、柱形中心位置(起始月份 + 时长/2)。
  • 用XY散点图+误差线模拟可变宽度柱形:将中心位置作为X轴坐标,X方向误差设为时长的一半,Y轴绑定数值,把误差线样式改为填充柱形;
  • 中心标注:计算柱形中心坐标后,添加自定义数据标签,引用对应月份文本,调整标签位置至柱形中心。

Holoviews(Python)实现方案

Holoviews可灵活自定义柱形尺寸与标注位置,无需复杂辅助表,以下是可直接运行的示例:

1. 准备数据

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

# 模拟你的周期数据:起始月份、时长、对应数值、最后一个月份
data = pd.DataFrame({
    'start_month': [1, 3, 6, 10],
    'duration': [2, 3, 4, 2],
    'value': [15, 22, 18, 25],
    'last_month': ['2月', '5月', '9月', '11月']
})

# 计算柱形边界与中心坐标
data['x0'] = data['start_month'] - 0.5
data['x1'] = data['start_month'] + data['duration'] - 0.5
data['y0'] = 0
data['y1'] = data['value']
data['center_x'] = (data['x0'] + data['x1']) / 2
data['center_y'] = data['y1'] / 2

2. 生成图表

# 创建可变宽度柱形
bars = hv.Rectangles(data, ['x0', 'x1', 'y0', 'y1']).opts(
    color='#4a90e2', alpha=0.8,
    xlabel='月份', ylabel='数值',
    title='可变底柱形图'
)

# 添加中心月份标注
labels = hv.Labels(data, ['center_x', 'center_y'], 'last_month').opts(
    text_color='white', text_font_size='12pt'
)

# 组合并渲染图表
bars * labels

运行后会生成符合要求的图表:柱形宽度对应周期时长、高度匹配数值,且每个柱形中心标注周期最后一个月份,可按需调整颜色、字体等样式参数。

内容的提问来源于stack exchange,提问作者Dario de Judicibus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:25:14