Tableau可视化(环状条形图)——美国人每天睡多久?

from https://www.jianshu.com/p/90e19160f3ae

POINT图表竞赛6/10这一期的数据来自MakeoverMonday Week24 Sleepless in America?
数据下载地址:data.world
工作簿地址:How long do Amerians Sleep ?

image.png

数据还是比较简单的,可以先删除不必要的列【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?

分享到:更多 ()

抢沙发

评论前必须登录!