作为想入行数据分析的萌新,我也是查了一下,发现教程基本都是比较简要的,要不只是扔一堆复杂的公式,要不就是简单几步跳过了(当然也有简单的插图片等方式),并没有一个能让萌新秒懂的,于是自己下了一个案例之后,开始了仿制,并将原有的复杂公式和多个辅助图,精简为清爽简单的公式一次成型,花了这么多时间做这个,也算是呆在家找不到工作的消遣吧,顺便看看能不能给其他萌新提供帮助。
【PS】希望有数据分析大神看到,能求教一下数据分析

数据说明

原图

java 雷达图生成 雷达图在线生成_坐标轴


原作品的链接:https://public.tableau.com/profile/jiangbin#!/vizhome/Radardiagramexample/sheet0?publish=yes

数据类型

序号

字段名称

备注

1

姓名


2

年龄


3

俱乐部


4

国籍


5

身高


6

位置


7

总评


8

能力

分为6类

9

数值

0-100


分为两个版本详解讲解所有过程与思路
有基础的,请直接跳至最下方【极简清爽版】 上面是给纯萌新的【超详解动图版】,如果看完超详解动图还有疑问,可以看【超超超详解思路】

超详解动图版(纯萌新看这里)

绘制蛛网底图

java 雷达图生成 雷达图在线生成_字段_02

辅助表格

萌新建议用辅助表格,清晰简单。

  • 首先观察雷达图发现,要分为6个维度及4层蛛网
  • 创建一列
    雷达层级=0,1,2,3,4 (原点也是要画的,所以要从0开始)
  • 创建一列
    角度=0,60,120,180,240,300,360 (最后0和360重合,为了最后与原点连成线)
  • 通过两列笛卡尔积,最终辅助表格如下
    (随意使用什么方式作出如下表格,都很容易吧)

雷达四分位

角度

0

0

0

60

0

120

0

180

0

240

0

300

0

360

1

0

1

60

1

120

1

180

1

240

1

300

1

360

2

0

2

60

2

120

2

180

2

240

2

300

2

360

3

0

3

60

3

120

3

180

3

240

3

300

3

360

4

0

4

60

4

120

4

180

4

240

4

300

4

360

完成后,将表格导入Tableau

新增辅助用的计算字段

  1. 新建计算字段弧度(因为Tableau中的三角函数是用弧度计算的,这里直接套用弧度公式)
    弧度=[角度]*PI()/180
  2. java 雷达图生成 雷达图在线生成_数据_03

  3. 新建字段半径(能力值的上限是100,这里有4层,100/4=25,所以这里用层级乘25,结果为每层的半径)
    半径=[雷达层级]*25

java 雷达图生成 雷达图在线生成_数据_04

  1. 新增字段X,Y(这里就是直接套用的公式了,不懂的可以搜极坐标与直角坐标的转换)
    X=[半径]*cos([弧度])Y=[半径]*sin(弧度)
  2. java 雷达图生成 雷达图在线生成_坐标轴_05


拖出蛛网图

  1. X,Y拖至行,列,重复两次(只单独复制X和Y也可以,都复制是为了理解得更清爽)
    (一个坐标轴画圈层,另一个画中间的轴,按Ctrl可直接复制,拖两次也不复杂)
  2. 分别点第二个X,Y的右方角标,选择双轴(类似于Excel的主次坐标轴,实现两个图形的叠加)

到这一步,坐标轴部分已经彻底完成了,只要依据坐标点,绘制两个图形即可,步骤是不是有点过于详细了
哈哈,下面就要开始快速绘图了!_

  1. 角度,雷达层级拖至维度
  2. 标记处,先将自动改为线,再将维度中的角度雷达层级分别拖至详细信息路径
    (可以看到我的界面里,标记那里,我的默认选在了总和(X)(2),如果不是也没关系,点一下就行了,这里顺序不重要,我们有两个图,两个图是交错的)
  3. java 雷达图生成 雷达图在线生成_java 雷达图生成_06

  4. 完成这一步,是不是感觉已经要大功告成了,想要的图形被拖出来了!
  5. 点选总和(X),接下来与上面相同,只是顺序换一换,即可完成雷达图的底图。
  6. java 雷达图生成 雷达图在线生成_字段_07

