上文《Power BI 宇宙系列之土星篇》介绍了对土星环的可视化模拟,本节放眼到整个太阳系。
首先聚焦太阳,太阳散发着光芒照耀着我们。通过模拟太阳的光线可以制作环状的条形图进行数据排名:
图表使用30多行度量值借助SVG矢量图生成(可参考:Power BI SVG制图入门知识),太阳使用的是SVG的circle元素,光线(条形图)为rect元素,数据标签为text元素。完整度量值如下:
SVG.太阳 =
--微信公众号、B站、知乎:wujunmin
VAR MaxValue =
MAXX ( ALLSELECTED ([维度列] ), [KPI] )
VAR n =
COUNTROWS ( 维度表 )
VAR IndexTable =
ADDCOLUMNS ( 维度表, "索引", 排名度量值 )
VAR Height_Total = 100 / n
VAR Height_Rect = Height_Total * 0.15
VAR ChartTable =
ADDCOLUMNS (
IndexTable,
"Rect",
"<g id='wujunmin" & [索引] & "' transform='rotate(" & 360 * ( [索引] - 1 ) / n - 90 & ", 50, 50)'>
<rect rx='" & Height_Rect / 2 & "'
x='55' y='" & 50 - Height_Rect / 2 & "'
width='" & 45 * [KPI] / MaxValue & "'
height='" & Height_Rect & "'
fill='gold'
/>
<text
x='" & 55 + 45 * [KPI] / MaxValue &"'
y='" & 50 - Height_Rect & "'
text-anchor='end' font-size='2'
fill='white'>" &
[维度列] & " " &
FORMAT ( [KPI], "#,#" ) & "
</text>
</g>"
)
RETURN
"data:image/svg+xml;utf8,
<svg xmlns='http://www.w3.org/2000/svg' height='100' width='100'>" &
CONCATENATEX ( ChartTable, [Rect] ) & "
<circle cx='50' cy='50' r='7' fill='gold'/>
</svg>"
把以上度量值放入新卡片图视觉对象的图像URL进行展示,在网上找一张星空背景图填充可以有更好的氛围。
现在把目光放远到太阳系,太阳系的特点是八颗行星(我小时候还是九颗)环绕太阳公转,行星和太阳的距离各有不同。
这个模式非常适合用于排名,下图正好是八个城市的排名(实际应用时可以任意个):
底层原理和太阳条形图一致,细节调整的地方有:
如果想要更加华丽,不妨让太阳或者太阳系转起来