用Tableau画药丸图(Pilula charts)

药丸图(Pilula charts)又名马里奥图(Dr. Mario)出自Playfair Data网站,地址:playfairdata.com/introducing-pilula-aka-dr-mario-charts-in-table

药丸图(Pilula charts)又名马里奥图(Dr. Mario)出自Playfair Data网站,地址:playfairdata.com/introducing-pilula-aka-dr-mario-charts-in-tableau。本质上就是圆角的甘特图,用以突出显示随时间变化的数据点,其中每个条形表示一个时期或主题,颜色用于突出显示一个特征。如下图所示,Pilula 突出显示了每个团队成员的每周工作量,颜色用于区分工作强度,线的长度代表连续某种工作强度持续的时间。

这篇文章我们来复现整个制作过程,并讲解其中的绘图原理。数据源在Playfair Data网站中,可以自行下载。其中最需要使用的只有如下三列。

由于数据源中的日期和工作量都是到日的,最终的结果需要计算到周,所以需要新建一个LOD字段用以计算每人每周的工作量。

c. team member story points | weekly= { FIXED DATETRUNC('week', [Task Due At]), [Task Assignee Name]: SUM([Story Points])}

然后再此基础上去判断每人每周工作量的大小,大于10是高强度,小于5是低强度,此外是理想强度。

c. capacity status= IF [c. team member story points | weekly] > 10 THEN 'Above Capacity' ELSEIF [c. team member story points | weekly] < 5 THEN 'Below Capacity' ELSE 'Ideal Capacity' END

最后,计算如果是连续的周,同时工作强度又相同,给甘特图一个7天的长度。因此需要再增加一个表计算字段。

c.gantt bar sizing= IF MAX([c. capacity status])=LOOKUP(MAX([c. capacity status]), 1) AND DATEADD('week', 1, MAX(DATETRUNC('week', [Task Due At])))= LOOKUP(MAX(DATETRUNC('week', [Task Due At])), 1) THEN 7 ELSE 0 END

整个视图数据的计算原理如下,重点是理解表计算的原理。

由于数据本身的详细级别是到天的,视图数据要求的详细级别是到周,所以需要使用LOD计算周工作量,并计算强度,这两步相对比较好理解,难点就是甘特图长度的计算,需要用到表计算,使用LOOKUP跨行取数。

视图所需要的数据都计算完毕后,我们就可以制作图表了,如下图所示,制作一个简单的甘特图。

将c.gantt bar sizing字段拖动到“大小”栏,就可以完成基本的甘特图绘制。

最后,复制一个日期字段,标记类型改成圆,去掉“大小”字段,与原日期字段组成双轴,就完成了最终的版本。

药丸图作为学习Tableau绘图原理是一个非常好的案例。重点是甘特图的制作原理,特别是长度字段如何计算,并使用了LOD和表计算计算视图数据。

只有理解了Tableau的底层原理,才能随心所欲的绘制出自己想要的图形,而不是去死记硬背制图的步骤。

📖 相关文章
用Tableau画漏斗图的4种方法
用Tableau画马赛克图(Marimekko Chart):WOW挑战实战教程
用Tableau画圆形网络关系图
用Tableau画圆形热力图
用Tableau画元素周期表
——————————————————————————————

No comments yet