放开鼠标的瞬间是不是爽爆了,终于出现了这个感人的蛛网,而且制作过程还如此清爽,当然,如果再美化一下就更清爽了


  1. 隐藏所有的标题,鼠标右击坐标轴和标题,去掉勾选显示标题,或点选隐藏标题
  2. 去除网格线,零值线,分隔线,右键点击图表,选择设置格式
  3. 设置填充,默认的填充通常是白色,会遮挡其他图形
  4. 标记区域,点击大小,即可更改线条粗细

到这里终于将蛛网图全部完成了,虽然看着挺多的,其实熟练起来很快,而且很多步骤可以省略,比如新建的那些计算字段,直接新建X和Y写公式就可以了,而且这公式估计是你目前能看到的教程里,最最最清爽的吧!


雷达图数据层

看了上面超超超超级清爽的底图步骤后,想必对数据层的制作也会有自己的思路吧,底图的半径是固定值,而数据的数据层的半径,自然就是数据的值了。

  1. 新增计算字段角度:(跟上面一样的角度,不过这里要按能力作为维度来设定角度)
CASE [能力]
WHEN "传球" THEN 0
WHEN "射门" THEN 60
WHEN "盘带" THEN 120
WHEN "身体" THEN 180
WHEN "速度" THEN 240
WHEN "防守" THEN 300
END

java 雷达图生成 雷达图在线生成_java 雷达图生成_08

  1. 新增字段X,Y(和前面底图一样的公式,只是将半径换成了**[数值]**)
    X[数值]*cos([角度]*180/PI())Y[数值]*sin([角度]*180/PI())
  2. X,Y拖至行,列
  3. 标记改为多边形(这里就是跟上面底图的区别了,蛛网图是线,而数值是要通过多边形显示)
  4. 姓名拖至颜色(不同颜色分类人物)
  5. 角度拖至路径(不同角度的去连线形成多边形)
  6. 能力拖至详细信息(按能力作为维度区分不同值)
  7. 能力拖至标签(由于多边形不能直接添加标签,所以叠加一下其他图即可,散点图等其他图形都是可以直接添加标签的,然后将颜色的不透明度设为0=完全透明,叠加的图就消失了)
  8. 最后添加一个筛选器就好了
  9. 到这里图形就出来了,再按需求美化一下即可。

java 雷达图生成 雷达图在线生成_数据_09


超详细版思路(已经理解的可以直接跳过)

