Power BI默认图表的数据标签缺乏装饰,使用DAX自定义图表可以突破这一限制,下图将数据标签放在了一个圆圈中,为条形图增加了一点设计感。
完整度量值如下,将度量值中的value替换为你模型的值,放入HTML Content正常显示,说明见注释。
代码语言:javascript复制圆形标签条形图 =
VAR ItemCount =
DISTINCTCOUNT ( 'Table'[品类名称] )
VAR MaxValue =
MAXX ( VALUES ( 'Table'[品类名称] ), [Value] )
VAR BarTable =
ADDCOLUMNS (
SUMMARIZE (
'Table',
'Table'[品类名称],
"Index", RANKX ( ALLSELECTED ( 'Table' ), [Value] )
),
"Rect",
//画条形
"<rect x='20' y='" & ( [Index] - 1 ) * 18 & "' width='" & 100 * [Value] / MaxValue - 6 & "' height='12' fill='"
& IF ( [Index] <= 3, "DarkCYan", "Tomato" ) & "'/>",
//减的6为圆的半径(含线条)
"Text",
//画类别标签
"<text x='19' y='" & ( [Index] - 1 ) * 18 8 & "' text-anchor='end' font-size='4.5' >" & [品类名称] & "</text>",
"Circle",
//画圆圈
"<circle cx='" & 20 100 * [Value] / MaxValue - 6 & "' cy='" & ( [Index] - 1 ) * 18 6 & "' r='5.5' fill='white' stroke='"
& IF ( [Index] <= 3, "DarkCYan", "Tomato" ) & "' stroke-width='1'/>",
"Label",
//画数据标签 公众号:wujunmin
"<text x='" & 20 100 * [Value] / MaxValue - 6 & "' y='" & ( [Index] - 1 ) * 18 7 & "' text-anchor='middle' font-size='4' >"
& ROUND ( [Value], 1 ) & "</text>"
)
VAR Bar =
CONCATENATEX ( BarTable, [Rect] & [Text] & [Circle] & [Label] )
VAR SVG = "<svg xmlns='http://www.w3.org/2000/svg' viewbox='0 0 120 " & 18 * ItemCount & "'>" & Bar & "</svg>"
RETURN
SVG
该图表是文本、矩形和圆圈的组合,矩形的颜色按照排名进行了区分。已经熟悉SVG Power BI应用的读者,其实可以按照自己想象,编织SVG图形到DAX,自由发挥。