分段雷达图(Sectional Radar Chart)是雷达的图的一种替代方案,比较适合分类数据,分类数量不宜太多。在Kevin Flerlage的网站中有详细原理和制作说明。
地址:https://www.flerlagetwins.com/2021/04/learn-to-build-this-sectional-radar.html
和雷达图一样,本质上还是圆型的一种变体。可以参考我前面的画圆系列文章,或者参照我的书《解构Tableau可视化原理》中相关文章,书中的方案应该更加简洁。由于Kevin Flerlage的解决方案并不是太符合我的计算习惯,所以本篇文章我将沿用我书中的关于画圆的计算逻辑。
原始数据是NBA球员的个人属性评分,一共5个属性,每个属性最低0分,最高6分。
要绘制分段雷达图,每一个评分等级都是由4个点绘制的长方形(圆心变形为三角形),6个评分等级就需要6*4=24个点来描述。那么数据源的每一行就需要扩充成24行,这个过程叫做data densification,需要使用辅助数据源。
将两个数据源通过关系或者join联接到一起。
新建一个整数型的参数:默认5
(或者{ FIXED : COUNTD([Attribute])}用以计算圆形中有几片扇叶,这里5个属性就有5个扇叶)
新建计算字段:
-
半径R:
IF [Point]=1 or [Point]=2 THEN [Segment]-1
ELSE [Segment]
END -
index:
if [Point]=2 or [Point]=3 THEN ([Attribute # ])
ELSE [Attribute # ]-1
END -
Color
IF [Attribute Value] >= [Segment] THEN 'COLOR'
ELSE 'DONT COLOR'
END
通常复杂的计算我会通过交叉变验证数据的准确性,虽然这里的计算都是行级别的,但是要验证一下。
如果数据没有问题,那么就可以尝试验证图形是否能画出来,如果能画出如下的简单矩形方阵,就说明计算准确。
后面就需要三角函数将矩形掰弯成圆形,也就是将每一个点的坐标转换成直角坐标系中圆上的坐标。
-
X:SIN(2*PI()*[index]/[参数 1])*[半径R]
-
Y:COS(2*PI()*[index]/[参数 1])*[半径R]
更改行列上的字段,就得到如下图形。
相比Kevin Flerlage的方案,我们区别在于计算不同,导致0度的起始位置不同,扇形的排列顺序也不同,所以也不需要原文中旋转角度的计算,但如果要完全和源方案一致,需要修改 [Attribute #]的顺序。实际应用中根据个人需要,在原始数据中排列好就可以不用修改。
- [Attribute #(改)]
CASE [Attribute #]
WHEN 2 THEN 1
WHEN 1 THEN 2
WHEN 5 THEN 3
WHEN 4 THEN 4
WHEN 3 THEN 5
END
然后修改index就好。
原文颜色还有个特殊设置Overall Average的颜色要区别开:
- Color by Team
IF [Attribute Value] >= [Segment] AND [Attribute] = 'Overall Average' THEN [Team] + ' Overall'
ELSEIF [Attribute Value] >= [Segment] THEN [Team]
ELSE 'DONT HIGHLIGHT'
END
最终,我们的结果就和原始方案一致了。
仪表板中的标签,需要自制图片完成,这里就不做介绍了。
网友评论