用Tableau画可调整的树状图(Tree Diagram)

2020-01-28  本文已影响0人  扫地sir

这里说的Tree Diagram并不是Tableau智能显示里自带的矩形树图Treemaps,其实是桑基图的变形。例如Ken大神的这个Viz。

https://public.tableau.com/profile/ken.flerlage#!/vizhome/AdjustableTreeDiagramTemplate/Tree

但要注意的是,这个例子里并不是用sigmoid函数来计算曲线的,这个图的第一个版本是用sin函数计算曲线,这个新的版本是用(10
*[t]^3) - (15*[t]^4) + (6*[t]^5)来计算曲线,不管用什么函数,形状都差不多。我就用sigmoid函数来介绍方法。

另外如果对sigmoid函数画曲线的原理不理解的话,可以看Ken大神的另外一个Viz。

https://public.tableau.com/profile/ken.flerlage#!/vizhome/AnIntroductiontoDataDensification/DataDensification

也可以翻看我以前写的桑基图文章。

建立数据集

分层数据

第一层,第二层,第三层,link
节点1,节点1-1,节点1-1-1,link
节点1,节点1-1,节点1-1-2,link
节点1,节点1-1,节点1-1-3,link
节点1,节点1-1,节点1-1-4,link
节点1,节点1-2,节点1-2-1,link
节点1,节点1-2,节点1-2-2,link
节点1,节点1-2,节点1-2-3,link
节点1,节点1-2,节点1-2-4,link
节点1,节点1-3,节点1-3-1,link
节点1,节点1-3,节点1-3-2,link
节点1,节点1-3,节点1-3-3,link

辅助表

link,path,t
link,1,-6
link,2,-5.75
link,3,-5.5
link,4,-5.25
link,5,-5
link,6,-4.75
link,7,-4.5
link,8,-4.25
link,9,-4
link,10,-3.75
link,11,-3.5
link,12,-3.25
link,13,-3
link,14,-2.75
link,15,-2.5
link,16,-2.25
link,17,-2
link,18,-1.75
link,19,-1.5
link,20,-1.25
link,21,-1
link,22,-0.75
link,23,-0.5
link,24,-0.25
link,25,0
link,26,0.25
link,27,0.5
link,28,0.75
link,29,1
link,30,1.25
link,31,1.5
link,32,1.75
link,33,2
link,34,2.25
link,35,2.5
link,36,2.75
link,37,3
link,38,3.25
link,39,3.5
link,40,3.75
link,41,4
link,42,4.25
link,43,4.5
link,44,4.75
link,45,5
link,46,5.25
link,47,5.5
link,48,5.75
link,49,6

两个表建立内连接

创建计算字段

用sigmoid函数画曲线

这里最巧妙的步骤就是,自动计算每个节点的位置,由于sigmoid函数会映射到0,1之间,所以节点的位置也控制在0,1之间。
以第二层为例计算逻辑如下表,第二层三个节点的index值为1,2,3,乘以[第二层节点间距]的值确定了在0-1之间的位置,再减去[第二层节点间距]/2,相当于将三个点都往下移了0.17,这样三个点在0-1之间的位置就居中了。


开始画图

新建工作表1

由于上下文的优先级高于fixed函数,所以调整筛选器时,fixed函数可以重新计算,从而重新确定节点位置。

新建工作表2
新建工作表3
组合工作表

将三个工作表组合到一个仪表板,去掉不必要的线,并调整左侧布局里的外边距为0,因为默认为4,会导致工作表有白边。

这样基本上就搞定了第一层和第二层,如果觉得曲线头部太尖了,也可以调整t值的范围,我这里将t值固定在了-4.2到6之间,如下图。

关于如何建立第三层的,我这里省略掉,大家可以根据对上面的理解,自己摸索一下。

这里提示一下,后面每新增一层都需要新建3个计算字段和2个工作表。也可以到我的public上下载我做好的示例。

https://public.tableau.com/profile/jiangbin#!/vizhome/3_15802310336470/1

此篇文章已发布到我的公众号:saodisir,有兴趣也可关注一下

上一篇 下一篇

猜你喜欢

热点阅读