雷达图使用攻略(下)

嗨~工坊的小伙伴们大家好!
在昨天的推送——《雷达图使用攻略(上)》中,文末给大家留了一道思考题☟☟

思考题

现在该年级仅有5个班,我们可以写出5个度量值,来满足5个班成绩的对比,倘若该年级有50个班,或者500个班,甚至更多,我们又该如何实现不同的几个班级之间的对比呢?

即如何用雷达图在多个班级中挑选某几个班级进行比较。后台已经有几个小可爱留言了自己的解决方法,不知道其他的小粉丝儿怎么样了?
在班级成绩的案例中,雷达图只能支持科目为分类,成绩为轴上的值,如果需要进行不同班级之间的对比,就需要给每个班级,写一个属于自己班级的度量值,才能在雷达图中进行比较。如果在班级扩充至50甚至500个之后,挨个给每个班级写度量值就成了一件麻烦事儿,写好之后在展示上也不太友好,需要将500个度量值都拖拽至雷达图。

那么我们如何解决这个问题呢?

First

这种场景肯定不会同时将500个班级的成绩进行比较,这样根本无法有效的发现好或差的班级是哪几个,这类情景,我们肯定是有针对性的来比较几个班级的成绩。

Second

我们可以转换思维,之前的想法可能是我需要比较一班和二班的成绩之间存在的差异,而现在在这个案例上我们可以转化为比较总成绩第一的班级和总成绩第二的班级之间存在的差异,然后利用切片器,只选择一班和二班,那么两个班级中就会有一个为总成绩第一,另一个为总成绩第二(考虑平均成绩也可以)。这样我们只需要写出动态排名,排名第一的班级的成绩和排名第二的班级的成绩,三个度量值,就可以解决在500个班级中用雷达图进行两个班级成绩对比的问题了,如果需要同时展现更多班级,那么就再增加对应排名的度量值即可。

Finally

现在我们就将这个案例转化为求排名的问题了,这个排名是要在切片器所选定的范围内的排名。实现动态排名的公式如下:

动态排名 = RANKX(ALLSELECTED('班级'[班级]),[总成绩],,DESC)

在此给大家介绍ALLSELECTED函数,这个函数仅需一个字段,可以理解为被选定的所有值。上面的公式就可定义为,在选定的班级中,按照总成绩进行降序排名。

将班级,动态排名和总成绩这3个字段拖拽成表格,即可看到班级的排名情况。

file

可对班级字段进行切片,选择一班与五班,即可看到一班与五班的动态排名。

file

通过以上公式我们实现了,根据切片器切片,获取动态排名。得到排名之后,我们就要获得第一名的平均成绩和第二名的平均成绩。公式如下:

总成绩第一名的班级平均成绩 = 
CALCULATE([平均成绩],FILTER(SUMMARIZE('班级','班级'[班级],"动态排名列",[动态排名]),[动态排名列]=1))

以上公式在使用中套用虚拟表,用summarize公式得到班级的动态排名的虚拟表,虚拟表中包含班级一列,和其对应的动态排名一列,以此来获取排名第一的班级的平均成绩。

可对应写出排名第二的班级的成绩,只需让最后动态排名列等于2即可。

file

这样,仅通过三个度量值就可以比较任意两个班级的成绩了。
不过该解决办法存在几个问题,首先是从上图我们可以看出图例的问题,无法知道红线和绿线哪个是一班?哪个是五班?这个问题我们可以通过类似上面的公式,求出动态排名第一的班级和排名第二的班级,关掉原有图表中的图例,制作对应的动态图例,即可分辨。公式如下:

总成绩第一名的班级 = 
CALCULATE(VALUES('班级'[班级]),FILTER(SUMMARIZE('班级','班级'[班级],"动态排名列",[动态排名]),[动态排名列]=1))

file

插入一个对应颜色的圆形图像,再关掉卡片图的类别标签,即可完成排名第一的班级的动态图例。图例的问题成功解决(但是在图表单个放大时,该问题还是会暴露出来,不能解决)!
第二个问题就是如果在求排名时,有班级的排名相同,那可能会出现在返回班级和成绩时报错。
以上,如果你有更好的解决方式,欢迎踊跃留言哦~

告辞!



* PowerPivot工坊原创文章,转载请注明出处!


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。

file


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

Power Pivot工坊