药丸图(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可视化原理》已经开始印刷,预计下周或下下周就可以全面上市,其中对甘特图、LOD和表计算的原理有详细的讲解,希望本书可以帮助大家进一步加深对Tableau的认识。
网友评论