Arc Chart我在《用Tableau画环形图系列(四)画圆弧图(1)》介绍过,以前是用联接表的方法做的,优点是创建比较简单。但就原文提到的Arc Chart来说,实用性略差,今天我就在Arc Chart的基础上稍微改进一下,讲述一下如何制作Arc Bar Chart,这次我使用数据桶的方式。
创建数据集
Category Start Point End Point Value Path Step
A 2001 2005 10 1 1
A 2001 2005 10 181 1
A 2005 2008 3 1 2
A 2005 2008 3 181 2
A 2008 2012 2 1 3
A 2008 2012 2 181 3
A 2012 2013 4 1 4
A 2012 2013 4 181 4
A 2013 2020 6 1 5
A 2013 2020 6 181 5
B 2001 2004 4 1 1
B 2001 2004 4 181 1
B 2004 2010 5 1 2
B 2004 2010 5 181 2
B 2010 2014 1 1 3
B 2010 2014 1 181 3
B 2014 2017 2 1 4
B 2014 2017 2 181 4
C 2001 2007 2 1 1
C 2001 2007 2 181 1
C 2007 2009 5 1 2
C 2007 2009 5 181 2
数据集很简单,两行为一组,Category是分类,Start Point和End Point是开始和结束的年份,Path用来制作数据桶(构建半圆只需要180个点),Step是一个分类下每组数据的顺序号。
创建计算字段
- 创建Path (数据桶)
Index=INDEX()-1
WC_Start Point=WINDOW_MAX(MAX([Start Point]))
WC_End Point=WINDOW_MAX(MAX([End Point]))
WC_Step Size=([WC_End Point]-[WC_Start Point])/2
WC_Value=WINDOW_MAX(MAX([Value]))
X=((COS([Index]*PI()/180))*[WC_Step Size])+[WC_Step Size]+[WC_Start Point]
Y=SIN([Index]*PI()/180)*[WC_Value]
X、Y的计算方法请参照前面的画圆系列文章,只稍微提示一下X轴里的[WC_Step Size]+[WC_Start Point]是为了把圆弧都错开,并保证首尾相接。Y轴*[WC_Value]确定了弧线的高度。
开始做图
将标记类型改为“线”。
把[Step]字段拖到“详细信息”里。
把[Path (数据桶)]拖到行功能区,右键选择“显示缺失值”,然后将行功能区上的这个[Path (数据桶)],拖回到标记“路径”上,此时行功能区为空。
这样的操作保证了数据桶是180个值,而不是只有1和181这两个值。
将[Category]和[Y]拖到行功能区,[X]拖到列功能区,[X]、[Y]的计算依据都选择[Path (数据桶)]。
此时还需要调整一下[X]轴的范围,由于我们是2001年到2020年的数据,为了保证图形显示全,我们选择固定在2000-2021之间。
在设置格式里去掉不必要的线,只保留边界格式里的“行分隔符”,用以分割三个分类。
增加X轴趋势线,用来增加底色。
- 调整标记栏里线的颜色。
如果一切顺利,会出现下图的效果。
改进图形
上面的方法比较简单,但背景颜色不能自由调整,我们用双轴的方法,改进一下。
- WC_Value2=WINDOW_MAX(MAX([Value]))+1
当然这个字段直接用WC_Value也是可以的,我数据里的最大值是10,这里+1,为了保证图形显示的美观。假如你要固定一个背景,高度15,直接用一个WINDOW_MAX(15)也没问题,还少了后面的表计算。
其他步骤基本与上面一致,这里去掉了添加参考线的步骤。
把[WC_Value2]拖到行功能区,标记类型选择“区域”,编辑表计算依据如下:
- 关闭堆叠标记。
将[Category]拖到颜色,并调整颜色,透明度为100%。
与[Y]轴双轴并同步轴。
好了,上面基本完了Arc Bar Chart的制作,但我们还有调整的余地。
进阶
- 创建参数[Y Distance]
IndexY= INDEX()
Y2=[Y]+[IndexY]*[Y Distance]
我们通过[Y2]的计算字段,把三个分类放到一个度量里,并把位置错开,形成了叠加的效果。
[X]拖到列功能区,计算依据都选择[Path (数据桶)]。
[Y2]拖到行功能区,[Index]和[WC_Value]的计算依据是[Path (数据桶)],[IndexY]的计算依据是[Category]。
基本效果如下,大家可以自己试验一下。
另外给大家推荐一个Viz《Joyful Arcs》,非常漂亮,大家可以下载研究。
https://public.tableau.com/profile/erikrettman#!/vizhome/JoyfulArcsII/OverlappingArcJoyPlot
此篇文章已发布到我的公众号:saodisir,有兴趣也可关注一下