Power BI数据标签这么装饰

2022-05-19 08:46:24 浏览数 (1)

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,自由发挥。

svg

0 人点赞