如何在Power BI的Deneb条形图中基于DAX度量值设置条件格式?
解决Deneb条形图基于度量值设置颜色的问题
问题原因
你代码里的颜色判断表达式错误地将度量值Measure1和阈值200用单引号包裹,导致Vega-Lite把它们当作字符串比较。字符串的比较逻辑是按字符顺序,'Measure1'的首字母M在ASCII码里远大于'200'的首字符2,所以所有条形都会判定为红色。
修复方案
方案1:修正mark中的fill表达式
去掉Measure1的单引号(让它识别为字段),同时去掉200的单引号(让它识别为数值),并且用datum.前缀引用数据集字段(Vega-Lite表达式的标准写法),修改后的代码如下:
{ "title": {"text": "Simple Bar chart - expression", "fontSize": 14, "anchor": "start", "align": "left"}, "data": {"name": "dataset"}, "mark": {"type": "bar", "fill":{"expr": "datum.Measure1 > 200 ? 'red':'green'"}}, "encoding": { "y": { "field": "Site Name", "type": "nominal", "axis": {"title": null}, "sort": {"field": "Measure1", "order": "descending"} }, "x": {"field": "Measure1", "type": "quantitative"} } }
方案2:使用encoding的color通道(推荐)
更符合Vega-Lite的设计规范,将颜色逻辑放在encoding模块中,代码可读性更强:
{ "title": {"text": "Simple Bar chart - expression", "fontSize": 14, "anchor": "start", "align": "left"}, "data": {"name": "dataset"}, "mark": {"type": "bar"}, "encoding": { "y": { "field": "Site Name", "type": "nominal", "axis": {"title": null}, "sort": {"field": "Measure1", "order": "descending"} }, "x": {"field": "Measure1", "type": "quantitative"}, "color": { "condition": {"test": "datum.Measure1 > 200", "value": "red"}, "value": "green" } } }
内容的提问来源于stack exchange,提问作者Davide Di Franco
相关产品推荐
相关产品推荐

