POINT图表竞赛6/10这一期的数据来自MakeoverMonday Week24 Sleepless in America?
数据下载地址:data.world
工作簿地址:How long do Amerians Sleep ?
数据还是比较简单的,可以先删除不必要的列【Period】【Activity】(【Link】是添加的辅助列,用来进行表连接)
最后剩下年份、日期类型、年龄段、性别四个维度,所以主要就是围绕这四个维度展开。第一版长下面这样,将年份、日期类型、年龄段三个维度都放到一个图表里比较了。
可以明显的看到工作日和假期之间的差距;
中间的灰色曲线代表随时间发展,睡眠时长的变化;
通过颜色来区分各个年龄段之间,通过点选图例可以动态显示不同年龄段的平均值;
可以发现目前各个年龄段之间呈现的差距还是比较明显的,这是通过操纵坐标轴实现的,虽然通过标记平均值参考线避免了误解,但依然觉得这不是最佳的选择。
直到看到一个小伙伴用了环状条形图,发现用它来做年龄段的比较,真的再合适不过了,之前一直没有碰到合适的数据用Tableau制作环状条形图,机不可失,果断重新做一版。。。
四个维度四张图,还是能够比较明显得呈现差异了
关于如何使用Tableau创建环状条形图
回想一下之前做环形图最基本的两点,确定每个点的半径R和坐标(X,Y)
还需要一个辅助列【Point】其值为0~360,也就是对应圆上的360个点的角度
- 这里的R是什么?
按照不同年龄段,每个年龄段设置一个半径
IF [Age Group]='15 to 24 years' THEN 7
ELSEIF [Age Group]='25 to 34 years' THEN 6
ELSEIF [Age Group]='35 to 44 years' THEN 5
ELSEIF [Age Group]='45 to 54 years' THEN 4
ELSEIF [Age Group]='55 to 64 years' THEN 3
ELSEIF [Age Group]='65 years and over' THEN 2
ELSE 1
END - 如何确定每个点的(X,Y)?
通用公式是这样的
X=SIN(PI / 180 * 角度) * R
Y=COS(PI / 180 * 角度) * R
这里需要修改一下,因为我们要呈现的不是完整的圆,而是要根据不同的时间占比显示不同的角度
如何得到比例值【%size】?
想象一下一个整圆代表12个小时,那根据不同年龄段的平均睡眠时长除以12就能得到各自相应的比例值,然后我们就能用它来按比例缩放每个点的角度啦~ 这里的【Point】就是每个点的角度值
X=SIN([Point] * PI()/180 * [%size]) * [R]
Y=COS([Point] * PI()/180 * [%size]) * [R]
弄清楚这几个点,接下去应该就不成问题啦~
动手试一试吧~
但是在做选择的时候还是要思考一下,对于你的数据来说,它是不是最佳选择,毕竟用Tableau做径向图并不是省时省力的事(虽然颜值挺高)。在Tableau Public上也有朋友提出了这样的疑问Barchart Bakeoff: Radial or Not?