Digital Garden
目录

    热力图

    什么是热力图?

    热力图(又名热图)将一个主要变量的值在两个轴变量上以彩色方格网格的形式呈现。轴变量被划分为类似于条形图或直方图的区间,每个单元格的颜色表示相应区间内主要变量的值。

    Heatmap showing precipitation in Seattle, grouped by month

    上述示例热力图展示了西雅图华盛顿州在十一年间按月份分组记录的每日降水分布。每个单元格报告一个数值计数,类似于标准数据表,但计数会伴随颜色显示,较大的计数与较深的颜色相关联。从热力图可以看出,最左侧列中最深的颜色表明全年大多数日子没有降水。月份间单元格颜色的模式也显示,从11月到3月的冬季降雨更常见,而7月和8月的夏季降雨最少。

    2-D 密度图

    "热力图"这个术语在更广泛的意义上使用,其中数据不受网格限制。例如,网站跟踪工具可以设置来观察用户如何与网站互动,比如研究用户点击的位置,或者读者通常向下滚动页面的距离。

    TExample of density heatmap overlaid on San Francisco streets for Google Maps

    来自 Google Maps 文档 的示例热力图

    每次点击(或其他跟踪事件)都与一个位置相关联,在其位置周围辐射出少量数值。这些值在所有事件中总计起来,然后使用关联的配色方案进行绘制。这些工具输出的视觉语言,将数值与颜色相关联,与顶部定义的热力图类型相似,只是没有基于网格的结构。这种类型的热力图有时也被称为 2-D 密度图。

    何时使用热力图


    热力图用于展示两个变量之间的关系,每个变量分别绘制在坐标轴上。通过观察每个坐标轴上单元格颜色的变化,你可以判断一个或两个变量是否存在数值上的模式。

    每个坐标轴上绘制的变量可以是任何类型,无论是分类标签还是数值。在后一种情况下,数值必须像直方图一样进行分箱,以形成网格单元格,并在这些单元格中绘制与主要变量相关的颜色。

    单元格颜色可以对应各种指标,例如每个分箱中点的频率计数,或第三个变量的汇总统计数据(如平均值或中位数)。构建热力图的一种方式可以看作是一个表格或矩阵,颜色编码在单元格之上。在某些应用中,单元格也可以根据非数值进行着色(例如,低、中、高的一般定性级别)。

    数据结构示例

    #### USERNAME#### < 0.01#### 0.1 - 4.0#### 4.1 - 10.0#### …
    一月255167123…
    二月24419689…
    三月268198119…
    四月32117988…
    ……………

    不同的可视化应用程序在将数据作为热图进行绘制时,可以有不同的数据接受方式。在一种主要形式中,数据可以以自然表格显示的方式提供。第一列将包含热图一个轴的值,而其余列的名称将对应于另一个轴的区间。这些列中的值将被编码到热图中。

    另一种常见的热图数据格式是采用三列形式。热图中的每个单元格都与数据表中的一行相关联。前两列指定热图单元格的“坐标”,而第三列则表示单元格的值。

    #### MONTH#### PRCP_BUCKET#### COUNT
    三月10.1 - 20.046
    三月> 20.020
    四月< 0.1321
    四月0.1 - 4.0179
    ………

    使用热图的最佳实践


    选择合适的调色板

    颜色是这个图表类型的核心组成部分,因此值得确保你选择一个合适的配色方案 来匹配数据。最常见的情况是,值和颜色之间会有一个顺序色带,其中浅色对应较小的值,深色对应较大的值,或者相反。然而,当值有一个有意义的零点时,可能会使用一个发散的配色方案。

    Heatmaps often use sequential or diverging color palettes to map value to color.

    包含图例

    作为相关说明,通常要求热力图包含一个图例,以说明颜色如何映射到数值。由于颜色本身与值没有固有的关联,图例对于观众理解热力图中的值至关重要。当值与颜色的绝对关联不重要,仅关注数据绘制的相对模式时,可以例外不包含图例。

    Example of GitHub's contributions calendar heatmap

    GitHub 贡献日历使用一个通用图例来显示每日的贡献量。(来源:GitHub)

    在单元格中显示值

    在将颜色映射到值方面缺乏精确性,尤其是与其他编码方式(如位置或长度)相比。在可能的情况下,向热图中添加单元格值注释是一个很好的想法,这可以作为值的双重编码。

    按相似度或数值排序层级

    当图表中的一个或两个轴变量是分类变量时,考虑改变这些轴变量层级的绘制顺序可能是有益的。如果类别没有固有的排序,我们可能希望选择一个最能帮助读者理解数据中模式的顺序。一个常见的选项是按类别平均单元格值从大到小排序类别。

    Heatmaps with categorical values sorted alphabetically or by value

    右侧的热图按最后一列的值排序。

    一种更高级的技术涉及通过相似性度量对类别值进行分组和聚类。这通常出现在下面讨论的聚类热图用例中。

    选择有用的刻度标记

    对于数值轴变量,可以选择如何设置分组以及如何在图表中指示分组。如果分组较少,可以像分类轴变量一样在每个分组上保留刻度标记。但是,当分组较多时,更好的选择是在分组之间绘制刻度标记以避免拥挤。你应该使用多少分组以及它们的大小将取决于数据的性质,因此尝试不同的设置可能是个好主意。有关为数值变量设置分组大小的更多详细建议,请参阅我们的文章直方图  。

    Tick marks can be placed between bins in a numeric heatmap

    常见的热图选项


    聚合热图

    与其让水平轴代表单个变量的级别或值,一个常见的变体是让它代表不同变量或指标的测量值。如果我们把垂直轴设置为单个观测值,我们最终会得到一个类似于标准数据表的图形,其中每一行是一个观测值,而列则是该实体在每个测量变量上的值。

    这种热图有时也被称为簇状热图或聚类热图,因为这种图表的目标是建立数据点及其特征之间的关联。我们想要看到哪些个体彼此相似或不同,变量也有类似的目标。构建这种热图的分析工具通常会将其作为过程的一部分实现聚类。这种用例在生物科学等领域中常见,例如在研究个体间基因表达的相似性时。

    Clustered heatmap of iris specimens and their features

    在上述簇状热图中,每一列代表一个单独的花朵样本,每一行代表该样本的一个测量值。

    相关图

    相关图是热图的一种变体,它用数据集中的数值变量列表替换了两个轴上的每个变量。每个单元格描绘了相交变量的关系,例如线性相关性。有时,这些简单的相关性会被更复杂的关系表示所取代,比如散点图。

    相关图通常用于探索性分析,帮助分析师理解变量之间的关系,以构建描述性或预测性统计模型。

    Correlogram of iris features across all specimens

    花瓣长度与花瓣宽度和萼片长度高度相关;萼片长度与其他三个变量呈负相关。

    相关图

    条形图和直方图

    热图的最近似一维类比是条形图和直方图 ,分别对应分类数据和数值数据。对于这些图表,条形长度是值的指标,而不是颜色。(虽然值得注意的是,直方图的条形往往仅描绘频率信息——当在每个箱子上计算汇总指标时,我们倾向于使用折线图 。)关于排序级别和设置刻度的最佳实践建议来自这些更基本的图表类型。

    Bar charts and histograms show value from the lengths of bars.

    分组柱状图

    在热力图中展示数据的一种替代方法是使用分组柱状图 。热力图的每一行都变成一组柱状,每根柱状的高度表示对应单元格的值。颜色则用来确保列值可以在不同组之间追踪。

    当需要更精确地比较单元格值时,会使用分组柱状图。然而,当需要绘制大量柱状且两个轴变量都是数值型时,它们并不是一个好的选择。在这种情况下,最好坚持使用热力图,因为热力图更紧凑,能同时展示两个轴变量的整体概览。

    Data binned on two dimensions can be displayed as either a grouped bar chart or a heat map.

    散点图

    散点图 似乎与热力图无关,因为它们通过位置而不是颜色来绘制单个数据点。然而,当数据点数量过多导致高度重叠时,这会掩盖变量之间的关系,这个问题称为过度绘制。克服过度绘制的选项之一是使用热力图,它计算每个区间内的点数。这种使用热力图的方法也被称为二维直方图。

    Overplotting in a scatter plot can be resolved through sampling, transparency, or using a heatmap.

    分级统计图

    将颜色与数值关联的语言不仅限于热力图。这种编码方式的一个特例可以在分级统计地图中看到。分级统计地图与热力图类似,都是用彩色区域编码数值,但这些数值与地理区域相关联,而不是严格的网格。

    Choropleth showing 2010 population of the United States for each state.

    可视化工具


    热力图是一种常见的图表类型,但其实现方式因应用而异。需仔细注意程序所需的数据格式,以确保数据被正确解读。聚类热力图和相关图是更专业的变体,通常伴随着不同的工作流程或专用功能或工具。

    热力图是用于数据可视化的多种图表类型之一。您可以通过阅读我们关于基本图表类型、如何选择数据可视化类型的文章,或浏览图表分类下的全部文章来了解更多信息。

    Digital Garden
    原创 热力图

    本文采用CC BY-NC-SA 4.0 许可协议,转载请注明出处。