上一篇文章《用Tableau画曲线图系列(四)彩虹色带图(上)》,我们已经把色带画出来了。这篇文章我们来画堆积柱状图的部分。说是柱状图,其实还是用多边形来画。
数据集不变,继续创建计算字段。
创建柱状图的计算字段
- Path4=
IF [表名称]='Ribbon.csv' then 1
ELSE 4
END
- 创建数据桶Path4 (bin)
-
IndexPath4Bin=INDEX()
-
X-bar=
case [IndexPath4Bin]
when 1 then [IndexYear]*2-1
when 2 then [IndexYear]*2
when 3 then [IndexYear]*2
when 4 then [IndexYear]*2-1
END
-1
- Y-bar=
case [IndexPath4Bin]
when 1 then [CRunS]
when 2 then [CRunS]
when 3 then [CRunS]-window_max(sum([Value]))
when 4 then [CRunS]-window_max(sum([Value]))
end
制作图形
-
把[X-bar]拖到列功能区,[Y-bar]拖到行功能区。
-
将[X-bar]标签里的路径[Path102 (bin)]更换为[Path4(bin)]。
这里一定要注意,Path4(bin)也要勾选显示缺失值。
- 编辑[X-bar]的表计算依据,如下图:
- 右键[Y-bar],表计算依据选择[Path4(bin)]。
- 将列和行都进行双轴操作,并同步轴。
调整颜色和透明度后,就得到完整图形了。
至于原理部分,我只简单介绍一下,确实很烧脑,我也是研究了很长时间才大致明白。
我们选中色带的一段多边形,可以从下面的示意图中看到,PathGroup将path数据桶中的102个点分成了4段,来画多边形,如下图所示:
而计算Y轴需要前一年和本年的Value和RunS值,然后再配合PathGroup计算求出Y轴的相对位置,其计算原理如下图所示:
image.png堆积柱形图就简单了,数据桶中就4个点,用4个点画一个长方形,当然只需要本年的Value和RunS值即可。
虽然原理很复杂,但是制作起来也不是太难,主要是数据源的处理一定要做好,表计算和数据桶的操作要多注意,容易出错。
对于普通用户来说,原理部分其实并不重要,能做出来即可,需要的时候替换一下数据源就可以了。如果做不出来,大家也可以下载我制作好的Viz,继续研究。
https://public.tableau.com/profile/jiangbin#!/vizhome/Ribboncharts/Ribbon2
此篇文章已发布到我的公众号: saodisir,有兴趣也可关注一下
网友评论