美文网首页
用Tableau画分段雷达图

用Tableau画分段雷达图

作者: 扫地sir | 来源:发表于2024-08-29 16:42 被阅读0次

    分段雷达图(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

    最终,我们的结果就和原始方案一致了。

    仪表板中的标签,需要自制图片完成,这里就不做介绍了。

    相关文章

      网友评论

          本文标题:用Tableau画分段雷达图

          本文链接:https://www.haomeiwen.com/subject/rvuxljtx.html