前几天,有小伙伴在后台问我,能否发一篇关于热图日历的文章,并用R软件制作了一张示例图供我参考(见下图)。经过一段时间学习,算是基本摸清了热图日历的制作方法及步骤,这里写出来与大家进行分享和交流。

热图日历:顾名思义,就是用日历形式对数据进行热图类型可视化,常用于查看较长一段时期,如整个年度或数个月度,每天的数值变化情况。

Tableau图表 •热图日历

对于热图日历,我个人觉得根据难度可以分为三种类型,本文按照由易到难的顺序,对三种类型创建步骤逐一记录,这三种类型具体如下:

  1. 月度热图日历
  2. 年度热图日历
  3. 年度热图日历(带月标签)

这里使用上海市2014年空气质量指数(AQI)数据集,创建上海2014年AQI热图日历。

Tableau图表 •热图日历

月度热图日历

月度的热图日历比较简单,总体思路是对月度时间进行筛选,然后在视图中创建单月日历,最后对该日历进行热图可视化。

筛选月份

将“日期”字段拖放到“筛选器”卡,在弹出的对话框中选择“年/月”,然后再选择任意一个时间,这里选择的是“2014年1月”。

Tableau图表 •热图日历

创建单月日历

Step01 设置"星期"。将“日期”字段拖放到“列”功能区,并在该字段上通过鼠标右键选择“工作日”,即可完成“星期”的显示。

Tableau图表 •热图日历

Step02 设置周数。将“日期”字段拖放到“行”功能区,并在该字段上通过鼠标右键选择“周数”,即可完成周数的显示。

Tableau图表 •热图日历

Step03 检查显示结果。完成上面两步后,视图中出现了2014年1月份的日历,为核对该日历是否显示准确,可以将“日期”字段拖放到“标记”卡的“文本”,并将该字段设置为“天”。可以看到,视图已经正确显示出了2014年1月份的周数、星期和具体日期。

Tableau图表 •热图日历

需要注意的是,tableau默认的每周开始时间是“周日”,结束时间是“周六”,与我们日常习惯不太一致。

Tableau图表 •热图日历

我们更习惯以“周一”作为每周开始时间,“周日”作为结束时间,因此,需要对tableau的默认显示方式进行设置,具体路径是:“数据”菜单→当前数据表→“日期属性”选项,如下所示:

Tableau图表 •热图日历

然后,在弹出的“日期属性”窗口中,将“周开始”设置为“星期一”即可。

Tableau图表 •热图日历

Step04 可视化空气质量指数。

  • 将标记类型设置为“方型”
  • 移除“标记”卡中,用于测试的“日期”字段,
  • 将度量区的“AQI”字段拖放到“标记”卡的“颜色”

Tableau图表 •热图日历

这里可以根据使用习惯,将AQI的热图颜色进行自定义编辑,具体设置内容如下图:

Tableau图表 •热图日历

最终形成的单月热图日历如下所示:

Tableau图表 •热图日历

年度热图日历

上面创建的是单月热图日历,如果要显示全年的热图日历,则需要对“列”和“行”功能区的字段进行补充和设置。

移除上图“筛选器”卡中的“日期”字段,再拖放一个“日期”字段到“列”功能区的“工作日(日期)”字段前面,视图则会将2014年的每一周及每一天显示出来,如下图所示:

Tableau图表 •热图日历

如果要进一步区别月度情况,则可以拖放一个“日期”字段到“行”功能区的“周(日期)”字段前面,并设置为“月(日期)”,所得视图如下所示:

Tableau图表 •热图日历

如果还想创建更一目了然的布局,比如横向显示三个月份,纵向显示四个季度,则需要通过计算字段来实现,具体步骤如下:

Step01 创建“列索引”字段。该字段用于对月度进行分组。

“列索引”:

CASE MONTH([日期])
WHEN 1 THEN 1
WHEN 2 THEN 2
WHEN 3 THEN 3
WHEN 4 THEN 1
WHEN 5 THEN 2
WHEN 6 THEN 3
WHEN 7 THEN 1
WHEN 8 THEN 2
WHEN 9 THEN 3
WHEN 10 THEN 1
WHEN 11 THEN 2
WHEN 12 THEN 3
END

Tableau图表 •热图日历

Step02 创建“行索引”字段。该字段用于对周数进行索引。

“行索引”:

