用Tableau画帽子图(Hat Graphs)
帽子图(Hat Graphs)是一个很有意思的图表,它是双柱状图的一种变形,主要是突出数值之间的差异。如下图,从双柱状图变成帽子图(只保留蓝色部分)。
Jeffrey Shaffer大神在他的博客中提供了一种非常简单的制作方法。大神的博客里有详细的制作引导,帮助大家一步一步的理解帽子图的意义。
我这里只取干货,直接介绍制作方法,并加上一些自己的理解。
数据集使用自带的超市数据。
我们需要制作[Quanity]的帽子图,所以我们只需建立一个计算差异的字段。
- Difference in Quanity=-SUM([Quantity]) + LOOKUP(SUM([Quantity]),-1)
就是通过lookup函数取第一个柱子的值,算出两个柱子之间的差值。
-
把[Region]和[Ship Mode]拖到列功能区。
-
把[Ship Mode]拖到筛选器,只选择两个值。
-
把[Quanity]拖到行功能区,标记类型选择“甘特图”。
-
把[Difference in Quanity]拖到“大小”并调整大小,计算依据选择[Ship Mode]。
基本效果就有了。
下面通过添加合计的方法,来增加维度之间的空白。
-
从顶部菜单中选择“分析”-“合计”,然后选择“添加所有小计”。
-
任意选择一个合计,在点击后出现的菜单中选择“隐藏”
- 右键单击X轴上的“合计”标签,然后选择“设置格式”,在左侧的“格式”窗格中,从“合计”标签中删除“合计”。
- 再去掉“网格线”和“列分隔符”。
下面可以增加一个计算字段,添加标签
- Difference Label=SUM([Quantity]) - LOOKUP(SUM([Quantity]),-1)
和[Difference in Quanity]相反
- 将[Difference Label]拖到“标签”里,计算依据同样选择[Ship Mode]。
基本大功告成了。
下面我们还可以通过添加双轴的方式,添加总计值和进行一些其他的美化工作,制作衍生版本。
大家可以去下载Jeffrey Shaffer制作好的Viz来学习,里面有教学和几种衍生版本。
Jeffrey Shaffer的Public:https://public.tableau.com/profile/jeffrey.shaffer#!/vizhome/CreatingHatGraphsinTableau/CreatingHatGraphs
另外想说的是,我尝试用FIRST函数来改造计算字段,比如
- Difference in Quanity=-SUM([Quantity]) + LOOKUP(SUM([Quantity]),FIRST())
这样[Ship Mode]如果不进行筛选,保留4个值也可以进行比较,但是效果可能并不是特别好。
我也征求了Jeffrey Shaffer的意见,大神认为技术上是可以这样操作,但是因为所有值都只和第一个值进行比较,所以应用场景有一定限制。大家可以根据实际需求去挖掘适合的应用场景。
此篇文章已发布到我的公众号: saodisir,有兴趣也可关注一下