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

Power BI中Bacci's Gantt 2.0如何将“Today”居中显示在视口中?

Power BI中Bacci's Gantt 2.0如何将“Today”居中显示在视口中?

嘿,这个问题我刚好折腾过,给你一步步说怎么改Deneb里的Vega配置就行:

  • 首先打开你的Deneb可视化编辑界面,切到「代码」视图,先找signals部分。如果里面还没定义today信号,就添加上这段:
{
  "name": "today",
  "update": "utcNow()"
}

要是你的项目用的是本地时间而非UTC,把utcNow()改成now()就行,看你实际的时间设置来调整。

  • 接下来找view配置块(它和signals、scales是同级的,一般在代码顶部区域),修改或者添加initialize属性,设置x轴的平移量,让今天刚好居中:
"view": {
  "stroke": null,
  "initialize": {
    "translate": [{"signal": "(width / 2) - scale('x', today)"}, 0]
  }
}

这里的逻辑很简单:scale('x', today)会把今天的日期转换成时间轴上的像素位置,用视口宽度的一半减去这个像素值,就能让今天稳稳落在视口中间。

  • 保存配置后回到Power BI视图,你就能看到Gantt图默认以今天为中心显示了!

对了,要是你的Gantt 2.0配置里x轴的scale名字不是x(比如叫time之类的),记得把scale('x', today)里的x改成你实际的scale名称——去scales数组里找name字段就能看到。

如果你还希望今天居中的同时,能自动适配项目的时间跨度(比如项目时间很长时,不会只显示今天前后的一小段),可以试试进阶调整:
先在signals里添加项目时间范围的计算:

{
  "name": "minDate",
  "update": "data('你的数据集名称')[0].开始日期字段名"
},
{
  "name": "maxDate",
  "update": "data('你的数据集名称')[length(data('你的数据集名称'))-1].结束日期字段名"
},
{
  "name": "rangeHalf",
  "update": "max((maxDate - minDate)/2, (width / 2) / scale('x').bandwidth)"
}

然后把x轴domain改成[{"signal": "today - rangeHalf"}, {"signal": "today + rangeHalf"}],这样既能保证今天居中,又不会把项目的时间范围给裁掉。

备注:内容来源于stack exchange,提问作者John Golitsis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 14:09:39