美文网首页数据可视化BI工具-Tableaupython模块
Tableau可视化(环状条形图)——美国人每天睡多久?

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

作者: 有理酱_Yuri_Wg | 来源:发表于2019-06-18 10:09 被阅读4次

    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?

    image.png

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/xvfxqctx.html