最近看到Tableau Public特别推荐里,有个Viz作品《Following Federer》介绍了网球巨星费德勒的职业生涯,这个作品中的圆形棒棒糖图特别吸引我。
https://public.tableau.com/zh-cn/gallery/following-federer?tab=viz-of-the-day&type=viz-of-the-day
仔细想了一下,实现这个图形并不复杂,这是我画环形系列文章第六篇《用Tableau画环形图系列(六)画柱状环形图》的一个变体,只要稍微修改一下,计算字段就可以实现了,非常的简单。如果你没有看过前面的文章,还请通过前面的文章复习一下基础知识,这里我只是简单介绍一下实现过程。
建立数据集
数据集并不难,index就是一个等差数据列,这里我取的1-50(当然也可以是时间或者其他),value就是随机的正负1(1往外发散,-1往内发散),in/out区分了内外环,0是内环,1是外环,这里的外环指的是有圆点的那层(特别要说的是,不管是往内发散,还是往外发散都是外环),category为的是区分颜色,我也是取的随机的1-3。
上下两部分,除了in/out有0和1的区别以外,其他都相同。
附赠一个excel随机生成正负1的公式=(-1)^INT(RAND()*2),方便大家自己构造数据。
创建计算字段
- R=
IF ATTR([in/out])= 0 THEN 1
ELSEIF ATTR([in/out])= 1 then
IF ATTR([value])>0 then 1.2
ELSEif ATTR([value])<0 then 0.8
ELSE 0
END
END
-
Angel=2 * PI()* (INDEX()-1) * (1/WINDOW_COUNT(COUNT([value])))
-
Sin=SIN([Angel])*[R]
-
Cos=COS([Angel])*[R]
开始做图
- 把[Sin]和[Cos]分别拖到列和行功能区,取消聚合
- 标记类型选择“线”,把[in/out]拖到“路径”
- 把[index]拖到“详细信息”
- 右键[Sin]和[Cos],表计算依据选择[index],操作正确后,可以得到下图
- 在列功能区复制一个[Sin],标记类型选择“圆”,双轴并同步轴
- 把[in/out]拖到标记区sin(2)里的“大小”上,就得到了下图
- 将[category]拖到标记区全部里的“颜色”上,务必右键修改为“属性”或者“度量”(如果是维度会影响数据的详细级别造成错误,修改sin和cos的表计算,也可以解决),同时修改[category]为“离散”数据,编辑一下颜色即可得到下图
这样一个圆形棒棒糖图就做好了,是不是特别简单。
后面留个作业,如果想做成下图的发散图形,该怎么做?
(提示一下,这个更简单)
此篇文章已发布到我的公众号:saodisir,有兴趣也可关注一下
网友评论