这是麦肯锡系列第三篇,前两篇如下
麦肯锡的华夫饼图如下所示,常用来显示百分比,下图是McKinsey Insights APP的示例:
Power BI模拟效果如下:
图表使用嵌套SVG矢量图的度量值生成,度量值如下,放入ImageByCloudScope视觉对象或者表格、矩阵可以正常显示。
麦肯锡_华夫饼图 =
VAR t =
GENERATESERIES ( 1, 10 ) //1-10的序列
VAR tPlus =
GENERATE ( SELECTCOLUMNS ( t, "Value1", [Value] ), t ) //笛卡尔集
VAR tPlusPlus =
ADDCOLUMNS ( tPlus, "Index", RANKX ( tPlus, [Value] + [Value1] / 100,, ASC ) ) //生成1-100的序号
VAR tWaffle =
ADDCOLUMNS (
tPlusPlus,
"circle",
"<circle cx='" & [Value] * 10 + 15 & "' cy='" & [Value1] * 10 + 15 & "' r='4' fill='"
& IF ( [Index] <= ROUND ( [业绩达成率] * 100, 0 ), "Black", "LightGrey" ) & "' />"
) //生成100个圆
VAR Chart =
"data:image/svg+xml;utf8," & "
<svg xmlns='http://www.w3.org/2000/svg' width='150' height='150'>" & "
<g transform='rotate(-90,75,75)'>"
& CONCATENATEX ( tWaffle, [circle] ) & "
</g>
<!-- 数据标签-->
<text x='70' y='20' font-size='15' text-anchor='middle' >"
& ROUND ( [业绩达成率] * 100, 0 ) & "</text>
<text x='70' y='148' font-size='15' text-anchor='middle' >"
& SELECTEDVALUE ( '业绩表'[店铺] ) & "</text>
</svg> "
RETURN
IF ( HASONEVALUE ( '业绩表'[店铺] ), Chart, BLANK () )
如果想要繁复一点,圆圈还可以加内容:
前期介绍过任意图案的华夫饼图,可以参考下文:
也介绍过如何在Excel实现:
后续还有麦肯锡系列的其他文章,敬请期待。