FLOAT(DATEPART(‘week’, [日期])-{FIXED DATEPART(‘month’, [日期]):MIN(DATEPART(‘week’, [日期]))})

Tableau图表 •热图日历

Step03 生成日历。

  • 将“列索引”字段替换掉“列”功能区的“年(日期)”字段
  • 将“行索引”字段替换掉“行”功能区的“周(日期)”字段
  • 将“列”功能区的“月(日期)”字段设置为“季度(日期)”

Tableau图表 •热图日历

Step04 设置可视化格式。

  • 消除“行索引”、“列索引”、“季度(日期)”字段的标题
  • 隐藏列字段标签
  • 设置边界
  • 设置网格线,等等

最终形成的热图日历如下所示:

Tableau图表 •热图日历

年度热图日历(带月标签)

通过上面的步骤,年度热图日历基本具备了一目了然的布局,但如果还想在视图中,为每一个月份的日历增加一个对应的月度标签,让月份识别更为直观,则还要对上面的视图进一步优化。

以实践而言,增加月度标签的需求看似简单,步骤却比较多,操作较为繁琐,应该算是热图日历创建过程中,技巧性比较高的内容。

这里接着已经创建完成的年度热图日历示例3(见上图),分步描述添加月份标签的具体步骤。

Step01 处理“行索引”字段。通过鼠标右键,将“行”功能区的“行索引”字段转换为“连续”,然后编辑“行索引”坐标轴,设置“倒序”。

Tableau图表 •热图日历

Step02 拖放“记录数”字段。将“度量”区的“记录数”字段拖放到“标记”卡的“大小”,并将聚合方式改为“平均值”。

Tableau图表 •热图日历

Step03 设置“标签”。点击“标记”卡的“标签”,勾选“允许标签覆盖其他标记”选项,并将垂直方向的对齐方式设为“居中”。

Tableau图表 •热图日历

Step04 改变图形样式。将图形样式改为“甘特条形图”,并将“大小”拖放到最大位置。

Tableau图表 •热图日历

Step05 调换横轴位置。将位于视图下方的横轴调换到视图上方位置,在这里就是要将位于视图下方的“星期”标题显示在视图上方。

  • 具体路径“分析”菜单→“表布局”→“高级”

Tableau图表 •热图日历

  • 在弹出的“表选项”窗口中,取消“当存在垂直轴时在视图底部显示最内部级别”选项。

Tableau图表 •热图日历

Step06 创建计算字段。创建“周标记”计算字段,用于设置月标签与月度日历的相对位置。其中,“5”和“-1.0”两个数字可以根据需要调整。

周标记:

IF DATEPART(‘weekday’, [日期])=5 THEN -1.0 END

Tableau图表 •热图日历

Step07 设置坐标轴。

  • 将“周标记”计算字段直接拖放到视图右侧,生成次坐标轴。

Tableau图表 •热图日历

  • 将维度区的“行索引”字段数据类型转换为“数字(十进制)”。

Tableau图表 •热图日历

  • 对“周标记”坐标轴设置“同步轴”。

Tableau图表 •热图日历

  • 检查“行索引”轴是否为“倒序”,如果不是,则要进行勾选。

Tableau图表 •热图日历

Step08 设置标记。对“标记”卡区域中的“周标记”窗口相关字段进行设置。

  • 移除“AQI”和“记录数”字段
  • 将标记类型改为“文本”
  • 将“天(日期)”字段改为“月(日期)”

Tableau图表 •热图日历

Step09 更改字段聚合方式。将“行”功能区“周标记”字段的聚合方式更改为“平均值”。

Tableau图表 •热图日历

Step10 设置可视化格式。

  • 隐藏视图右下方的NULL值
  • 消除“行索引”、“列索引”等字段的标题
  • 设置边界、网格线,等等

经过以上步骤,最终形成的热图日历如下所示:

Tableau图表 •热图日历
(全文完)

Tableau图表 •热图日历

相关文章:

  • 2021-11-08
  • 2021-09-12
  • 2022-01-13
  • 2021-07-24
  • 2021-09-20
  • 2022-01-14
  • 2021-12-19
  • 2021-11-28
猜你喜欢
  • 2022-01-11
  • 2021-03-31
  • 2021-05-25
  • 2021-08-28
  • 2021-06-01
  • 2021-11-21
  • 2021-09-07
相关资源
相似解决方案