Power BI中无法通过数据集Measure设置Vega图表标题的问题
Power BI中Vega图表无法通过Measure动态设置标题
我正在将Vega规范移植到Power BI中,tooltip等组件已成功使用格式化值,但始终无法通过signal或其他方式,利用数据集中的ChartTitle度量值设置图表标题。所有错误均提示预期传入字符串却传入了对象,还出现过JavaScript经典的[object Object]显示。
除直接设置固定文本值(如"bro just work")外,我尝试过以下方法,均未生效:
- 在signals部分定义读取ChartTitle的信号
- 使用aggregate转换取最大值来定义信号
完整Vega规范
{ "$schema": "https://vega.github.io/schema/vega/v5.json", "description": "Overlapping bar chart showing monthly actual vs budget values for 2024.", "width": 550, "height": {"signal": "chartHeight"}, "padding": 5, "title": { "text":{ "signal": "datum['ChartTitle']" } }, "signals": [ { "name": "maxY4", "update": "max(actualExtent[1], budgetExtent[1])*1.4" }, { "name": "maxY1", "update": "max(actualExtent[1], budgetExtent[1])*1.3" }, { "name": "maxY2", "update": "max(actualExtent[1], budgetExtent[1])*1.2" }, { "name": "maxY3", "update": "max(actualExtent[1], budgetExtent[1])*1.1" }, { "name": "bluebox", "update": "((max(actualExtent[1], budgetExtent[1])*1.36))" }, { "name": "greybox", "update": "(max(actualExtent[1], budgetExtent[1])*1.26)" }, { "name": "chartHeight", "update": 200 } ], "data": [ { "name": "dataset", "transform": [ { "type": "formula", "expr": "datum['Date']", "as": "parsedDate" }, { "type": "formula", "expr": "datum['variance']>=0 ?1:0", "as": "isgreen" }, { "type": "extent", "field": "Actual", "signal": "actualExtent" }, { "type": "extent", "field": "Budget", "signal": "budgetExtent" } ] }, { "name": "headers", "values": [ {"id": 1, "val": "Month"}, {"id": 2, "val": "Actual"}, {"id": 3, "val": "Budget"}, {"id": 4, "val": "Variance %"} ] } ], "scales": [ { "name": "x", "type": "time", "domain": { "data": "dataset", "field": "parsedDate" }, "range": "width" }, { "name": "y", "type": "linear", "domain": [ 0, {"signal": "maxY3"} ], "range": "height", "nice": true } ], "axes": [ { "orient": "bottom", "scale": "x", "format": "", "title": "", "ticks": false, "labelAlign": "center", "tickOffset": 20 }, { "orient": "left", "scale": "y", "title": "", "domain": false, "labels": false, "grid": false, "ticks": false } ], "marks": [ { "type": "rect", "from": {"data": "dataset"}, "encode": { "enter": { "x": { "scale": "x", "field": "parsedDate", "offset": 0 }, "width": {"value": 30}, "y": { "scale": "y", "field": "Budget" }, "y2": { "scale": "y", "value": 0 }, "fill": {"value": "grey"}, "tooltip": { "signal": "{'Date': timeFormat(datum.parsedDate, '%Y-%m'), 'Actual': datum['Actual__formatted'], 'Budget': datum['Budget__formatted'], 'Variance %': datum['variancepct__formatted']}" } } } }, { "type": "rect", "from": {"data": "dataset"}, "encode": { "enter": { "x": { "scale": "x", "field": "parsedDate", "offset": 15 }, "width": {"value": 30}, "y": { "scale": "y", "field": "Actual" }, "y2": { "scale": "y", "value": 0 }, "fill": {"value": "lightblue"}, "tooltip": { "signal": "{'Date': timeFormat(datum.parsedDate, '%Y-%m'), 'Actual': datum['Actual__formatted'], 'Budget': datum['Budget__formatted'], 'Variance %': datum['variancepct__formatted']}" } } } }, { "type": "text", "from": {"data": "dataset"}, "encode": { "enter": { "x": { "scale": "x", "field": "parsedDate", "offset": 20 }, "y": { "scale": "y", "signal": "maxY1", "offset": 0 }, "text": { "signal": "datum['Actual__formatted']" }, "fontSize": {"value": 12}, "fill": {"value": "black"}, "align": {"value": "center"} } } }, { "type": "text", "from": {"data": "dataset"}, "encode": { "enter": { "x": { "scale": "x", "field": "parsedDate", "offset": 20 }, "y": { "scale": "y", "signal": "maxY2", "offset": 0 }, "text": { "signal": "datum['Budget__formatted']" }, "fontSize": {"value": 12}, "fill": {"value": "black"}, "align": {"value": "center"} } } }, { "type": "text", "from": {"data": "dataset"}, "encode": { "enter": { "x": { "scale": "x", "field": "parsedDate", "offset": 20 }, "y": { "scale": "y", "signal": "maxY3", "offset": 0 }, "text": { "signal": "datum['variancepct__formatted']" }, "fontSize": {"value": 12}, "fill": { "signal": "datum.isgreen==1?'green':'red'" }, "align": {"value": "center"} } } }, { "type": "text", "from": {"data": "dataset"}, "encode": { "enter": { "x": { "scale": "x", "field": "parsedDate", "offset": 20 }, "y": { "scale": "y", "signal": "maxY4", "offset": 0 }, "text": { "signal": "[timeFormat(datum.parsedDate, '%b')]" }, "fontSize": {"value": 12}, "fontWeight": { "value": "bold" }, "fill": {"value": "black"}, "align": {"value": "center"} } } }, { "type": "rect", "encode": { "enter": { "x": {"value": -70}, "y": { "scale": "y", "signal": "bluebox" }, "width": {"value": 12}, "height": {"value": 12}, "fill": {"value": "lightblue"} } } }, { "type": "rect", "encode": { "enter": { "x": {"value": -70}, "y": { "scale": "y", "signal": "greybox" }, "width": {"value": 12}, "height": {"value": 12}, "fill": {"value": "grey"} } } }, { "type": "text", "name": "aa", "from": {"data": "headers"}, "encode": { "update": { "x": {"value": -10}, "y": { "scale": "y", "signal": "datum.id == 1?maxY4:datum.id == 2?maxY1:datum.id == 3?maxY2:maxY3" }, "text": {"field": "val"}, "fontSize": {"value": 12}, "fontWeight": { "value": "bold" }, "fill": {"value": "black"}, "align": {"value": "right"} } } } ] }
Power BI中ChartTitle度量值定义截图

内容的提问来源于stack exchange,提问作者Richard Davison
相关产品推荐
相关产品推荐

