美文网首页
用Tableau画马赛克图

用Tableau画马赛克图

作者: 扫地sir | 来源:发表于2023-01-04 12:30 被阅读0次

再发一篇新书中的案例。

本节案例采用WOW2022第36周的挑战(Let’s build a Marrimeko Chart),成品如下图所示。Marimekko Chart中文翻译成马赛克图,它其实是堆叠条形图的一种变体,由于在横轴上增加了宽度,因此可以同时展现两个指标(度量值)。

从下图中可以看出,横轴是不同职级员工占总体的比例,而纵轴是不同职级内员工的男女比例。例如“Entry”这个职级的员工占总员工数的53%,这个职级内的男女员工比例分别是54%和46%。我们通过方形的面积就可以很直观的看出不同职级员工的男女比例,这一点与树图非常相似。

正常情况下制作堆叠条形图,列功能区应为离散的维度“Job Type”(下图),但是离散字段条形图的宽度是一致的,因此需要改用“Total By Job”来控制横轴的宽度。

如下图所示,如果直接将“Total By Job”字段拖到列功能区,柱状图的位置会根据“Total By Job”的值排列在横轴上,这并不符合我们的要求。

如果要保证每个柱状图都排在正确的位置,实际上并不能直接使用“Total By Job”本身的值,而应该使用“Total By Job”累计求和之后的结果(下图),这一步正是制作马赛克图的关键所在。

如下图所示,在“Total By Job”上右键选择“快速表计算-累计汇总”,并把表计算依据修改为“Job Type ”,同时还需要将“Job Type ”字段的排序依据改为“Total By Job”降序。最后,点击标记栏的“大小”的图标,调整为“固定”模式,对齐方式修改为“右侧”,也就是让每个柱状图的起始点为右侧,根据大小向左填充以控制宽度,这点与甘特图的原理非常相似。对齐方式的调整在本方案中非常重要,如果使用其他对齐方式,则需要更加复杂的方式计算横轴的值,这里不再赘述,有兴趣的读者可以自行尝试。

另外,由于连续字段并不能像离散字段一样产生标题,所以职务名称需要在仪表板中通过文本对象逐一添加后,才能形成成品图所示的效果。

制作马赛克图的难度并不是很大,本期挑战的难度也并不仅仅是制图本身。前面使用的数据集并非是挑战提供的,而是我经过手工处理之后的结果。如下图所示,原始数据集中只有一个度量值“Percentage”,因此需要将“Total”的部分提取出来作为一个独立的度量值。为了步骤清晰,我们新建两个计算字段:

  • Total percentage:IF [Sub-Type]="Total" THEN [Percentage] END

  • Total By Job:{FIXED [Job Type]:MAX([Total percentage])}

根据第一章中所讲的FIXED函数原理,就不难理解如何在不改变原始数据集的基础上,计算出“Total By Job”这个字段了。下图中红框内所示部分就是我们需要的数据。

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

相关文章

网友评论

      本文标题:用Tableau画马赛克图

      本文链接:https://www.haomeiwen.com/subject/bbvrcdtx.html