由于发这个贴的目的是从纯萌新角度出发,所以力求思路清晰完整,虽然我也是萌新,但我认为思路比看一些演示重要,下面归纳上面的操作思路,
【注意】这一款注意侧重于详细的思路,帮助还有不理解的萌新理解整个过程,因为上面已经有超详细步骤加动图了,所以下面就只文字叙述,不适应长文阅读的,顺便加强一下阅读能力吧。哈哈~

  • 目标是雷达图,首先要考虑图形的叠加,固定的背景图与可变的数据图,至少两个图层
  • 制作图形的时候,Tableau是支持散点图和线图的切换,也就是只要画出对应的散点图
  • 进一步的可以思考,画散点图的时候,是用直角坐标系描述点的位置的,因此要转换为极坐标系
  • 假设是连极坐标系也不太懂的,可以自己尝试简单推一下公式,画一个坐标轴,画一个直角三角形用中学知识就可以进行推到了,重点就是三角函数
  • 在极坐标系下,是以半径和角度来描述坐标,而不是X,Y,同时,数学里X,Y转换到极坐标系的公式为X=R·cosθ,Y=R·sinθ,雷达图的半径就是数据大小,不用求,因此只需要得到角度即可
  • 角度其实可以很简单的通过 360/雷达图维度数量,计算得知,自己创建一列就行了
  • 然后打开公式输入,tableau是有函数提示功能的,可以看到上面写到以弧度计量,因此需要将我们算出来的角度转换为弧度,这里就用到弧度与角度的转换公式弧度=角度*π/180,这个公式也很好记,π=180°,所以右边其实就是乘1,角度不变,只是从角度写法变成了小数(即弧度制),因为π是用小数表示的,这里用法有点像很多公式里,*100%一样,只是把格式变动一下。
  • 到这里就通过两次公式,X,Y计算需要的半径与弧度,直接在坐标系中画出对应三点图即可,其实整个过程推到一遍后挺简单的,主要是为了思路讲的够详细,所以写了很多字,实际操作中,半径已知,X,Y套一个公式取到,两步搞定。
  • 有对应的X,Y后,我们剩下的工作就是画散点图了,上面我们已经有了角度,360/维度,得到(0,60,120,180,240,300)或(60,120,180,240,300,360),画线图的时候,如果0/360只有一个的话,是不能连在一起的,如到300°就停了,因此要加一个角度,(0,60,120,180,240,300,360)
  • 接下来就思考半径了,如本例中蛛网设定为4层,因此就有4个半径,对应4组角度。同时我们还需要原点,最简单的方法,半径为0,即为原点了,因此还要增加一个0半径,因此半径为(0,1,2,3,4),且每个半径对应一组角度。
  • 最后就是创建散点图,然后更改为线图。蛛网分成两种连线方式,一种是同角度不同半径的点连成线,成为轴;另一种是同半径不同角度的点,连成圈。
  • 所以要两组对应的X,Y轴叠加,详细信息,一个为角度,一个为半径
  • 然将标记更改自动线。分别将半径角度拖入路径
  • 到这里就完全搞定了。

极简清爽版(有基础的看)

底层蛛网图

  1. 作辅助表格,一列为蛛网层数(0—4),一列为角度(0—360)
  2. 新增计算字段
    X=[蛛网层数]*25*cos([角度]*PI()/180)Y=[蛛网层数]*25*sin([角度]*PI()/180)
  3. X拖至Y拖至,复制一个X,或Y,设为双轴,叠加在一起
  4. 标记改为线,并将角度蛛网层数交错拖至两个图表的详细信息路径

外层雷达数据

制作方式同底图步骤,只需将辅助半径改为数值

  1. 新增计算字段角度
CASE [能力]
WHEN "传球" THEN 0
WHEN "射门" THEN 60
WHEN "盘带" THEN 120
WHEN "身体" THEN 180
WHEN "速度" THEN 240
WHEN "防守" THEN 300
END
  1. 新增字段X,Y,并将X,Y拖至行,列
    X[数值]*cos([角度]*180/PI())Y[数值]*sin([角度]*180/PI())
  2. 标记改为多边形
  3. 姓名拖至颜色(不同颜色分类人物)
  4. 角度拖至路径(不同角度的去连线形成多边形)
  5. 能力拖至详细信息(按能力作为维度区分不同值)
  6. 复制一个X或Y,将数值拖至标签,并将颜色不透明度设为0=完全透明

【注意】

  1. 底图和数据层的坐标轴要一致:最大最小刻度,X和Y轴方向
  2. 标签建议用数值能力放在底图标签显示更稳定,网上的那个原图的标签是都放数据层的,选中多个就没法正常标签了

熟练后,其实简单几步就能大功告成,作为萌新的我做的这个面向萌新的教程可还好吧,哈哈!我也没有公众号引流啥的,只是将我学习遇到的问题,用了一个简单的方法解决,并花时间分享给大家,如果觉得好,就请点赞、转发、评论,让更多人看到吧!