求助:基于Deneb的Power BI三级任务层级甘特图定制及进度列移除
Deneb甘特图适配MS Project三级任务层级并移除进度列
需求说明
我使用Deneb插件加载David的甘特图模板,数据直接导出自MS Project,包含三级任务层级(对应数据中的Lvl字段),希望在Power BI可视化组件中展示该层级结构;同时需要暂时移除甘特图中的进度列(对应预期效果里红框标注的部分)。
数据片段
| Lvl | Unique ID | Task Name | Duration | Start | Finish | Predecessors |
|---|---|---|---|---|---|---|
| 0 | 1 | Program-wide | 515 days | Mon 11/03/24 | Fri 27/02/26 | |
| 6 | 253 | Project commencement workshop | 2 days | Tue 26/03/24 | Wed 27/03/24 | |
| 6 | 2 | Project set-up | 30 days | Mon 11/03/24 | Fri 19/04/24 | |
| 6 | 242 | Project Plans, including PMP, EMP, etc. | 30 days | Mon 11/03/24 | Fri 19/04/24 | |
| 6 | 3 | Program management | 515 days | Mon 11/03/24 | Fri 27/02/26 | |
| 0 | 9 | Project 1 | 477 days | Fri 5/04/24 | Tue 3/02/26 | |
| 3 | 28 | Preliminary Investigation | 156 days | Fri 5/04/24 | Mon 11/11/24 | |
| 6 | 25 | Start-up meeting | 0 days | Fri 5/04/24 | Fri 5/04/24 | 3SS+20 days |
| 6 | 160 | Receipt of information | 1 day | Fri 28/06/24 | Fri 28/06/24 | |
| 6 | 16 | Preliminary Site Inspection | 20 days | Mon 1/07/24 | Fri 26/07/24 | 9,8,291 |
| 6 | 30 | Sampling Analysis Plan | 20 days | Mon 1/07/24 | Fri 26/07/24 | 9,8,291 |
| 6 | 23 | Final deliverables | 0 days | Mon 14/10/24 | Mon 14/10/24 | 19FS+1 day |
| 6 | 63 | Information Session preparation | 10 days | Tue 15/10/24 | Mon 28/10/24 | 20 |
| 6 | 62 | Information Session | 0 days | Mon 28/10/24 | Mon 28/10/24 | 21 |
| 6 | 67 | Engagement Summary Report | 10 days | Tue 29/10/24 | Mon 11/11/24 | 22 |
| 3 | 29 | Detailed Investigation | 181 days | Tue 24/09/24 | Tue 3/06/25 | |
| 6 | 33 | Preparation | 25 days | Tue 24/09/24 | Mon 28/10/24 | 20FS-15 days |
| 6 | 34 | Field investigations | 20 days | Tue 29/10/24 | Mon 25/11/24 | 25,22 |
| 6 | 37 | Lab analysis | 5 days | Tue 26/11/24 | Mon 2/12/24 | 26 |
| 3 | 53 | Risk assessment | 181 days | Mon 3/03/25 | Tue 11/11/25 | |
| 6 | 61 | Final deliverables | 0 days | Tue 14/10/25 | Tue 14/10/25 | 57 |
| 6 | 64 | Information Session preparation | 10 days | Wed 15/10/25 | Tue 28/10/25 | 58 |
| 6 | 65 | Information Session | 0 days | Tue 28/10/25 | Tue 28/10/25 | 59 |
| 6 | 70 | Engagement Summary Report | 10 days | Wed 29/10/25 | Tue 11/11/25 | 60 |
| 0 | 215 | Project 2 | 491 days | Tue 16/04/24 | Tue 3/03/26 | |
| 3 | 267 | Preliminary Investigation | 170 days | Tue 16/04/24 | Mon 9/12/24 | |
| 6 | 307 | Start-up meeting | 0 days | Tue 16/04/24 | Tue 16/04/24 | 3SS+20 days |
| 6 | 161 | Receipt of information | 1 day | Fri 28/06/24 | Fri 28/06/24 | |
| 6 | 231 | Preliminary Site Inspection | 40 days | Mon 1/07/24 | Fri 23/08/24 | 76,77 |
| 6 | 244 | Sampling Analysis Plan | 40 days | Mon 1/07/24 | Fri 23/08/24 | 76,77 |
| 6 | 249 | Final deliverables | 7 days | Mon 9/09/24 | Tue 17/09/24 | 80 |
| 6 | 185 | Information Session preparation | 3 days | Wed 18/09/24 | Fri 20/09/24 | 81,82 |
| 6 | 250 | Information Session | 20 days | Mon 23/09/24 | Fri 18/10/24 | 83 |
| 6 | 227 | Engagement Summary Report | 10 days | Mon 21/10/24 | Fri 1/11/24 | 84 |
| 6 | 236 | Detailed Investigation | 10 days | Mon 21/10/24 | Fri 1/11/24 | 84 |
| 6 | 281 | Preparation | 5 days | Mon 4/11/24 | Fri 8/11/24 | 85,86 |
| 6 | 218 | Field investigations | 0 days | Mon 11/11/24 | Mon 11/11/24 | 87FS+1 day |
| 6 | 269 | Lab analysis | 10 days | Tue 12/11/24 | Mon 25/11/24 | 88 |
| 6 | 293 | Risk assessment | 0 days | Mon 25/11/24 | Mon 25/11/24 | 89 |
| 3 | 333 | Final deliverables | 181 days | Tue 22/10/24 | Tue 1/07/25 | |
| 6 | 219 | Information Session preparation | 25 days | Tue 22/10/24 | Mon 25/11/24 | 88FS-15 days |
| 6 | 270 | Information Session | 20 days | Tue 26/11/24 | Mon 23/12/24 | 90,93 |
| 6 | 226 | Engagement Summary Report | 5 days | Tue 24/12/24 | Mon 30/12/24 | 94 |
预期效果

具体修改方案
1. 移除进度列
打开Deneb的Vega-Lite代码,找到所有与进度相关的图层(通常是一个mark: rect的对象,绑定了progress字段),直接删除整个图层块。同时检查图表的width配置,适当调整以避免空白区域。
2. 实现三级任务层级缩进
找到绘制任务名称的文本标记部分,修改其横向偏移量,根据Lvl字段值设置不同缩进:
{ "mark": { "type": "text", "align": "left", "baseline": "middle", // 根据Lvl值设置缩进,0级不缩进,3级缩进20px,6级缩进40px "dx": {"expr": "datum.Lvl === 0 ? 0 : datum.Lvl === 3 ? 20 : 40"} }, "encoding": { "y": {"field": "Task Name", "type": "ordinal", "axis": null}, "text": {"field": "Task Name", "type": "nominal"} } }
如果你的Lvl字段值对应层级不同,可自行调整偏移像素数值。
内容的提问来源于stack exchange,提问作者uk1
相关产品推荐
相关产品推荐

