Tableau 2020 学习指南(二)
原文:
annas-archive.org/md5/ae37fae7c02607c3183636011e94115a译者:飞龙
第五章:利用详细程度计算
在考虑了逐行计算和聚合计算后,接下来我们将关注四种主要计算类型中的第三种:详细程度计算。
详细程度计算(有时称为 LOD 计算 或 LOD 表达式)允许你在指定的详细程度上执行聚合,这个详细程度可能与视图中定义的不同。你可以利用这个功能进行各种分析,这些分析在其他情况下可能会非常困难。
本章将涵盖以下内容:
-
详细程度概述
-
详细程度计算语法及其变体
-
FIXED详细程度计算示例 -
INCLUDE详细程度计算示例 -
EXCLUDE详细程度计算示例
详细程度概述
详细程度是什么意思?这取决于术语的使用上下文。在 Tableau 中,我们将区分几种不同的详细程度,每种程度都至关重要,必须理解它们才能正确地分析数据:
-
数据详细程度:有时被称为数据的 粒度,这是由数据集中的一条记录定义的详细程度。当你能够阐明一条记录代表什么时(例如,“每条记录代表一个订单”或“每个客户有一条记录”),那么你就对数据的详细程度有了很好的理解。逐行计算在这一层次操作。
-
视图详细程度:我们之前讨论过,作为视图中维度的字段组合定义了视图的详细程度。通常,在视图中,Tableau 会为视图中所有维度的每个唯一值组合绘制一个标记(例如条形图或圆形)。例如,如果视图中的两个维度是 客户 和 年份,则 Tableau 会为数据中每个存在的 客户/年份 组合绘制一个标记(前提是没有被筛选器排除)。聚合计算在这一层次操作。
-
计算的详细程度:这是由计算定义的一个单独的详细程度。正如我们所看到的,你可以使用任意数量的维度来定义详细程度。详细程度计算用于定义这个层次。
考虑以下数据集,每条记录对应一个客户,数据详细程度为每个客户一条记录:
| 客户 | 州 | 会员日期 | 会员等级 | 订单数 |
|---|---|---|---|---|
| Neil | Kansas | 2009-05-05 | Silver | 1 |
| Jeane | Kansas | 2012-03-17 | Gold | 5 |
| George | Oklahoma | 2016-02-01 | Gold | 10 |
| Wilma | Texas | 2018-09-17 | Silver | 4 |
在这种情况下,每条记录定义了一个唯一的客户。如果我们执行逐行计算,例如使用 DATEDIFF('year', [Membership Date], TODAY()) 来确定每个客户成为会员的年数,那么结果将按记录计算。
现在考虑一个由数据创建的视图,该视图的 视图级别详细程度 是州:
图 5.1:州的视图级别详细程度
作为视图中唯一的维度,State 定义了视图的详细程度。每个州有一个标记,计算和用作聚合的字段,例如 SUM(Orders),将按州执行。
基于这一特定观点,我们可能希望通过提出额外的问题来增强我们的理解,例如以下问题:
-
哪个客户是视图中每个州的第一个成员?
-
各州的订单数量与所有州的平均订单数量相比如何?
-
哪个会员级别在各州的订单数量最高或最低?
在每种情况下,问题涉及的详细程度不同于视图(每个州的最小会员日期与每个客户的比较、所有订单的平均数与各州订单的比较,以及每个州每个会员级别的最小或最大订单数)。在某些情况下,构建一个新的视图来回答这些问题可能是有意义的。但有时我们希望补充现有视图或在同一视图中比较不同的详细程度。详细程度计算提供了解决方案!
详细程度计算
在进入使用详细程度计算的实际示例之前,让我们先花一点时间理解详细程度计算的语法和类型。
详细程度语法
详细程度计算遵循以下基本语法模式:
{FIXED|INCLUDE|EXCLUDE [Dim 1],[Dim 2] : AGG([Field])}
前面声明的定义如下:
-
FIXED、INCLUDE和EXCLUDE是指示详细程度计算类型的关键字。我们将在接下来的章节中考虑这些差异。 -
Dim 1、Dim 2(以及所需的其他维度)是以逗号分隔的维度字段列表,定义了执行计算时的详细程度。 -
AGG是你希望执行的聚合函数(例如SUM、AVG、MIN和MAX)。 -
Field是将根据你选择的聚合方法进行聚合的值。
详细程度类型
Tableau 中使用三种类型的详细程度计算:FIXED、INCLUDE 和 EXCLUDE。
FIXED
Fixed 详细程度表达式在代码中指定的维度列表定义的详细程度下工作,而不考虑视图中包含的维度。例如,以下代码返回各州的平均订单数量,无论视图中包含其他哪些维度:
{FIXED [State] : AVG([Orders])}
你可以根据需要包括任意多的维度,或者完全不包括任何维度。以下代码表示对数据源中整个数据集的平均订单数进行的固定计算:
{FIXED : AVG([Orders])}
或者,你也可以用以下方式编写计算,结果相同:
{AVG([Orders])}
没有指定维度的固定详细程度表达式有时被称为表格范围的固定详细程度表达式,因为在计算中定义的聚合将适用于整个表格。
INCLUDE
包含详细程度表达式会在视图中由维度确定的详细程度层级上进行聚合,同时包括代码中列出的维度。例如,以下代码计算的是在视图中由维度定义的详细程度层级上的平均订单数,但即使Membership Level不在视图中,依然包括Membership Level这一维度:
{INCLUDE [Membership Level] : AVG([Orders])}
EXCLUDE
排除详细程度表达式会在由视图中的维度决定的详细程度层级上进行聚合,排除代码中列出的任何维度。例如,以下代码计算的是在视图中定义的详细程度层级上的平均订单数,但不包括Customer维度,即使Customer在视图中存在:
{EXCLUDE [Customer] : AVG([Orders])}
详细程度差异的示意图
在分析数据时,你可能常常会想,数据片段是如何与整体情况相关联的。例如,你可能会想,视图中每个州的订单数量是如何与总体平均订单数相关的。一种快速且简单的方式是通过从分析标签中拖放,向视图中添加一个平均线,操作如下:
图 5.2:向视图添加平均线
你最终会得到如下的平均线:
图 5.3:总体平均值报告为 6.66667。这是每个州的平均值
但是,6.66667真的是总体的平均订单数吗?事实证明,并不是。它实际上是每个州的订单数量之和的平均值:(6 + 10 + 4) / 3。很多时候,那条平均线(即每个州的订单总数的平均值)正是我们在使用聚合数据时希望对比的内容。
但是有时候,我们可能希望计算真实的总体平均值。为了获得整个数据集中的平均订单数,我们可以考虑创建一个名为Overall Average Number of Orders的计算,并使用类似下面的固定详细程度计算:
{FIXED : AVG([Orders])}
将该计算字段添加到标记卡的详细信息部分,并将参考线编辑为使用该字段,给我们带来了不同的结果:
图 5.4:每位客户的真实总体平均订单数是 5
你会回忆起原始数据集有四条记录,快速检查可以验证这个结果:
(1 + 5 + 10 + 4) / 4 = 5
现在我们已经研究了详细程度计算如何带来实际差异;接下来让我们看一些实际的例子。
固定详细程度计算的示例
当我们将注意力转向一些关于细节级别计算的实际示例时,我们将使用Chapter 05 Loans数据集,该数据集包含在Chapter 05工作簿中。真实的数据集包含更多的记录,但这里是它所包含的某些数据示例:
| 日期 | 投资组合 | 贷款类型 | 余额 | 开盘日期 | 成员姓名 | 信用评分 | 年龄 | 州 |
|---|---|---|---|---|---|---|---|---|
| 3/1/2020 | 汽车贷款 | 新车贷款 | 15987 | 9/29/2018 | Samuel | 678 | 37 | 加利福尼亚州 |
| 7/1/2020 | 抵押贷款 | 第一抵押贷款 | 96364 | 8/7/2013 | Lloyd | 768 | 62 | 俄亥俄州 |
| 3/1/2020 | 抵押贷款 | 房屋净值信贷(HELOC) | 15123 | 4/2/2013 | Inez | 751 | 66 | 伊利诺伊州 |
| 3/1/2020 | 抵押贷款 | 第一抵押贷款 | 418635 | 9/30/2015 | Patrick | 766 | 60 | 俄亥俄州 |
| 5/1/2020 | 汽车贷款 | 二手车贷款 | 1151 | 10/22/2018 | Eric | 660 | 44 | 宾夕法尼亚州 |
| … | … | … | … | … | … | … | … | … |
| … | … | … | … | … | … | … | … | … |
数据集代表银行、信用合作社或类似金融机构中成员的贷款历史数据。每条记录是贷款的月度快照,包含快照日期以及描述贷款的字段(投资组合,贷款类型,余额,和开盘日期)和描述成员的字段(姓名,信用评分,年龄,和州)。
与前几章一样,目标是理解关键概念和一些关键模式。以下仅是细节级别计算所呈现的所有可能性中的几个示例。
某个成员是否曾经处于风险中?
假设分行管理层已确定,任何曾经有过信用评分低于 550 的成员都被视为处于风险中,并有资格获得特别帮助。考虑以下三位个体的历史记录:
图 5.5:三位信用评分低于 550 的个体,信用评分低于阈值的部分通过箭头标出
每个月,都会记录新的历史快照。贷款余额通常会随着成员的信用评分变化。一些成员从未处于风险中。第一个成员 Vicki,她的最低信用评分为 699,且从未处于风险中。然而,Charles 和 Thomas 在历史中都有信用评分低于阈值的时段(在前述截图中以箭头标出)。
一个简单的行级计算,例如[Credit Score] < 550,可以识别每条记录,其中信用评分的月度快照显示存在风险。但那些信用评分在阈值上下波动的成员,其记录会交替为TRUE或FALSE。
我们希望给定成员的每一条记录如果任何记录低于阈值,则为TRUE,如果没有记录低于阈值,则为FALSE。
一种解决方案是使用一个细节级别计算,我们将其命名为Member Ever at Risk?,其代码如下:
{FIXED [Member ID] : MIN([Credit Score])} < 550
该计算确定了每个成员的最低信用分数,并将其与 550 的风险阈值进行比较。对于给定成员的每一条记录,结果是相同的,如下所示:
图 5.6:给定成员的所有记录中,Member Ever at Risk? 字段的值为 True 或 False
请注意,每条记录都包含相关成员的计算结果。这说明了固定细节层级计算的一个关键概念:虽然计算是在定义的细节层级上进行的聚合,但结果是在行级别上的。也就是说,TRUE 或 FALSE 的值是在成员级别计算的,但这些结果作为行级别的值对于该成员的每条记录都是可用的。
这为各种分析可能性提供了支持,例如:
-
仅过滤出处于风险中的成员,同时保留其历史的所有记录。如果你改为基于个人信用评分进行过滤,那么你将丧失那些信用评分高于阈值的历史记录。那些记录可能对你的分析至关重要。
-
正确统计成员是否处于风险中,并避免在历史波动的情况下将同一成员同时计入两种情况。
-
比较不同细节层级下处于风险中和不处于风险中的成员。例如,这个视图展示了按投资组合分类的处于风险中和不处于风险中的成员数量:
图 5.7:我们可以通过一些交互展示有多少比例的成员曾经处于风险中
固定细节层级计算是上下文敏感的。也就是说,它们在某个上下文中进行操作,这个上下文要么是 1) 整个数据集,要么是 2) 由上下文过滤器定义的(即选择了下拉菜单中的添加到上下文选项的过滤器)。在这个例子中,这意味着如果不使用上下文过滤器,每个成员的计算值将不会发生变化。以 Thomas 为例,即使你应用了仅保留 2020 年 3 月之后的日期的普通过滤器,他仍然会被认为处于风险中。因为固定细节层级计算会跨整个数据集进行工作,并在 1 月和 2 月找到处于风险中的值。如果你将这种过滤器添加到上下文中,结果可能会发生变化。理解固定细节层级计算的这种行为有助于分析,但如果没有理解,也可能导致意外的行为。
这是通过细节层级计算简化的分析类型的一个示例。我们还能做更多的事情,接下来会看到另一个示例!
给定成员的最新余额
许多数据集包含一系列事件或交易历史。你可能会提出如下问题:
-
患者第一次去医院时常见的诊断是什么?
-
网络中每台计算机的最后一次报告状态是什么?
-
每个客户在他们的最后一笔订单上花费了多少?
-
本周的第一笔交易与最后一笔交易相比,赚了多少?
这些问题不仅仅是在问最早或最新的事件发生了什么。简单的MIN或MAX日期聚合就能提供答案。但这些问题的复杂性在于,除了要求最早或最新日期的详细信息外,还要求关于这些日期发生的更多内容。对于这类问题,详细级别计算提供了一种得出答案的方式。
请考虑以下三位成员的数据,这些数据包含在Chapter 05 Loans数据集中:
图 5.8:贷款数据集中三位选定成员的数据
每个成员都有每个贷款的余额历史。然而,每个贷款的最新历史日期是不同的。凯利的最新余额是七月,约瑟夫的最新余额是八月。杰拉尔德有两个贷款:第一个的最新余额是七月,第二个是九月。
如果你只想识别代表成员最新已知余额的记录怎么办?你可以考虑使用一个固定的详细级别计算,名为Latest Date per Member/Loan,代码如下:
{FIXED [Member ID],[Loan Number] : MAX([Date])} = [Date]
这决定了每个成员每个贷款的最大日期,并将结果与每行的日期进行比较,匹配时返回TRUE,否则返回FALSE。
在前面的计算中,使用了两个维度来定义详细级别,因为一个成员可能有多个贷款。如果你为每个贷款拥有唯一标识符,你也可以使用该标识符作为定义详细级别的单一维度。为了准确利用详细级别计算,你需要对数据有充分的理解。
你可以在这里查看计算结果:
图 5.9:每个贷款每个人的最新日期通过计算的True值表示
如果你想要确定每个贷款的第一条记录,你只需将代码中的MAX改为MIN。你可以将详细级别计算的行级TRUE / FALSE结果作为过滤器,只保留最新的记录,或作为其他计算的一部分来完成分析,比如比较、起始余额和结束余额。
该计算展示的技术有许多应用场景。在数据逐步传入的情况下,你可以识别出最新的记录。在记录重复的情况下,你可以过滤掉,只保留第一条或最后一条记录。你可以识别客户的首次或最后一次购买。你还可以将历史余额与原始余额进行比较,等等!
我们刚刚看到如何利用固定详细级别计算来回答一些复杂的问题。接下来,我们将继续查看包含详细级别表达式。
包含详细级别表达式的示例
包含详细层次计算在你需要在低于(更详细的)视图层次进行某些计算时非常有用。让我们来看一个例子。
每个成员的平均贷款数
有些成员只有一笔贷款,有些则有两笔、三笔,甚至可能更多。如果我们想按州查看每个成员平均有多少笔贷款,该如何进行呢?让我们考虑一下该如何操作。
我们从一个视图层次为州的工作表开始:
图 5.10:示例的起点—按州填充的地图
可视化每个州的平均信用评分或平均余额是相对简单的。但如果我们想要可视化每个州每个成员的平均贷款数量呢?虽然有多种方法可以解决这种问题,但我们将在此考虑使用以下名为每个成员的贷款数量的详细层次表达式:
{INCLUDE [Member ID] : COUNTD([Loan Number])}
这段代码返回了一个独特的贷款数量统计,统计的细节层次包括成员 ID 以及定义视图层次的所有维度(在此案例中是州)。当我们将计算添加到视图时,我们需要决定如何进行聚合。在此案例中,我们想要每个成员的平均贷款数量,因此我们将在字段的下拉菜单中选择度量 | 平均值,这将揭示一个有趣的地理模式:
图 5.11:使用包含详细层次计算创建颜色渐变,以显示每个成员的平均贷款数
在你思考包含详细层次计算如何工作的同时,你可能想要在此层次构建一个交叉表:
图 5.12:交叉表有助于说明如何将贷款的独特统计数用作平均值的基础
州,在行上的第一个维度,来自视图层次。成员 ID已被包含在交叉表中,以模拟包含在详细层次表达式中的维度。COUNTD(Loan Number)给出了每个成员的贷款数。将所有州内成员的值求平均,得到该州的平均数。快速检查北达科他州,我们得到每个成员平均 1.2 笔贷款,这与地图可视化完全一致。
在这种情况下,包含详细层次表达式为我们提供了一个有用的解决方案。虽然有其他的替代方法,但在考虑如何解决类似问题时,思考这些方法是非常有帮助的。我们接下来将考虑这些方法。
替代方法
值得注意的是,上面的数据集实际上允许你使用MAX([Loan Number]),而不是COUNTD([Loan Number]),因为贷款数会根据每个成员有多少笔贷款而递增。最大值与该成员的贷款数是相同的。在一个显著大的数据集中,MAX计算的性能会更好。
解决此问题还有一些其他方法,例如计算。例如,您可以编写以下代码:
COUNTD(STR([Member ID]) + "_" + STR([Loan Number]))
/
COUNTD([Member ID])
此代码计算贷款的唯一计数,并将其除以成员的唯一计数。为了计算贷款的唯一数量,代码通过将成员 ID 和贷款编号的字符串连接起来创建唯一键。
聚合计算的替代方法具有在视图的任何详细级别上都能工作的优势。您可能会发现详细级别计算或聚合计算更容易理解,您需要决定哪种方法能帮助您更好地保持思维流畅,在处理当前问题时更加得心应手。
另一种方法是使用固定的详细级别表达式,例如:
{FIXED [State],[Member ID] : COUNTD([Loan Number])}
此计算与包含表达式产生相同的详细级别,并使用相同的贷款编号的唯一计数。结果发现,在此数据集中,每个成员只属于一个州,因此州不一定需要包含在固定的详细级别表达式中。然而,如果您想改变详细级别,您需要调整计算,而使用包含表达式时,只需向视图中添加或删除维度即可。
在考虑了包含示例和一些替代方法后,让我们将注意力转向排除详细级别计算的示例。
排除详细级别计算的示例
排除详细级别计算在您希望在比视图详细级别更高(较少详细)的级别上执行某些计算时非常有用。以下示例将演示我们如何利用此功能。
每种贷款类型的平均信用评分
在此示例中,我们将回答以下问题:给定贷款类型的平均信用评分如何与整个投资组合的总体平均信用评分进行比较?
请看以下视图,其中显示了每种贷款类型的平均信用评分(其中贷款类型按投资组合分组):
图 5.13:此交叉表显示每种贷款类型的平均信用评分
如果我们想将每种贷款类型的平均信用评分与整个投资组合的总体平均信用评分进行比较怎么办?我们可以通过如下所示的排除详细级别计算来实现这一点:
{EXCLUDE [Loan Type] : AVG([Credit Score])}
这将贷款类型从详细级别中移除,平均值仅在投资组合级别计算。这为我们提供了如下结果:
图 5.14:排除详细级别表达式删除了贷款类型,因此平均值仅在投资组合级别计算
你会注意到,排除贷款类型的平均值会为每个贷款类型重复。这是预期中的结果,因为整体平均值是在投资组合级别,而不受贷款类型的影响。按现有方式,这也许不是最有用的视图。但我们可以稍微扩展计算,以便给出整体投资组合平均值与每个贷款类型的平均值之间的差异。代码如下所示:
AVG([Credit Score]) - AVG([Average Credit Score Excluding Loan Type])
这个计算会在视图的详细级别(贷款类型和投资组合)上取平均值,并减去投资组合级别的平均值,从而给出每个贷款类型的平均值与整个投资组合平均值之间的差异。我们可以重新排列视图,像这样直观地查看结果:
图 5.15:最终视图显示了贷款类型平均信用评分与整体投资组合平均值之间的差异
排除详细级别表达式使我们能够分析视图级别的详细信息与更高层次详细信息之间的差异。
总结
详细级别表达式极大扩展了你在计算中能做到的事情。你现在拥有了一个在不同详细级别处理数据的工具集。通过固定详细级别计算,你可以识别出系列中的第一个或最后一个事件,或者判断某个条件在整个数据子集中的状态。通过包含表达式,你可以在较低的详细级别进行工作,然后在视图中汇总这些结果。通过排除表达式,你可以在更高的详细级别进行工作,极大地扩展了分析的可能性。
在下一章中,我们将探讨最后一种主要的计算类型:表格计算。这些计算在解决问题的能力上是最强大的,它们为深入分析开辟了难以置信的可能性。实际上,它们从非常简单到极其复杂不等。
第六章:深入探讨表格计算
表格计算是 Tableau 中最强大的功能之一。它们能实现那些通过其他方式无法完成的解决方案(除非编写自定义应用程序或复杂的自定义 SQL 脚本!)。这些功能包括以下内容:
-
它们使得即使数据结构不佳,依然能快速得出结果,而无需等待有人修复数据源中的数据。
-
它们使得可以在结果表的各行之间比较并对聚合值进行计算。
-
它们为分析、创造性地解决问题、突出洞察或改善用户体验打开了令人难以置信的可能性。
表格计算的复杂度各异,从非常容易创建(只需几次点击)到极其复杂(例如,需要理解定位、分区和数据密集化等概念)。在本章中,我们将从简单的开始,逐步深入复杂的内容。目标是为创建和使用表格计算奠定坚实的基础,理解它们的工作原理,并查看一些使用示例。我们将探讨以下内容:
-
表格计算概览
-
快速表格计算
-
范围和方向
-
定位和分区
-
自定义表格计算
-
实际示例
本章中的示例将使用我们在第一章中使用的 Superstore 示例数据。要跟随示例操作,请使用 Chapter 06 Starter.twbx 工作簿。
表格计算概览
表格计算与 Tableau 中的所有其他计算不同。行级、聚合计算和 LOD 表达式(我们在前几章中探讨过)是在查询数据源的过程中执行的。如果你检查 Tableau 发送到数据源的查询,你会发现计算的代码已转换为数据源使用的任何 SQL 实现。
另一方面,表格计算是在初始查询后执行的。这里有一个图表,展示了在 Tableau 缓存中如何存储聚合结果:
图 6.1:表格计算在 Tableau 的聚合数据缓存中计算
表格计算是在 Tableau 缓存中的聚合数据表上执行的,数据可视化渲染之前进行。如我们所见,这对于多个原因很重要,包括以下几点:
-
聚合:表格计算作用于聚合数据。在表格计算中,无法引用字段而不将其作为聚合字段来引用。
-
筛选:常规筛选器将在表格计算之前应用。这意味着表格计算仅会应用于从数据源返回到缓存的数据。你需要避免筛选掉任何对表格计算至关重要的数据。
-
表格计算过滤(有时称为延迟过滤):作为过滤器使用的表格计算将在数据源返回聚合结果后应用。顺序很重要:行级和聚合级过滤器首先应用,聚合数据返回到缓存中,然后应用表格计算作为过滤器,从而有效地将数据从视图中隐藏。这允许一些创造性的方式来解决某些类型的问题,我们将在本章后面的示例中讨论这些问题。
-
性能:如果你正在使用与企业数据库服务器的实时连接,则行级和聚合级计算将利用企业级硬件。表格计算是在缓存中执行的,这意味着它们将在运行 Tableau 的机器上执行。如果你的表格计算是在十几行甚至数百行的聚合数据上运行,或者你预计会发布到强大的 Tableau 服务器上,那么你可能不需要担心性能问题。然而,如果你在本地机器上返回数十万行的聚合数据,那么你需要考虑表格计算的性能。同时,也有一些情况,表格计算可以用来避免在数据源处执行昂贵的过滤或计算。
了解了表格计算的概述后,我们来看看一些创建表格计算的选项。
创建和编辑表格计算
在 Tableau 中,有几种创建表格计算的方法,包括:
-
在视图中,使用任何作为数值聚合的活动字段,选择快速表格计算,然后选择所需的计算类型。
-
在视图中,使用任何作为数值聚合的活动字段,选择添加表格计算,然后选择计算类型,并调整任何所需的设置。
-
创建一个计算字段,并使用一个或多个表格计算函数来编写你自己的自定义表格计算。
前两个选项创建一个快速表格计算,可以通过字段上的下拉菜单编辑或删除,选择编辑表格计算... 或 清除表格计算。第三个选项创建一个计算字段,可以像编辑或删除其他计算字段一样进行编辑或删除。
在视图中的架子上使用表格计算的字段,或者使用表格计算函数的计算字段,将会显示增量符号图标(),如下所示。
without a table calculation:
图 6.2:未应用表格计算的活动字段
以下是应用了表格计算的活动字段:
图 6.3:应用了表格计算的活动字段包括增量符号
本章中的大多数示例将使用文本表/交叉制表报告,因为这些最接近缓存中的实际聚合表。这样可以更容易地看到表格计算的工作方式。
表格计算可用于任何类型的可视化。然而,在构建使用表格计算的视图时,特别是更复杂的视图时,请尝试在行架上使用具有所有维度的表格,然后在维度的右侧作为离散值添加表格计算。一旦您的所有表格计算按预期工作,您可以重新排列视图中的字段,以获得适当的可视化效果。
现在我们将从创建表格计算的概念转移到一些示例。
快速表格计算
快速表格计算是预定义的可应用于视图中用作度量的字段的表格计算。这些计算包括常见且有用的计算,如Running Total、Difference、Percent Difference、Percent of Total、Rank、Percentile、Moving Average、YTD Total(年度总计)、Compound Growth Rate、Year over Year Growth和YTD Growth。您可以在视图中用作度量的字段的下拉列表中找到适用的选项,如下图所示:
图 6.4:使用下拉菜单,您可以从视图中的聚合字段快速创建表格计算。
考虑以下使用示例Superstore Sales数据的示例:
图 6.5:第一个 SUM(Sales)字段是普通聚合。第二个已应用了 Running Total 快速表格计算的 SUM(Sales)字段。
在此处,显示了随时间变化的销售额。销售额已放置在行架上两次,并且第二个SUM(Sales)字段已应用了running total快速表格计算。使用快速表格计算意味着不需要编写任何代码。
您可以通过双击视图中的表格计算字段来查看快速表格计算使用的代码。这将其转换为临时计算。您还可以将应用了快速表格计算的活动字段拖动到数据窗格中,这将其转换为可以在其他视图中重复使用的计算字段。
以下表格演示了一些快速表格计算:
图 6.6:第一列中的销售额简单是 SUM(Sales)。另外三列显示应用的各种表格计算(Running Sum、Difference、Rank)。
尽管创建快速表格计算非常容易,但理解一些基本概念是至关重要的。接下来我们将详细查看这些概念,首先从相对和固定表格计算之间的区别开始。
相对与固定
不久我们将详细查看细节,但首先重要的是理解表格计算可能以以下两种方式之一计算:
-
相对:表计算将相对于表的布局进行计算。它们可能在表格中横向或纵向移动。重新排列维度以改变表格的方式会改变表计算的结果。正如我们将看到的,相对表计算的关键是范围和方向。当你设置表计算为使用相对计算时,即使重新排列视图,它也会继续使用相同的相对范围和方向。(这里的术语与 UI 中某些快速表计算中出现的相对于不同。)
-
固定:表计算将使用一个或多个维度进行计算。重新排列视图中的这些维度不会改变表计算的结果。在这种情况下,范围和方向保持固定于一个或多个维度,无论它们在视图中如何移动。当我们讨论固定表计算时,我们将重点讨论分区和地址的概念。
你可以在用户界面中看到这些概念。以下是表计算编辑器,当你从表计算字段的菜单中选择编辑表计算时会出现:
图 6.7:编辑表计算 UI 展示了相对和固定表计算之间的差异
我们将更详细地探讨这些选项和术语,但现在请注意,相关选项用于指定相对于行和列计算的表计算,以及固定计算到视图中某些维度的表计算选项。
接下来,我们将讨论范围和方向,这描述了相对表计算的操作方式。
范围和方向
范围和方向是描述表计算如何相对于表格计算的术语。具体来说,范围和方向指以下内容:
-
范围:范围定义了给定表计算可以引用其他值的边界。
-
方向:方向定义了表计算在范围内的移动方式。
你已经看过表计算的计算方式表格(横向)(图 6.5中的销售额随时间的累计总和)和表格(纵向)(图 6.6中)。在这些情况下,范围是整个表格,方向是横向或纵向。例如,运行总和计算横向遍历整个表格,逐步加上从左到右的后续值。
要为表计算定义范围和方向,使用视图中字段的下拉菜单并选择计算方式。你将获得一个选项列表,具体取决于维度在视图中的位置,这些选项会略有不同。列表中的第一个选项允许你相对于表格定义范围和方向。在单元格选项之后,你将看到视图中存在的维度列表。我们将在下一节中查看这些维度。
相对于表格的作用域和方向选项如下:
-
作用域选项:表格,窗格,单元格
-
方向选项:纵向,横向,先纵向后横向,先横向后纵向
为了理解这些选项,请参考以下示例:
图 6.8:视图中表格、窗格和单元格的区别
在表格计算的作用域方面,Tableau 做出了以下区分:
-
表格是整个汇总数据集。
-
窗格是整个表格的一个较小部分。严格来说,它由表格的倒数第二级定义;也就是说,行和/或列架上的倒数第二个维度定义了窗格。在前面的图像中,可以看到年份在行和区域在列的交点定义了窗格(视图中高亮显示了八个窗格中的一个)。
-
单元格由表格的最低级别定义。在这个视图中,一个区域内的一个部门与一个年份内的一个季度交点形成一个单元格(视图中高亮显示了 96 个单元格中的一个)。
前面截图中被界定的区域由作用域定义。作用域(以及我们将看到的,分区)定义了数据中的窗口,这些窗口包含了各种表格计算。窗口函数,特别是WINDOW_SUM(),在这些窗口的作用域内工作。
使用作用域和方向
为了了解作用域和方向是如何协同工作的,让我们通过一些例子来演示。我们将从创建自定义表格计算开始。创建一个名为Index的新计算字段,代码为Index()。
Index()是一个表格计算函数,它从1开始,并在给定的方向和作用域内递增。Index()有许多实际应用,但我们在这里使用它,因为很容易看到它在给定作用域和方向下的移动。
创建如图 6.8所示的表格,年份(订单日期)和季度(订单日期)放在行上,区域和部门放在列上。不要将销售额放入视图中,而是将新创建的Index字段添加到文本架上。然后,使用Index字段上的下拉菜单,选择计算方式,以切换不同的作用域和方向组合。在以下示例中,我们只保留了东部和西部区域以及2015年和2016年:
-
表格(横向):这是 Tableau 在表格中有列时的默认设置。请注意,以下内容中Index是如何在整个表格中横向递增的:
图 6.9:表格(横向)
-
表格(纵向):使用
table (down)时,Index在整个表格中按纵向递增:图 6.10:表格(纵向)
-
表格(先横向后纵向):这使得Index先横向递增,然后向下递增,再继续横向递增,整个表格都按此方式重复:
图 6.11:表(先横向再纵向)
-
面板(横向):这定义了索引的边界,并使其横向递增,直到到达面板边界,此时索引会重新开始:
图 6.12:面板(横向)
-
面板(纵向):这定义了索引的边界,并使其纵向递增,直到到达面板边界,此时索引会重新开始:
图 6.13:面板(纵向)
-
面板(先横向再纵向):这使得索引在面板内横向递增,并继续纵向递增。面板在这里定义了边界:
图 6.14:面板(先横向再纵向)
你可以将作用域和方向与任何表计算一起使用。考虑一下如何使用相同的移动和边界计算运行总计或百分比差异。继续尝试不同的选项,直到你熟悉作用域和方向的工作原理。
作用域和方向相对于表格操作,因此你可以重新排列字段,计算仍然会在你定义的相同作用域和方向下进行。例如,你可以将订单日期年份与部门交换,仍然可以根据你定义的作用域和方向查看索引的计算结果。
接下来,我们将查看与固定在某些维度上的表计算对应的概念。
寻址和分区
寻址和分区与作用域和方向非常相似,但通常用来描述如何根据视图中某些字段的绝对引用计算表计算。使用寻址和分区时,你定义视图中哪些维度用于寻址(方向),而其他维度则用于分区(作用域)。
使用寻址和分区可以提供更精细的控制,因为你的表计算不再依赖于表格布局,你有更多的选项来微调计算的作用域、方向和顺序。
要开始理解这个是如何工作的,我们先来看一个简单的例子。在前面的视图中,从索引字段的下拉菜单中选择编辑表计算。在弹出的对话框中,在特定维度下勾选部门。
选择部门的结果如下:
图 6.15:设置表计算为使用特定维度进行计算,使用了寻址和分区
你会注意到,Tableau 正在沿着(在)选中的维度部门计算索引。换句话说,你已使用部门进行寻址,因此每个新的部门都会增加索引。视图中所有其他未选中的维度隐式用于分区;也就是说,它们定义了索引功能必须重新开始的作用域或边界。正如我们在作用域中看到的,这些边界有时被称为窗口。
上述视图看起来与如果你将索引设置为基于**面板(横向)进行计算时相同。但是,它们有一个重大区别。当你使用面板(横向)**时,索引总是沿着面板计算,即使你重新排列视图中的维度,移除某些维度或添加新的维度,索引仍然会按面板进行计算。
但是,当你使用某一维度进行地址计算时,表格计算将始终基于该维度进行计算。移除该维度将导致表格计算无法正常工作(字段会变成红色并显示感叹号),此时你需要通过下拉菜单编辑表格计算以调整设置。如果你在视图中重新排列维度,索引将继续沿着部门维度进行计算。
例如,点击工具栏中的交换行和列按钮后的结果如下:
图 6.16:交换行和列不会改变该表格计算的计算方式,因为它是固定在维度上的,而不是表格布局上
请注意,尽管表格的整体方向发生了变化,索引仍然继续沿着部门进行计算。为了完成接下来的示例,我们将撤销行和列的交换,恢复表格的原始方向。
使用地址和分区
让我们再看几个添加额外维度后会发生的例子。例如,如果你勾选了订单日期的季度,你将看到 Tableau 突出显示一个由地区和订单日期的年份定义的分区,索引将按订单日期的季度和部门的地址字段递增:
图 6.17:添加维度改变了表格计算的行为。一个结果分区被突出显示
如果你选择部门和订单日期的年份作为索引的地址,你将看到一个由地区和季度定义的单一分区,如下所示:
图 6.18:更改已选维度改变了表格计算的行为。一个结果分区被突出显示
你会注意到,在此视图中,索引会根据季度和地区分区内的年份和部门的每种组合递增。
以下是在使用地址和分区时需要考虑的其他事项:
-
你可以指定排序顺序。例如,如果你希望索引根据销售总额的值递增,你可以使用表格计算编辑器底部的下拉列表来定义自定义排序。
-
在编辑表格计算对话框中的在级别选项允许您指定执行表格计算的级别。大多数情况下,您将将其保持在最深层(这与将其设置为最底层维度相同),但偶尔,如果需要避免某些维度定义分区,但需要在更高层次应用表格计算,您可能希望将其设置为不同的级别。您还可以通过在特定维度的复选框列表中拖放来重新排序维度。
-
每次重启... 选项实际上会使选定字段以及该选定字段上方所有维度成为分区的一部分,但允许您保持对排序的微调。
-
维度是唯一可以用于寻址的字段类型;然而,离散(蓝色)度量可以用于划分表格计算。要启用此功能,请使用字段上的下拉菜单并取消选中在表格计算中忽略。
花些时间实验各种选项,并熟悉寻址和分区的工作方式。接下来,我们将看看如何编写我们自己的自定义表格计算。
自定义表格计算
在我们开始一些实际示例之前,先简要讨论一下如何编写自己的表格计算,而不是使用快速表格计算。您可以通过创建一个新计算,并在函数下拉列表中选择表格计算来查看可用的表格计算函数列表。
对于每个示例,我们将设置计算方式 | 类别。这意味着部门将作为分区。
您可以将表格计算分解为几个类别。以下表格计算可以像其他函数一样组合甚至嵌套。
元表格函数
这些是提供有关分区和寻址信息的函数。这些函数还包括索引、第一个、最后和大小:
-
索引给出在分区内寻址时的增量。
-
第一个给出分区中第一行的偏移量,因此每个分区中的第一行为0,下一行为**-1**,接下来是**-2**,以此类推。
-
最后给出分区中最后一行的偏移量,因此每个分区中的最后一行为0,倒数第二行为1,接下来是2,以此类推。
-
大小给出分区的大小。
以下图片展示了各种函数:
图 6.19:元表格计算
索引、第一个和最后都受到范围/分区和方向/寻址的影响,而大小将在分区的每个地址上给出相同的结果,无论指定了什么方向。
查找和前一个值
这两个函数中的第一个允许你引用其他行中的值,而第二个允许你将值向前传递。从以下截图可以看出,方向对这两个函数非常重要:
图 6.20:查找和 Previous_Value 函数(尽管 Previous_Value 包含下面描述的额外逻辑)
这两种计算都是通过类别来定位的(因此部门是分区)。
这里,我们使用了代码 Lookup(ATTR([Category]), -1),它查找当前行上偏移 -1 的类别值。每个分区中的第一行会得到 NULL 结果(因为它之前没有行)。
对于 Previous_Value,我们使用了以下代码:
Previous_Value("") + "," + ATTR([Category])
请注意,在每个分区的第一行中,没有前一个值,因此 Previous_Value() 仅返回我们指定的默认值:空字符串。然后它与逗号和该行的类别拼接,得到值 书柜。
在第二行中,书柜是前一个值,它与逗号及该行的类别一起拼接,得出值 书柜, 椅子与椅垫,然后这个值成为下一行的前一个值。这个模式在整个分区中继续进行,然后在由部门 办公用品 定义的分区中重新开始。
运行函数
这些函数沿方向/定位运行,包括 Running_Avg()、Running_Count()、Running_Sum()、Running_Min() 和 Running_Max(),如下所示:
图 6.21:运行函数
请注意,Running_Sum(SUM[Sales])) 会继续将销售总和加到每个分区行的累计总和中。Running_Min(SUM[Sales])) 在遍历分区中的各行时,会保持遇到的最小销售总和。
窗口函数
这些函数一次性操作整个分区的所有行,基本上是对聚合结果进行聚合。它们包括 Window_Sum、Window_Avg、Window_Max 和 Window_Min 等,如下截图所示:
图 6.22:窗口函数示例
Window_Sum(SUM([Sales]) 对整个窗口内的销售额求和(在此情况下,为部门内所有类别的销售额)。Window_Max(SUM([Sales]) 返回窗口内销售额的最大总和。
你可以向窗口函数传递可选参数,以进一步限制窗口的范围。窗口始终最多限制在分区内。
排名函数
这些函数提供了基于聚合值的多种排名方式。排名有多种变体,允许你决定如何处理并列项以及排名的密集程度,如下截图所示:
图 6.23:排名函数示例
Rank(SUM([Sales]))计算返回部门内各类别销售额总和的排名。
脚本函数
这些函数允许与 R 分析平台或 Python 集成,任一平台都可以包含从高级统计到预测建模的简单或复杂脚本。深入探讨所有可能的功能超出了本书的范围,但文档和示例可以在 Tableau 的官网和 Tableau 社区的各种成员处轻松获取。
比如,Bora Beran 有一篇很棒的帖子:www.tableau.com/about/blog/2016/11/leverage-power-python-tableau-tabpy-62077
Total 函数
Total函数值得单独列出,因为它的功能与其他函数略有不同。与在缓存中的聚合表上工作的其他函数不同,Total会重新查询构成给定分区的所有源数据行。在大多数情况下,这将产生与窗口函数相同的结果。
例如,Total(SUM([Sales]))给出的结果与Window_Sum(SUM([Sales]))相同,但Total(AVG([Sales]))可能会与Window_AVG(SUM([Sales]))给出的结果不同,因为Total给出的是真实的底层行的平均值,而Window函数给出的则是各个和的平均值。
在本节中,我们已经了解了许多表计算函数。这些函数将为你提供解决各种实际问题和回答许多问题的构建模块。从排名到年度比较,你现在已经有了成功的基础。接下来,我们将进入一些实际示例。
实际例子
在了解了表计算的一些基本概念之后,我们来看一些实际的例子。我们将举几个例子,尽管表计算的实际应用几乎是无穷无尽的。你可以做从累计和分析年度增长到查看各类别之间的百分比差异等等。
年度增长
你可能经常需要比较年度数据。我们的客户基础在过去一年增长了多少?每个季度的销售额与去年同季度的销售额相比如何?这些问题可以通过同比增长来回答。
Tableau 将同比增长作为快速表计算的一个选项。举个例子,这是一个展示按季度划分的销售额视图,并展示与去年同季度销售额的百分比差异:
图 6.24:销售的同比增长
第二个 Sum(Sales) 字段应用了 年度增长 快速表格计算(并且 标记 类型已更改为条形图)。您会注意到右下角有 >4 个空值 的指示符,这提醒您至少有四个空值(因为没有 2016 年可以与 2017 年的季度进行比较,所以这很合理)。
如果您过滤掉了 2017 年,空值将出现在 2018 年,因为表格计算只能在缓存中存在的汇总数据上操作。任何应用于数据的常规过滤器都在源头上应用,排除的数据永远不会进入缓存。
尽管像这个示例一样构建视图非常简单,但请小心,因为 Tableau 假设视图中的每一年都有相同数量的季度。例如,如果 2017 年的 Q1 数据不存在或被过滤掉,那么结果视图可能不会完全符合您的预期。例如,考虑以下情况:
图 6.25:年度销售增长——但如果第一年缺少 Q1,则无法正常工作
这里的问题是,Tableau 使用 年份 和 季度 作为寻址,并且在 订单日期年份 的 At the Level 值上计算快速表格计算。这在假设所有季度都存在的情况下有效。然而,在这里,2018 年的第一季度被匹配到了 2017 年的第一季度,而实际是 Q2。为了解决这个问题,您需要编辑表格计算,仅使用 年份 作为寻址。然后,季度 成为分区,比较将会在正确的季度之间进行。
另一个需要考虑的问题是:如果您不想在视图中显示 2017 年该怎么办?将其过滤掉会导致 2018 年出现问题。在这种情况下,我们将在本节后面介绍 表格计算过滤 或 延迟过滤。另一种删除 2017 年但仍然保留其数据值的方法是右键点击视图中的 2017 年标题,并选择 隐藏。
隐藏是一个特殊命令,它可以防止 Tableau 渲染数据,即使数据存在于缓存中。如果您在隐藏之后决定重新显示 2017 年,可以使用 订单日期年份 字段的菜单,选择 显示隐藏数据。或者,您可以使用菜单选择 分析 | 显示隐藏数据。
您可能还希望在视图中隐藏空值指示符。您可以通过右键点击指示符并选择 隐藏指示符 来实现。点击指示符后,将显示过滤数据或将其作为默认值(通常为 0)的选项。
年度增长(或任何周期与另一个周期的比较)是一个常见的分析问题,表格计算可以帮助您回答这个问题。接下来,我们来看一个表格计算实际应用的例子。
动态标题与总计
你可能已经注意到每个视图中显示的标题。还有一些标题说明,除非你特别打开它们,否则是不会显示的(要打开这些标题说明,请从菜单中选择工作表 | 显示标题说明)。
默认情况下,标题显示的是工作表名称,标题说明被隐藏,但你可以显示并修改它们。有时,你可能希望显示一些总计,以帮助最终用户理解广泛的背景或立即掌握数据的规模。
例如,下面是一个视图,允许用户选择一个或多个Region,然后查看每个Region中各州的Sales:
图 6.26:两个区域的各州销售情况
显示随着用户选择不同区域而变化的状态数可能会很有用。你可能首先想到对State进行聚合,比如使用Count Distinct。然而,如果你尝试在标题中显示这个聚合值,你会始终看到值为1。为什么?因为视图的详细级别是State,每个州的独立状态数是1!
但是,有些表格计算选项可以让你进一步聚合聚合值。或者,你可能会考虑根据窗口的大小来确定表格中的值的数量。实际上,这里有几种可能性:
-
获取总的不同计数:
TOTAL(COUNTD([State])) -
获取窗口内的总和:
WINDOW_SUM(SUM(1)) -
获取窗口大小:
SIZE()
你可能记得,窗口是由范围或分区确定的边界所定义的。无论我们选择哪种方式,我们都希望将窗口定义为整个表格。使用Table (down)的相对计算或使用所有维度的固定计算都可以实现这一目标。这里是一个展示动态标题和标题说明中三种选项的视图:
图 6.27:可以使用各种表格计算来实现标题中的总计
这个示例说明了你如何使用各种表格计算在更高的细节层次上工作,特别是计数视图中所有的状态。这项技术将帮助你在使用 Tableau 时解决各种分析问题。现在,让我们转向另一种可以解决许多问题的技术。
表格计算过滤(延迟过滤)
假设你构建了一个视图,允许你查看每个部门的总销售额百分比。你已经对Sales字段使用了快速表格计算,得到了总销售额的百分比。你还使用了Department作为过滤器。但这会带来一个问题。
由于表格计算是在聚合数据返回到缓存后执行的,因此部门的过滤器已经在数据源中进行了评估,聚合行不包括任何被过滤器排除的部门。因此,总百分比始终会加起来为 100%;也就是说,这是过滤后总数的百分比,如下截图所示:
图 6.28:当“办公用品”被过滤掉时,百分比表格计算将其余部门的百分比加总为 100%
如果你想看到所有部门的总销售百分比,即使你想排除某些部门的显示,怎么办?一种选择是使用表格计算作为过滤器。
你可能会创建一个名为部门(表格计算过滤器)的计算字段,代码为LOOKUP(ATTR([Department]), 0)。Lookup()函数使其成为表格计算,而ATTR()将部门视为聚合(本节末尾将提供更多解释)。第二个参数0告诉查找函数不要向前或向后查找。因此,计算返回所有部门的值,但作为表格计算结果。
当你将表格计算放置在过滤器架上,而不是部门维度时,过滤器不会在源头上应用。相反,所有的汇总数据仍然保存在缓存中,而表格计算过滤器仅仅是隐藏了视图中的数据。其他表格计算,例如总计百分比,仍然会在缓存中的所有数据上进行操作。在这种情况下,即使表格计算过滤器隐藏了一个或多个数据,如下图所示,仍然允许计算所有部门的总百分比:
图 6.29:当使用表格计算过滤器时,缓存中所有的汇总数据都可用于计算所有部门的总销售百分比
你可能注意到了ATTR函数的使用。记住,表格计算需要聚合的参数。ATTR(即属性的缩写)是一种特殊的聚合,当某个字段在给定的详细级别上只有一个值时,它返回该字段的值,如果该字段有多个值,则返回*。
为了理解这一点,可以尝试在视图中同时使用部门和类别作为行。在视图中激活字段的下拉菜单,将类别更改为属性。由于每个部门都有多个类别,它将显示为*。然后,撤销操作并将部门更改为属性。由于每个类别只有一个部门,它将显示部门名称。
在这个例子中,我们已经看到如何有效地使用表格计算作为过滤器,当我们需要其他表格计算在缓存中的所有数据上操作时。
总结
在本章中,我们已经覆盖了许多与表格计算相关的概念。你现在已经具备了使用简单快速表格计算的基础,并能够利用高级表格计算的强大功能。我们讨论了作用域和方向的概念,这些概念适用于相对于视图的行列布局操作的表格计算。我们还考虑了与地址和分区相关的概念,这些概念适用于计算固定在某些维度上的表格计算。
我们所讨论的实际例子仅仅触及了可能实现的一部分,但应该能让你对可以达成的目标有所了解。能够解决的问题种类以及能够回答的问题的多样性几乎是无穷无尽的。
在接下来的几章中,我们将转向一些较轻松的话题,讨论格式化和设计,但在结束之前,我们肯定还会看到一两个表格计算的例子!
第七章:制作既美观又实用的可视化
Tableau 默认应用了许多优秀的视觉实践,对于快速分析来说,你可能不需要过多担心改变这些默认设置。然而,在考虑如何最好地传达你所发现的数据故事时,你需要考虑如何利用一切,从字体和文本到颜色和设计,以便能够与观众有效沟通。
Tableau 的格式化选项提供了相当大的灵活性。字体、标题、说明、颜色、行列带状、标签、阴影、注释等等,都可以自定义,以使你的可视化讲述一个令人印象深刻的故事。
本章将涵盖以下主题:
-
可视化考虑因素
-
在 Tableau 中利用格式化
-
为可视化添加价值
当你思考为什么要调整某个可视化时,有几个方面需要考虑。我们将从这些考虑因素开始。
可视化考虑因素
从你开始将字段拖放到架子上,Tableau 就采用了良好的格式化和可视化实践。你会发现离散调色板使用了易于区分的颜色,字体令人愉悦,网格线在适当的位置较为淡薄,数字和日期遵循元数据中定义的默认格式设置。
默认格式化对于发现和分析来说已经足够。如果你的重点是分析,可能不需要花太多时间微调格式,直到你准备好分享结果。然而,当你思考如何将数据传达给他人时,你可能会考虑格式化的调整如何对数据故事的传达效果产生重大影响。
有时,你可能会有特定的格式化偏好,或者有一套公司指南来决定字体和颜色的选择。在这种情况下,你可以在一个空白工作簿中设置格式化选项,并将其保存为模板。每当你希望开始一组新的视图和仪表板时,可以复制这个工作簿文件。
以下是你应该考虑的一些事项:
-
受众:受众是谁,他们的需求是什么?
-
目标:目标是引发情感反应,还是为做出热烈的决策列出事实?你是在突出需要采取的行动,还是仅仅想引发对某个话题的兴趣?
-
设置:这是数据故事传达的环境。是一个正式的商业会议,格式应该体现高度的专业性吗?还是将要以非正式的方式分享到博客上?
-
模式:可视化将如何呈现?你需要确保行、列、字体和标记足够大,适合投影仪使用,或者足够紧凑,适合 iPad。如果你将数据发布到 Tableau Server、Tableau Online 或 Tableau Public,那么你是否选择了适合网络的安全字体?你是否需要使用设备设计器来为仪表板创建不同版本?
-
情感:某些颜色、字体和布局可以用来设置情感。数据是否讲述了一个应该激发某种反应的故事?数据故事是严肃的还是轻松的?例如,红色可能意味着危险、负面结果或表明需要采取某些行动。然而,你需要对你的观众和具体情境保持敏感。颜色在不同的文化和情境中有不同的含义。在一些文化中,红色可能表示喜庆或幸福。此外,如果红色是公司标志的颜色,那么它可能并不是传达负面情绪的好选择。
-
一致性:通常来说,在所有可视化中使用相同的字体、颜色、形状、线条粗细和行条带。尤其是当它们将在仪表板上一起查看或在同一个工作簿中使用时。这也特别适用于考虑如何在整个组织内保持一致性,而不显得过于死板。
这些考虑因素将指导你的设计和格式化决策。与使用 Tableau 的其他所有工作一样,把设计视为一个迭代过程。经常从你的目标观众那里获取反馈,并根据需要调整你的做法,确保你的沟通尽可能清晰和有效。格式化的最终目标是更有效地传达数据。
利用 Tableau 中的格式化
本章将重点介绍工作表级别的格式化,因为我们已经在第二章《在 Tableau 中连接数据》中涵盖了元数据,而第八章《用仪表板讲述数据故事》将涵盖仪表板和故事。然而,了解 Tableau 格式化的全局视角是有益的。
Tableau 使用默认格式,包括默认字体、颜色、阴影和对齐方式。此外,还有多个格式化级别可以进行自定义,如下图所示:
图 7.1:Tableau 中的格式化级别
让我们更详细地了解这些内容:
-
数据源级别:我们已经看过如何为数字和日期字段设置默认格式。其他默认设置,如颜色和形状,也可以通过数据面板中的下拉菜单上的默认属性菜单进行设置。
-
工作簿级别:可以设置各种全局格式选项。从菜单中选择格式 | 工作簿。
-
故事级别:导航到故事标签并选择格式 | 故事(或故事 | 格式)来编辑特定于故事元素的格式。这些包括自定义阴影、标题、导航器和描述的选项。
-
仪表板级:仪表板特定元素可以进行格式化。在查看仪表板时,选择格式 | 仪表板(或仪表板 | 格式)以指定仪表板标题、副标题、底纹和文本对象的格式。
-
工作表级别:我们将考虑各种选项。以下类型的格式化可用于工作表:
-
工作表格式化:这种格式化包括字体、对齐、底纹、边框和线条。您可以覆盖整个工作表的格式化以进行行和列特定的格式化。
-
字段级格式化:这种格式化包括字体、对齐、底纹以及数字和日期格式。这种格式化是特定于字段在当前视图中的显示方式。您在字段级别设置的选项会覆盖工作表级别设置的默认值。数字和日期格式也会覆盖默认字段格式化。
-
附加格式化:可以应用于标题、说明、工具提示、标签、注释、参考线、字段标签等的附加格式化。
-
-
富文本格式化:标题、说明、注释、标签和工具提示都包含可以使用不同字体、颜色和对齐方式进行格式化的文本。这种格式化是特定于各个文本元素的。
让我们从检查工作簿级格式化开始。
工作簿级格式化
Tableau 允许您在工作簿级别设置某些格式化默认值。要查看选项并更改默认值,请单击格式 | 工作簿... 现在左侧窗格将显示工作簿的格式化选项:
图 7.2:工作簿格式化选项
选项包括更改默认字体,适用于视图或仪表板的各个部分,以及默认线条,适用于可视化中使用的各种线条类型。还请注意恢复默认值按钮,如果您希望恢复默认格式化。这里的任何更改都将影响整个工作簿。
有时,您会希望应用于特定工作表的格式化,接下来我们将考虑这一点。
工作表级格式化
您已经看到如何在以前的章节中编辑元数据,我们将在未来的章节中详细介绍仪表板和故事。因此,我们将把注意力转向工作表级格式化。
在具体调整格式化之前,考虑与格式化相关的视图的以下部分:
图 7.3:使用工作表级格式化可以进行格式化的视图部分
此视图由以下部分组成,可以进行格式化:
-
行的字段标签:可以通过菜单(格式 | 字段标签...)或右键点击视图中的字段标签并选择格式...来进行格式设置。此外,您也可以通过菜单(分析 | 表格布局,然后取消勾选显示字段标签的选项)或右键点击视图中的字段标签并选择隐藏选项来隐藏字段标签。如果需要,您可以使用分析 | 表格布局菜单选项重新显示它们。
-
列的字段标签:这些字段标签与行的标签选项相同,但它们可以独立于行字段标签进行格式设置或显示/隐藏。
-
行标题:这些标题将遵循一般标题的格式设置,除非您为行单独指定不同的标题格式。请注意,小计和总计也有标题。小计和总计的标题分别标记为a和b。
-
列标题:这些标题将遵循一般标题的格式设置,除非您为列单独指定不同的标题格式。请注意,小计和总计也有标题。在前面的截图中标记的总计标题就是列标题。
-
面板:许多格式设置选项包括将面板与标题进行不同格式设置的功能。
-
总计(列)面板:这是用于总计的面板,可以在工作表或列级别进行格式设置。
-
总计(行)面板:这是用于总计的面板,可以在工作表或行级别进行格式设置。
工作表级别的格式设置是通过格式窗口完成的,格式窗口会出现在左侧,取代数据面板的位置。
要查看格式窗口,请从菜单中选择格式,然后选择字体...、对齐...、阴影...、边框...或线条...:
图 7.4:工作表的格式选项
您还可以右键点击视图中的几乎任何元素并选择格式。这将打开特定于所选元素上下文的格式窗口。只需确保格式窗口的标题与您的预期一致。当您进行更改时,视图应立即更新以反映您的格式设置。如果没有更新,您可能是在格式窗口的错误选项卡中工作,或者您可能在较低级别(例如行)进行格式设置,这会覆盖在较高级别(例如工作表)所做的更改。
现在您应该能够在左侧看到格式窗口,在这种情况下是格式字体。它看起来应该是这样的:
图 7.5:格式字体面板
注意格式窗口中的以下关键方面:
-
窗口的标题将为您的格式选择提供上下文信息。
-
顶部的图标与格式菜单的选择项相匹配。这使您可以轻松地浏览这些选项,而无需每次都返回菜单。
-
三个标签,工作表、行和列,允许你在工作表级别指定选项,然后在行和列级别覆盖这些选项和默认值。例如,你可以为行总计设置不同于列总计的窗格和标题字体(尽管这种选择可能会显得突兀,不推荐使用!)。
-
右上角的字段下拉菜单允许你在字段级别进行格式微调。
-
你所做的任何更改都会预览,并通过加粗标签显示,表明该格式选项已经从默认设置进行了更改(注意到总计下的标题字体已被自定义,导致标题标签文字显示为加粗)。
清除格式的三种选项如下:
清除单个选项:在格式窗口中,右键单击你已更改的任何单个选项的标签或控件,然后从弹出菜单中选择清除。
清除所有当前选项:在格式窗口底部,点击清除按钮以清除所有可见的更改。此操作仅适用于你当前在格式窗口中看到的内容。例如,如果你在行标签上查看阴影并点击清除,那么仅行标签上的阴影选项会被清除。
清除工作表:从菜单中选择工作表 | 清除 | 格式。你也可以通过工具栏上的清除项目的下拉菜单来实现。这将清除当前工作表上的所有自定义格式。
其他格式选项(如对齐和阴影)与字体选项的工作方式非常相似。只有少数细节需要注意:
-
对齐包括水平和垂直对齐、文本方向和文本换行的选项。
-
阴影包括行和列带状效果的选项。带状效果允许交替的阴影模式,帮助区分或分组行和列。默认情况下,文本表格启用了浅色行带状效果,但在其他可视化类型中也可能有用,例如水平条形图。行带状效果可以设置为不同的级别,级别与行或列架上出现的离散(蓝色)字段数对应。
-
边框指的是绘制在单元格、窗格和标题周围的边框。它包括行和列分隔符选项。你可以在视图中看到部门之间的分隔符。默认情况下,边框的级别是基于行或列中的倒数第二个字段设置的。
-
线条指的是通过坐标轴绘制的线条。这包括网格线、参考线、零线和坐标轴标尺。你可以从菜单的格式选项访问更多完整的参考线和掉线选项。
我们已经考虑了如何在整个工作簿级别以及特定工作表级别调整格式。现在,让我们将注意力转向字段级别的格式调整。
字段级格式
在格式窗口的右上角有一个小的下拉菜单,标签为 字段。选择该下拉菜单会显示当前视图中的字段列表,选择一个字段会更新格式窗口,以显示适合该字段的格式选项。例如,这是 SUM(Sales) 字段所显示的窗口:
图 7.6:字段级格式化的格式窗格
格式窗口的标题会提醒你正在格式化的字段。从窗口左上角选择 字体、对齐方式 等图标将切换回工作表级别的格式设置。但是,你可以在 轴 和 窗格 选项卡之间切换。这两个选项卡允许你对字段在标题或作为轴标签使用时与在视图窗格中的格式进行不同的格式设置。字段的选项包括 字体、对齐方式、阴影 以及 数字 和 日期 格式。最后两个选项将覆盖任何默认的元数据格式。
你会注意到某些类型字段有特殊的格式选项。数字字段支持广泛的格式化选项,甚至包括自定义格式化功能,接下来我们将讨论这个。
自定义数字格式
当你更改数字格式时,可以从几种标准格式中选择,也可以选择自定义格式。自定义格式允许你输入一个格式字符串,Tableau 将根据该字符串来格式化数字。你的格式字符串可以使用井号/符号(#)、逗号、负号和括号的组合,同时可以使用被引号括起来的文字字符串来指示数字的显示方式。
格式字符串最多可以包含三个条目,用分号分隔,分别表示正数、负数和零的格式。
这里有一些示例,假设正数为 34,331.336,负数为 -8,156.7777:
图 7.7:格式字符串示例及结果值
你可以通过 Starter 或 Complete 工作簿中的 自定义数字格式 视图来复制这些示例并尝试其他格式字符串:
图 7.8:在第七章工作簿中使用自定义数字格式视图实验格式字符串
注意 Tableau 如何根据格式字符串对数字的显示进行四舍五入。请始终注意,你在文本、标签或标题中看到的数字可能由于格式设置而被四舍五入。
还可以观察到,你可以将格式字符(如井号、逗号和小数点)与字符串混合使用。所示的第四个示例将提供一个标签,其中零值通常会显示在该位置。
最后,注意最后一个示例使用了 Unicode 字符,这为你提供了广泛的可能性,例如显示度数或其他单位的测量。Unicode 字符可以在 Tableau 中的文本框、标题、字段名称和标签、别名等地方使用!
选择一个接近你想要的预定义格式,然后切换到自定义格式,可以让你从一个接近你所需格式的自定义格式字符串开始。
自定义日期格式化
以类似的方式,你可以使用自定义字符串定义自定义日期格式。下表说明了基于不同格式字符串对日期值 11/08/2018, 1:30 PM 的一些可能格式化:
图 7.9:一些可能的日期格式示例
这些仅仅是示例,你可以根据需要添加任意多的字面字符串。
查看自定义日期格式字符串选项的完整列表,请访问 onlinehelp.tableau.com/current/pro/desktop/en-us/dates_custom_date_formats.html。
注意,在这个示例中,应用某些自定义日期格式如何提高轴线的可读性:
图 7.10:这里使用的自定义格式字符串是 mmmmm,这会将月份表示为单个字母。
当你有需要格式化的数值时,自定义数字和日期格式是可以使用的。但如果没有数值呢?也就是说,如何格式化NULL值?我们接下来来探讨这个问题。
空值格式化
格式化字段的另一个方面是特别格式化空值。当格式化字段时,选择窗格标签并找到特殊值部分,如以下截图所示:
图 7.11:格式窗格中出现的特殊值选项
在字段值为空时,输入你希望在窗格中显示的任何文本(在文本字段中)。你还可以选择标记显示的位置。标记下拉菜单提供了多种选项,用于定义当使用轴时空值的标记应如何绘制。你有以下选项:
-
在指示器处显示会在视图的右下角显示一个小指示器,标明空值的数量。你可以点击该指示器选择过滤空值或将其显示为默认值。你也可以右键点击该指示器将其隐藏。
-
显示为默认值将在默认位置(通常为 0)显示标记。
-
**隐藏(连接行)**不会为空值放置标记,但会连接所有非空值之间的线条。
-
**隐藏(断开行)**会在不显示空值的位置打断行。
你可以在以下截图中看到这些选项,两个空值的位置由灰色带标示。
在指示器处显示不会在灰色区域显示标记,但会在右下角指示空值的数量:
图 7.12:在指示器处显示
显示为默认值将在0处放置标记并连接线条:
图 7.13:显示为默认值
**隐藏(连接线条)**移除缺失值的标记,但会连接现有的标记:
图 7.14:隐藏(连接线条)
**隐藏(断开线条)**移除缺失值的标记,并且不连接现有的标记:
图 7.15:隐藏(断开线条)
这些选项中的任何一个可能都能很好地使用,但需要考虑每个选项如何传达信息。连接线条可能有助于传达随时间变化的趋势,但也可能会减少缺失数据的显示。断开线条可能有助于突出缺失值,但可能会削弱整体信息。你需要根据本章开始时提到的考虑因素,决定哪个选项最符合你的目标。
你会注意到,之前的折线图在视图中每个标记的位置都有小圆圈标记。当标记类型为线条时,点击颜色架会打开一个菜单,提供标记的选项。所有标记类型都有标准选项,如颜色和透明度。一些标记类型支持其他选项,如边框和/或光环,正如这里所示:
图 7.16:向线条添加标记
了解这些选项将帮助你在思考如何传达缺失数据时做出决策,但始终要记得,另一种可视化类型,如条形图,可能在传达缺失值方面更加有效:
图 7.17:条形图有时比折线图更适合展示缺失值
了解如何格式化空值为你提供了一些选项,帮助你考虑如何传达数据。我们来看一下几个额外的选项。
其他格式化选项
还可以通过格式窗口访问其他格式化选项。这些选项包括以下内容:
-
参考线的众多选项
-
下拉线的线条和文本选项
-
标题和说明的阴影和边框选项
-
注释的文本、框和线条选项
-
字段标签的字体、阴影、对齐和分隔符选项
-
图例、快速筛选和参数的标题和主体选项
-
单元格大小和工作簿主题选项
你会发现这些选项大多数比较直观。一些选项可能不太明显:
-
下拉线,即从标记到坐标轴的连线,可以通过右键点击视图中带有坐标轴的空白区域并选择下拉线 | 显示下拉线来启用。使用相同的右键菜单并选择编辑下拉线,可以访问其他选项。下拉线仅在 Tableau Desktop 和 Reader 中显示,但在视图发布到 Tableau Server、Online 或 Public 时不可用。
-
标题和说明可以通过从菜单中选择工作表并选择所需选项来显示或隐藏。除了可以应用于标题和说明的标准格式外,还可以通过双击标题或说明、右键点击标题或说明并选择编辑,或通过使用标题或说明的下拉菜单(或仪表板视图的下拉菜单)来编辑和专门格式化标题或说明的文本。标题和说明的文本可以动态地包括参数的值、视图中任何字段的值,以及某些其他数据和工作表特定的值。
-
注释可以通过右键点击视图中的标记或空白区域,选择注释,然后选择以下三种注释类型之一来创建:
-
标记注释与视图中的特定标记相关联。如果该标记未显示(由于过滤器或坐标轴范围),则注释也不会显示。标记注释可以显示定义标记或其位置的任何字段的值。
-
点注释固定在视图中的特定点上。如果该点在视图中不可见,则注释将消失。点注释可以显示定义点位置的任何字段值(例如,坐标轴的坐标)。
-
区域注释包含在一个矩形区域内。所有注释的文本可以动态地包括参数的值,以及某些其他数据和工作表特定的值。
-
您可以通过在查看源工作表时,从格式菜单中选择复制格式,将格式从一个工作表复制到另一个工作表(无论是在同一工作簿内还是跨工作簿)。然后,在查看目标工作表时,从格式菜单中选择粘贴格式(或者从目标工作表标签的右键菜单中选择该选项)。
该选项将把源工作表上所有的自定义格式应用到目标工作表。然而,在编辑标题、说明、标签和工具提示的文本时所应用的特定格式不会被复制到目标工作表。
我们现在已经考虑了格式化工作簿、单独工作表、字段、数字、日期和空值的许多选项。接下来,让我们考虑如何利用其中一些技巧来真正帮助我们更好地理解数据。
为可视化添加价值
现在我们已经了解了 Tableau 中格式化的工作方式,接下来我们来看看格式化如何为可视化增加价值。
在应用自定义格式时,始终问问自己格式化到底为数据理解带来了什么。它是否使可视化更清晰、更易理解?还是只是在增加杂乱和噪音?
一般来说,尝试采用简约的方式。从可视化中移除所有不必要的内容。强调重要的数值、文本和标记,同时降低那些仅提供支持或上下文的内容的重点。
请考虑以下可视化,均使用默认格式:
图 7.18:默认格式通常适用于数据发现和快速分析,但在向他人清晰传达和强调数据故事时,可能会显得过于杂乱。
默认格式效果相当不错,但将其与这个可视化进行比较:
图 7.19:格式化可以使可视化看起来更简洁,并更有效地传达数据。
上述两个图表均展示了按季度划分的销售额,并过滤到办公用品部门。第一个视图使用默认格式。第二个视图进行了格式调整,包括以下内容:
-
标题已调整,包含了部门名称。
-
销售额已被格式化为以自定义货币显示,保留两位小数,单位为百万。这适用于轴和注释。通常,高精度可能会让可视化变得杂乱。数据的初始视图为我们提供了趋势和足够的细节,以了解数量级的顺序。工具提示或额外视图可以用于显示详细信息并提高精度。
-
轴标签已通过右键单击轴、选择编辑轴,然后清除文本的方式移除。视图的标题清楚地表明你正在查看
销售额。仅凭数值可以揭示第二个轴是按季度划分的。如果数据中包含多个日期,你可能需要指定当前使用的是哪个日期。根据你的目标,你可能考虑完全隐藏轴。 -
行上的网格线已被移除。网格线可以为视图增值,尤其是在能够确定数值至关重要的视图中。然而,它们也可能让视图显得杂乱并分散注意力。你需要根据视图本身和你要讲述的故事来决定网格线是否有帮助。
-
趋势线的格式已调整为与线条颜色匹配,尽管它较浅且较细,以降低其突出程度。此外,置信区间已被移除。你需要根据自己的需求和观众来决定这些置信区间是否提供了上下文或只是增加了杂乱。
-
注释中的线条、阴影和框已被移除,以减少杂乱。
-
注释的大小和颜色已更改,以使其更加突出。如果目标只是突出显示线上的最小值和最大值,标签可能是更好的选择,因为它们可以设置为仅显示最小/最大。然而,在这个例子中,较小的数字实际上是视图中的第二低点。
-
坐标轴刻度和刻度线已被强调并着色,以匹配标记和参考线(坐标轴刻度在格式窗口的线条选项下可用)。
格式化也可以用来显著改变可视化的外观。考虑以下图表:
图 7.20:可以通过设置视图的阴影来设置深色背景
该可视化与先前的视图几乎相同。然而,已经对工作表和标题应用了阴影。此外,字体根据需要进行了加亮或加暗,以便在深色背景上显示清晰。有些人认为这种格式更加赏心悦目,尤其是在移动设备上。如果视图要嵌入到带有深色主题的网站中,这种格式可能会非常受欢迎。然而,某些文本在深色背景下可能会更难以阅读。你需要考虑你的受众、环境和交付方式,来判断这种格式是否适合你的情况。
使用深色背景时,顺序色彩调色板(基于连续字段的单色渐变)应该被反转。这是因为,较浅(较低)到较深(较高)的默认设置在白色背景上效果良好,其中较深的颜色突出显示,而较浅的颜色会逐渐融入白色。在黑色背景上,较浅的颜色突出显示,较深的颜色会渐变为黑色。你可以在双击图例或右键单击图例选择编辑颜色...并勾选反转时找到反转选项。
工具提示
由于工具提示并不总是可见,它们是可视化中容易被忽视的方面。然而,它们增添了一种微妙的专业感。考虑以下默认工具提示,当最终用户将鼠标悬停在前面截图中显示的一个标记上时,显示的工具提示:
图 7.21:默认工具提示
与这个工具提示进行对比:
图 7.22:自定义工具提示
工具提示通过点击工具提示在标记卡片上编辑,打开一个编辑器,允许在工具提示中进行丰富的文本编辑:
图 7.23:工具提示编辑器
该编辑器类似于用于编辑标签、标题、说明和注释文本的编辑器。你可以输入文本并根据需要进行格式化。此外,编辑工具提示对话框还具有一些额外的功能:
-
右上角的插入下拉菜单允许你插入工作表、字段、参数和其他动态值。这些特殊或动态的文本对象在文本编辑器中作为标签包围(例如,
<SUM(Sales)>)。稍后我们将考虑工作表的特殊情况。 -
一个复选框选项显示工具提示,以及一个下拉菜单,用于指示工具提示的样式(响应式 - 即时显示工具提示或悬停时显示)。
-
一个复选框选项包括命令按钮。这是默认设置,你可以在本节的第一个未编辑的工具提示中看到这些命令按钮。命令按钮包括包含、排除、创建集合等选项。许多选项仍然可以通过右键点击访问,因此将它们从工具提示中删除并不会完全阻止用户访问它们。
-
一个复选框选项允许按类别选择。启用时,这个功能允许用户点击工具提示中显示的维度值,从而选择与该值相关联的所有标记。
对于那些不会显著且有意提升用户体验的视图,考虑取消勾选显示工具提示。
Viz in Tooltip
Tableau 允许你将可视化嵌入到工具提示中,这些可视化会根据你悬停在不同标记上的位置动态过滤。通常称为Viz in Tooltip,它大大扩展了终端用户的交互性,提供了深入挖掘细节的能力,以及快速以不同方式查看数据的能力。
在前面的截图中,以下标签是通过选择插入 | 工作表 | 类别添加到工具提示中的:
<Sheet name="Categories" maxwidth="300" maxheight="300" filter="<All Fields>">
这个标签,你可以直接编辑文本进行修改,它告诉 Tableau 在工具提示中显示类别工作表的可视化。最大宽度和高度默认为 300 像素。过滤器指示哪个字段作为从工作表到“Viz in Tooltip”的过滤器。默认情况下,<所有字段>表示视图中的所有维度都会作为过滤器。然而,你可以指定一个字段列表,根据视图中存在的一个或多个维度进行特定过滤(例如,<部门>、<类别>)。
注意带有工具提示的最终视图:
图 7.24:Viz in Tooltip
使用“Viz in Tooltip”功能有很多可能性。首先,你可以利用该功能深入细节,而无需在仪表板上额外占用空间,也无需导航到一个单独的视图。其次,你可以显示数据的不同方面(例如:时间序列的地理位置作为工具提示)。最后,你可以考虑如何使用“Viz in Tooltip”来让终端用户在更广泛的背景下看到部分数据。
这个功能还有许多其他有价值的应用,下面是一些提示,帮助我们总结“Viz in Tooltip”功能:
-
你可以在单个工具提示中添加多个可视化。
-
将工作表的适应选项设置为适应整个视图,使其调整到最大宽度和高度。
-
你可以通过右键点击工作表标签并选择隐藏来隐藏工具提示中使用的工作表。要恢复它们,请右键点击工具提示中使用的工作表标签并选择取消隐藏工作表。
总结
格式化的目标是提高手头数据的有效传达。在进行格式化的迭代过程中,始终考虑受众、环境、模式、情绪和一致性。寻找能为你的可视化增值的格式化,避免无用的杂乱。
我们讨论了很多格式化选项——从工作簿级别的字体、颜色、线条等到单独的工作表和字段格式化。我们还讨论了如何自定义数字、日期和空值的格式,并且如何利用这些技巧为你的可视化增加价值。
了解 Tableau 中格式化的工作原理后,你将能够将你在发现和分析阶段创建的可视化精炼成一个极具效果的数据故事传达。
在下一章,我们将看看这些内容如何在仪表板中汇聚。
第八章:用仪表板讲述数据故事
在数据发现和分析过程中,你很可能会创建许多数据可视化。每一个可视化都为你提供了数据中某个故事的快照。每一个对数据的洞察都会回答一两个问题。有时,发现和分析阶段就足够让你做出关键决策,整个周期便完成了。在其他情况下,你需要将这些快照汇集在一起,向目标观众传达一个完整且有说服力的故事。
Tableau 允许你将相关的数据可视化整合到一个仪表板中。这个仪表板可以是对数据各方面的静态视图,或者是一个完全互动的环境,允许用户动态过滤、深入分析并与数据可视化进行交互。
在本章中,我们将通过几个深入的示例来探讨这些概念,逐步走过仪表板设计过程。像之前一样,不必担心记住一长串指令。相反,专注于理解仪表板的各个组件和方面为何以及如何发挥作用。
本章将涵盖以下内容:
-
仪表板简介
-
在 Tableau 中设计仪表板
-
适应不同显示器和设备的设计
-
通过操作实现互动性
-
故事
在本章的示例中,我们将回到前几章中使用的Superstore Sales示例数据。请创建一个新的工作簿并连接到该数据集,我们将从介绍仪表板的关键概念开始。
仪表板简介
在深入了解一些实际示例之前,先花点时间理解什么是仪表板,以及为什么你可能会创建一个仪表板。
仪表板定义
从 Tableau 的角度来看,仪表板是将单独的可视化以及其他组件,如图例、过滤器、参数、文本、容器、图像、扩展、按钮和网页对象,安排在一个画布上的方式。理想情况下,可视化和组件应共同工作,讲述一个完整且有说服力的数据故事。仪表板通常(但不总是)是互动的。
仪表板目标
仪表板的主要目标是将数据传达给特定的观众,并获得预期的结果。我们经常会谈论讲述数据故事。也就是说,数据中包含了一个或多个可以传达给他人的叙事。
尽管你可以通过单一的可视化或一系列复杂的仪表板讲述数据故事,但单个 Tableau 仪表板是最常见的讲述单一故事的方式。每个仪表板都旨在通过清晰展示特定信息来讲述一个故事。在构建故事之前,你应该了解数据讲述了什么故事。你如何讲述这个故事将取决于许多因素,比如你的观众、观众如何访问仪表板,以及你希望观众做出什么回应。
Stephen Few,数据可视化领域的领先专家之一,将仪表板定义为一种显示达成一个或多个目标所需最重要信息的可视化展示,这些信息被整合并排列在一个屏幕上,以便能够一目了然地进行监控。
该定义来自 Few 的论文 Dashboard Confusion,可以通过以下链接阅读:www.perceptualedge.com/articles/ie/dashboard_confusion.pdf。
这个定义有助于我们理解数据故事,并界定我们在 Tableau 中讲述数据故事时要遵循的一些关键边界。通常,你的数据故事应当遵循以下准则:
-
数据故事应当专注于最重要的信息。任何不传达或不支持核心故事的信息应当被排除。你可能希望将这些信息包含在其他仪表板中。
-
你讲述的数据故事必须符合你的关键目标。你的目标可能包括从提供信息到为进一步探索提供界面,再到促使观众采取行动或做出关键决策。任何不支持你的目标的内容,应当留给其他仪表板。
-
数据故事应该容易访问,且核心思想应当清晰。根据你的观众,你可能希望明确地陈述你的数据结论,或者你可能希望引导观众自己得出结论。
当你开始构建仪表板时,首先要仔细考虑你的目标。你的发现和分析应该已经揭示了有关数据及其故事的各种洞察。现在,责任在你,将这些发现和分析转化为一种有意义的方式,以传达故事并满足你的目标和观众的需求。你处理这一任务的方式被称为你的方法。
仪表板方法
根据你的目标,构建仪表板有许多可能的方法。以下列举的仅仅是一个不完整的清单:
-
引导分析:你已经进行了分析,得出了发现,因此对数据故事的含义有了深刻的理解。通常,设计一个能够引导观众经历类似发现过程的仪表板是有帮助的,这样他们就能清楚地认识到行动的必要性。例如,你可能已经发现了营销部门的浪费性开支,但团队可能在没有看到数据如何引导你得出这个结论的情况下,并不准备接受你的结果。
-
探索性:很多时候,当数据在下一个小时、下一个星期或下一个年份刷新时,你并不知道数据会讲述什么故事。今天可能看似不重要的部分,未来可能成为一个重要的决策点。在这种情况下,你的目标是为你的观众提供一个分析工具,使他们能够自主地探索和互动数据的各个方面。例如,今天,所有区域的客户满意度都很高。然而,你的仪表板需要让你的组织能够持续跟踪满意度变化,动态按产品和价格进行筛选,并观察与质量和交货时间等因素的相关性。
-
计分卡/状态快照:对于表示良好与不良绩效的关键绩效指标(KPI)或度量指标,通常会达成广泛共识。你不需要引导观众进行发现或强迫他们去探索。他们只需要一个高层次的总结,并能够深入细节,快速找到并解决问题,奖励成功。例如,你可能有一个仪表板,简单地显示仍未解决的支持工单数量。经理可以在移动设备上打开仪表板,并立即采取必要的行动。
-
叙事型:这种类型的仪表板强调一个故事。可能涉及探索性、引导性分析或绩效指标,但主要目的是从数据中讲述一个单一的故事。例如,你可能想讲述一种入侵性昆虫的传播故事,包括它的起源、传播速度、结果以及控制措施。你的仪表板应以一种可视化的方式,利用数据讲述这个故事。
我们将通过几个深入的示例来更好地理解这些不同的方法,并结合我们在前几章中学习的许多技能。首先,我们将介绍一些设计 Tableau 仪表板的关键方面。
你的仪表板可能采取混合方式。例如,你可能有一个探索性仪表板,突出显示一些关键绩效指标(KPI)。但是,务必小心不要让仪表板过于复杂。试图用单个仪表板实现多个目标往往会导致信息过载,变得混乱不堪。
Tableau 中的仪表板设计
无论你的目标或方法是什么,设计 Tableau 仪表板的实际任务每次看起来都差不多。在本节中,我们将介绍一些基本概念。
对象
仪表板由对象组成,这些对象被排列在画布上。你将在仪表板的左侧面板看到可以添加到仪表板中的对象列表:
图 8.1:可添加到仪表板的对象
该面板包含以下对象:
-
水平容器:一种布局容器,其中其他对象将在单一行(水平)中排列。
-
垂直:一个布局容器,其中其他对象将按单列(垂直)排列。
-
文本:允许您在仪表板中包含格式丰富的文本的对象。
-
图片:可以在仪表板上定位和调整大小的图像(例如
.gif、.png或.jpeg)。您还可以选择设置点击图片时的导航 URL。 -
网页:允许您在仪表板中嵌入网页内容的对象。您可以在设计时设置 URL。我们还会考虑如何使用动作动态更改 URL。
-
空白:一个空白对象,可用作占位符或提供间距选项。
-
导航:导航按钮允许您定义用户跳转到工作簿中的其他页面和仪表板。
-
导出:导出对象允许您创建一个链接或按钮,方便用户将仪表板导出为图像、PDF 或 PowerPoint。
-
扩展:由 Tableau 及第三方(甚至可能是您自己!)开发的一种日益增长的工具,利用扩展 API 为仪表板提供扩展功能。这可以使您实现诸如收集广泛的使用数据、动态更新参数、整合来自其他平台的可视化(如 D3)等更多功能。
除了可以通过侧边栏添加的对象外,还有其他可能适用于特定仪表板的对象:
-
过滤器:这些将作为控件显示,供最终用户选择过滤的值。
-
参数:类似于过滤器,这些将作为控件显示,供最终用户选择参数选项。
-
页面控件:这些是控件,允许最终用户分页查看数据,并可用于动画效果展示可视化和仪表板。
-
图例:这些包括颜色、大小和形状的图例,帮助最终用户理解各种可视化内容。
-
高亮器:这些允许用户在视图中高亮显示不同的维度值。
-
仪表板标题:一个特殊的文本对象,默认显示仪表板页面的名称。
平铺与浮动
对象可以是平铺的或浮动的。如果它是平铺对象,它会自动对齐到您拖动的仪表板或布局容器中。如果它是浮动对象,它将浮动在仪表板上并叠加显示。您可以更改浮动对象的层次顺序。
您会注意到,在前面的图片中,平铺或浮动按钮位于对象面板的正下方。这些按钮定义了您放置在仪表板上的对象的默认设置,但您可以更改任何给定对象的平铺或浮动状态。
按住Shift键,拖动对象时可以快速将其从平铺状态切换为浮动状态,或从浮动状态切换为平铺状态。
随着你在仪表板设计中的经验积累,你可能会更倾向于使用主要是瓷砖布局或主要是浮动布局的设计方式。(你可以在任何仪表板中混合使用瓷砖和浮动对象)。许多设计师发现其中一种设计方法更符合他们的风格。以下是一些考虑事项:
-
精度:浮动对象可以精确到像素级别进行调整和定位,而瓷砖对象则会大大依赖其容器的位置和大小。
-
速度:许多设计师发现,瓷砖布局的创建速度要快得多,因为他们不必担心精确度或层叠问题。
-
动态调整大小:浮动对象在固定大小的仪表板上表现良好,但如果仪表板根据窗口大小动态调整,则浮动对象会发生偏移,常常进入不理想的位置。瓷砖对象的移动和调整大小更为可靠(但并非总是完美!)。
-
灵活性:某些设计技巧可以通过浮动或瓷砖两种方式实现。例如,可以使用浮动技术将透明可视化层叠在背景图像上。然而,表单切换(我们将在第十一章,动态仪表板中讨论)通常是通过瓷砖布局实现的。
-
维护:浮动仪表板的布局变更可能比瓷砖布局的更困难且繁琐。
尝试各种设计技巧,并随意发展自己的风格!
操作仪表板上的对象
一旦某个对象成为仪表板的一部分,你可能希望对其进行操作。每个对象都有一些控制选项,当你选择该对象时,这些控制项将会显示:
图 8.2:选择仪表板对象后,将可以访问各种控制项
-
握柄:点击并拖动握柄来移动对象。
-
从仪表板中移除:点击此按钮可将对象从仪表板中移除。
-
转到工作表:要编辑仪表板上的单个可视化,请使用此按钮导航到单独的工作表。
-
用作筛选器:点击此处将启用视图作为筛选器。选择视图中的标记后,将会过滤仪表板上的其他视图。我们将在本章后面讨论筛选器操作的细节,以及如何更精确地控制视图如何作为筛选器使用。
-
更多选项:此下拉箭头将显示该对象的多种选项,包括参数和筛选器的控制显示选项;显示或隐藏视图上的标题或说明;向仪表板添加图例、参数和筛选器;格式化、布局和大小选项等。
-
对象大小边框:将鼠标悬停在边框上,光标会变为调整大小的光标。你可以拖动边框来调整对象的大小。
你可能会注意到,根据对象所在的容器类型以及对象是瓷砖还是浮动,尺寸行为有所不同。
在本章的前几节中,我们介绍了仪表板的理论基础以及设计中的一些关键元素。现在,让我们通过一个实际例子来应用这些概念。
用于理解盈利能力的仪表板
在涵盖了一些概念性话题以及与仪表板设计相关的实际事项之后,我们将深入一个示例。
假设你被要求帮助管理层找出最不盈利的商品。管理层认为,大多数最不盈利的商品应该从库存中淘汰。然而,由于你已经完成了分析,你发现某些商品虽然整体上不盈利,但在某些地区偶尔会盈利。你的主要目标是让管理层能够快速看到最不盈利商品的分析,以识别一个商品是否一直没有盈利,从而回答“最不盈利的商品是否一直没有盈利?”这个问题。这个例子将结合引导分析仪表板和探索工具的特点。
构建视图
使用Superstore Sales数据集,并按照以下步骤构建将形成仪表板基础的各个视图:
-
创建一个按类别显示利润的柱状图。按利润总和降序排列类别。
-
将部门字段添加到筛选器中并显示筛选器。为此,使用数据窗格中部门字段的下拉菜单,选择显示筛选器。
-
将工作表命名为按类别总利润:
图 8.3:显示按类别汇总利润的柱状图,以“部门”作为筛选器
-
创建另一个类似的视图,显示按商品的利润。按利润总和降序排列商品。
-
你会注意到,项目太多,无法一次性查看。对于这个仪表板的目标,你可以将项目限制为最不盈利的前 10 个。将项目字段添加到筛选器区域,选择前 10标签,并调整设置以按字段筛选。指定最不盈利的 10 个,按
Sum(Profit):图 8.4:使用“前 10”标签设置显示的项目数量
-
将工作表重命名为最不盈利的前 10 个商品:
图 8.5:结果柱状图显示最不盈利的前 10 个项目
-
创建另一个工作表,显示按州划分的利润填充地图。你可以通过双击数据窗口中的州字段,然后将利润拖动到颜色区域来迅速完成这一操作。(注意:如果你的地区设置不是美国,你可能需要使用编辑位置选项将国家设置为美国。)
-
将工作表重命名为按州利润:
图 8.6:显示按州划分利润的填充地图
-
创建最后一个工作表,显示利润是何时产生或丧失的。确保订单日期字段已作为季度日期值添加,并且它是连续的(绿色)。
-
添加线性趋势线。为此,请切换到左侧边栏的分析标签,将趋势线从模型拖动到视图中。或者,右键单击视图画布的空白区域,选择趋势线 | 显示趋势线。
-
将工作表重命名为利润趋势:
图 8.7:显示按季度利润趋势的折线图
现在,您已经创建了构成仪表盘的视图,让我们开始将仪表盘组合起来!
创建仪表盘框架
此时,您已经拥有实现仪表盘目标所需的所有视图。现在,只剩下安排它们并启用所需的交互性,以有效讲述故事:
-
通过点击位于所有现有工作表标签右侧的新建仪表盘标签,或从菜单中选择仪表盘 | 新建仪表盘来创建一个新的仪表盘。
-
将新仪表盘重命名为
最不盈利的是否总是亏损的?。 -
在左侧边栏底部,勾选显示仪表盘标题。
-
通过从左侧边栏的仪表盘窗格中拖动视图并将其放入仪表盘画布中,来将视图添加到仪表盘。按如下方式排列它们:
图 8.8:所有视图已放置在仪表盘上
在仪表盘中添加视图后,您需要花些时间重新定位和调整各个元素和视图的大小。
-
使用部门筛选器上的下拉菜单,将控件更改为单值(下拉菜单)。
-
您会注意到,改变筛选器的值只会改变按类别的总体利润视图。您可以通过使用下拉菜单来调整筛选器应用的视图。使用下拉菜单,选择应用到工作表 | 所有使用此数据源。
可以通过筛选器控件上的下拉菜单或视图中筛选器架上的字段来设置应用筛选器的选项。选项包括以下内容:
-
所有使用相关数据源:该筛选器将应用于所有数据源,其中用于筛选的字段在数据源之间存在关联。可以通过主菜单中的数据 | 编辑关系来编辑关系。
-
所有使用此数据源:该筛选器将应用于任何将数据源用作主要数据源的视图。
-
选择的工作表...:该筛选器将应用于您选择的工作表。
-
仅此工作表:该筛选器将仅应用于当前工作表。
现在,让我们回到创建仪表盘框架的工作。
-
从左侧边栏中,拖动并将文本对象放置在按类别的总体利润之上,并输入以下说明:
-
从下拉菜单中选择一个部门
-
选择下方的类别
-
选择下方的项目
-
-
使用控制柄,将部门筛选器立即移动到最不盈利的前 10 项视图上方。
-
调整文本对象的大小,以使前 10 名视图与整体视图对齐。
-
将利润颜色图例移到按州利润视图下方。
-
使用整体类别利润下拉菜单,选择适应 | 整个视图。这将确保所有类别都可见,而不需要滚动条。
-
此外,将最不赚钱的前 10 个项目调整为整个视图。
此时,你的仪表板应该类似于下图所示:
图 8.9:已整理并调整大小的精美仪表板
现在我们有一个包含所有我们想要的视图的仪表板。如你所见,添加视图和对象并重新排列它们是很容易的。接下来,让我们继续探讨如何通过操作来驱动故事。
实施操作来引导故事
现在你有了一个支持数据故事讲述的框架。你的观众能够在选定类别的上下文中定位到最不赚钱的项目。然后,选择一个项目将回答它是否在每个位置上都一直是无利可图的。为了启用这种流程并实现你的目标,你通常需要启用交互性。在本例中,我们将使用操作。我们将通过一些具体的步骤来完成这个示例,然后在本章稍后详细介绍操作的复杂性:
-
点击整体类别利润视图上的用作筛选器按钮。这将使该视图成为整个仪表板的交互式筛选器。也就是说,当用户选择一个条形图时,所有其他视图将根据选择进行过滤:
图 8.10:按类别利润视图上的“用作筛选器”控件
-
从主菜单中,选择仪表板 | 操作。你将看到一个包含名为筛选器 1(生成)的操作的列表。这是你之前选择用作筛选器时创建的操作:
图 8.11:点击筛选控制时创建了筛选器 1(生成)
-
点击添加操作 >按钮并选择筛选器。弹出的对话框将为你提供选择源和目标的选项,以及该操作的其他选项。
-
在这里,我们需要一个操作,当用户选择某个项目时,筛选除整体类别利润视图之外的所有内容。在添加筛选操作对话框中,将源工作表设置为最不赚钱的前 10 个项目,并将目标工作表设置为按州利润和利润趋势。确保操作设置为在选择时运行。将筛选器命名为按项目筛选,然后点击对话框中的确定按钮。然后在操作对话框中做同样的操作:
图 8.12:为按项目筛选操作设置选项
现在,你有三个筛选器(其中两个是操作)来驱动仪表板:
-
从下拉菜单中选择一个部门将过滤整个仪表板(实际上会过滤工作簿中的所有视图,因为你已设置为使用数据源过滤每个视图)
-
选择一个类别(点击一个条形图或标题)将把整个仪表板筛选到该选择
-
选择一个项目(点击一个条形图或标题)将筛选按州的利润和利润趋势仪表板
您可以通过点击空白区域或再次点击选定标记来清除视图中的选择。例如,如果您点击书架条形图以选择它(从而筛选出仪表板的其余部分),您可以再次点击该条形图来取消选择。
尝试使用筛选器和操作,看看您的仪表板如何运行。
上下文筛选
当您使用下拉筛选器选择单个部门或选择单个类别时,您会发现在 Top 10 视图中少于 10 个项目。例如,从部门筛选器选择家具,点击桌子条形图只显示三个项目。这是因为顶级项目筛选器与操作筛选器同时评估。只有三个桌子类别项目同时也在Top 10中。
如果您想查看桌子类别中的 Top 10 项目,您可以通过上下文筛选器实现这一目标。
上下文筛选器是 Tableau 中的一种特殊类型的筛选器,它们在其他筛选器之前应用。其他筛选器然后在上下文筛选器定义的上下文中应用。概念上,上下文筛选器导致数据子集,其他筛选器和计算在此数据子集上运行。除了顶级筛选器外,还在上下文筛选器定义的上下文中计算计算集和固定详细级别计算。
在这种情况下,导航到Top 10工作表,并使用筛选器架上字段的下拉菜单将部门筛选器和新添加的**(类别)**操作筛选器添加到上下文中。一旦添加到上下文中,这些字段将在筛选器架上显示为灰色。现在,您将看到所选部门和类别的 Top 10 项目:
图 8.13:最不赚钱的 10 个项目将位于 Action(类别)和部门筛选器的上下文中
请注意,将筛选器添加到上下文会使字段在筛选器架上显示为灰色。
如果您编辑仪表板上的操作,筛选器可能会自动更新,您可能需要重新添加到上下文中。
通过选择几个不同的类别和几个不同的项目,继续并逐步进行操作。观察最终的仪表板如何通过讲述一个故事来实现您的目标:
图 8.14:由选择触发的最终仪表板与筛选器
用户从部门下拉菜单中选择了技术,从类别列表中选择了电话和通讯,然后选择了项目 10631,这是该类别中利润最少的项目。此操作显示了该项目在各个州的销售情况(按利润进行颜色编码),以及该项目的利润时间序列。
管理层是否应从库存中移除项目 10631?在考虑到该项目仅在一个实例中亏损,并且其趋势正向更高的盈利转变之前,不能轻易做出决定。虽然最初的亏损很大,但那是很久以前的事,而且每次后续销售该项目都获得了盈利。你所得到的结果可能会促使进一步分析,以确定影响项目盈亏的因素,从而帮助管理层做出更好的决策。
当你查看第八章完成的工作簿时,你会看到底部只有仪表板的选项卡,个别视图已被隐藏。隐藏仪表板或故事中使用的工作表选项卡是保持工作簿整洁并引导观众远离那些应在仪表板或故事背景下查看的工作表的好方法。要隐藏工作表,右键点击选项卡并选择隐藏工作表。要取消隐藏工作表,导航到使用该工作表的仪表板或故事,右键点击左侧窗格中的工作表,并取消勾选隐藏工作表。此外,你还可以通过右键点击仪表板选项卡并选择适当的选项,来隐藏或取消隐藏所有在仪表板中使用的工作表。用于工具提示的工作表也可以用相同的方式进行隐藏或取消隐藏。
现在,你已经拥有一个完全互动的仪表板!你构建了视图,将它们添加到仪表板,并创建了一些有意义的计算。过程中,你学习了顶部过滤器和上下文过滤器。现在,让我们考虑一下如何为不同的显示器和设备设计仪表板。
针对不同显示器和设备的设计
在设计仪表板时,你通常会问自己的一些第一个问题是:我的观众如何查看这个仪表板?他们会使用什么设备? 随着移动设备的广泛采用,后一个问题变得非常重要,因为在大型平面屏幕显示器上看起来不错的东西,在平板或手机上可能并不总是很好看。
左侧边栏仪表板选项卡的顶部显示了一个按钮,用于在各种设备上预览仪表板,以及一个大小选项的下拉菜单:
图 8.15:设备预览选项允许你为其他设备设计和预览仪表板
点击设备预览按钮不仅可以让你查看仪表板在各种设备类型(甚至是特定型号)上的显示效果,还可以让你为每种设备类型添加布局,并且可以进行自定义:
图 8.16:设备的可自定义选项
你不仅可以查看仪表盘在各种设备和型号上的显示效果,还可以根据设备的方向以及是否使用 Tableau Mobile 应用(如果该设备支持)查看其外观。
点击添加布局按钮(即前面截图中的添加平板布局按钮)将会在左侧边栏的仪表盘选项卡下添加一个布局:
图 8.17:每种布局都可以配置多种选项
每种布局可以有自己的大小和适配选项,布局选项允许你从默认切换到自定义。这使你能够根据给定的布局重新排列仪表盘。你甚至可以为某些布局删除视图和对象。例如,你可以简化仪表盘,将其缩减为一两个视图用于手机显示,同时为桌面显示保留三四个视图。
Chapter 08 Completed 工作簿包含利润分析仪表盘的示例,并提供了几种布局选项。例如,这是为手机显示格式化的仪表盘,仪表盘会根据手机的宽度自动适配,并允许上下滚动:
图 8.18:仪表盘的手机布局
如你所见,手机的仪表盘布局意味着按州利润和利润趋势在手机设备的预览边界内不会显示。然而,它们距离手指滑动仅一步之遥。
与操作的交互
在 Tableau 中,操作是由用户发起的事件,它触发 Tableau 的响应。你已经看过几个仪表盘中使用操作的示例。现在我们将探讨一些操作在 Tableau 中如何工作的细节。
Tableau 支持六种操作:
-
筛选操作:用户的操作会导致在一个或多个视图中应用一个或多个筛选器。
-
突出显示操作:用户的操作会导致在一个或多个视图中突出显示特定的标记和标题。
-
URL 操作:用户的操作会导致打开特定的 URL(可以是浏览器、新标签页或嵌入式网页对象)。
-
转到工作表:用户的操作会导致导航到选定的工作表或仪表盘。
-
参数操作:用户的操作会更改参数的值。这使用户能够以全新和令人兴奋的方式与参数进行视觉互动!
-
设置操作:用户的操作定义了一个集合。集合可以在计算、筛选器和货架上使用,以定义标记的视觉属性。这为复杂和创造性的交互提供了许多可能性。
某些操作是由 Tableau 根据快捷方式自动生成的。例如,你可以从仪表盘视图的下拉菜单中选择用作筛选器,这会自动生成一个筛选操作。通过点击离散颜色图例上的按钮或工具栏上的按钮启用突出显示,将自动生成一个突出显示操作:
图 8.19:启用高亮显示的选项
您还可以通过从菜单中选择仪表板 | 操作来创建或编辑仪表板操作。我们来看看每种类型操作的详细信息。
过滤器操作
过滤器操作由一个或多个源工作表定义,这些源工作表将一个或多个维度值作为过滤器传递给目标工作表。当涉及到这些标记的操作发生时,包含该标记的维度值可以作为过滤器传递到一个或多个目标工作表。请记住,每个工作表上的标记是由独特的维度值交集定义的。
当您创建或编辑过滤器操作时,您将看到如下选项:
图 8.20:过滤器操作选项
此屏幕允许您执行以下操作:
-
命名过滤器。
-
选择源和目标工作表。源工作表是用户将启动操作(悬停、选择、菜单)的地方,目标工作表是应用响应的地方(在此示例中是过滤,但也可以是高亮显示)。
-
设置触发过滤器的操作,以及多个标记的选择还是单个标记的选择触发操作。
-
选择清除选择时发生的情况。
-
指定哪些维度用于将过滤器值传递到目标工作表。
尝试使用有助于您在仪表板中区分多个操作的名称来命名您的操作。此外,如果您的操作设置为在菜单上运行,那么您使用的名称将在工具提示中作为链接显示。使用名称右侧的箭头插入特殊字段占位符。当用户在工具提示中看到菜单选项时,这些占位符会根据标记的字段值动态更新。
您可以选择任意数量的源和目标工作表。然而,如果您在底部区域指定了特定的目标过滤器,则您选择的字段必须出现在源工作表中(例如,行、列和详细信息)。如果某个字段在一个或多个源工作表中不可用,您将收到警告,并且该操作将不会在这些工作表上触发。大多数情况下,您的源和目标将是相同的仪表板。您还可以选择一个不同的目标工作表或仪表板,这将使操作除了过滤之外,还能够导航到目标。
当过滤器操作在工作表级别定义时(在查看工作表时,从菜单中选择工作表 | 操作),该操作的菜单项将作为菜单项出现在每个使用相同数据源的工作表上的所有标记中。您可以使用此功能在工作表之间以及从仪表板到单个工作表之间快速创建导航。
过滤器操作可以设置为发生在三种可能的操作中的任何一种:
-
悬停:用户将鼠标光标移动到标记上(或在移动设备上点击标记)。
-
选择:用户点击或轻触一个标记,通过点击并拖动矩形框选中多个标记,或者点击一个标题(这样该标题下的所有标记都会被选中)。用户可以通过点击/轻触已经选中的标记、点击/轻触视图中的空白区域,或点击/轻触已选中的标题来取消选择。
-
菜单:用户选择工具提示中的操作菜单选项。
下面是一个筛选操作的示例,当源中的条形图被选中时触发:
图 8.21:点击“表格”条形图,将“类别”作为过滤器传递给目标表格。
源中的每个条形标记都由类别维度定义。当选择“表格”的条形图时,目标上会设置一个单一的过滤器。
如果标记由多个维度定义(例如,类别和区域),则目标表格仍然会根据所选维度值的组合设置单一过滤器。
在这个例子中,过滤器包含办公设备和西部,这与定义选中方框的维度匹配:
图 8.22:点击“办公设备”和“西部”交集的方框,会将这两个维度的值作为单一操作过滤器传递给目标。
默认情况下,源视图中存在的所有维度都会用于筛选操作。你可以选择性地指定应使用哪些字段。你可以在编辑筛选操作对话框中使用已选择字段选项来实现以下功能:
-
基于更少的维度进行筛选。例如,如果你只选择了区域字段,那么选择前述方框将只会将“西部”区域作为过滤器传递给目标。
-
使用不同的数据源对目标视图进行筛选。已选择字段选项允许你将源字段映射到目标字段(即使目标字段有不同的名称,但值必须仍然匹配)。例如,如果目标使用的数据源中,东部是一个名为区域的字段的可能值,你可以将源中的区域映射到目标中的区域。
筛选操作非常有用,可以缩小焦点范围,深入查看细节,观察所选维度的不同方面。你会发现自己经常使用它们。让我们考虑另一种类型的操作:高亮操作。
高亮操作
这种类型的操作不会过滤目标表格。相反,高亮操作会在目标表格中突出显示由所选维度值定义的标记(至少部分由它们定义)。高亮操作的选项与筛选操作非常相似,具有相同的源和目标表格配置选项,以及触发操作的事件。
假设一个仪表板有三个视图,并且基于地区字段的高亮操作。当对东区触发该操作时,所有由东区定义的标记都会被高亮显示。用于高亮的维度必须出现在所有你希望应用高亮的视图中。地图和散点图的地区字段都位于标记卡的详细信息部分:
图 8.23:点击东区的条形图已高亮显示与该维度值相关的所有其他标记
高亮显示器(也称为数据高亮显示器)作为用户控件显示(类似于过滤器和参数),根据用户交互来进行高亮显示。它们可以应用于一个或多个视图,并且会高亮显示视图中的标记。它们不会创建动作。要添加高亮显示器,选择视图中的任何离散(蓝色)字段,并使用下拉菜单点击显示高亮显示器。或者,你也可以使用菜单选择分析 | 高亮显示器。在仪表板上,你可以通过使用视图的下拉菜单选择高亮显示器来添加高亮显示器。
URL 操作
URL 操作允许你根据某个操作动态生成一个 URL,并在仪表板中的网页对象内或在一个新的浏览器窗口或标签页中打开它。URL 操作可以通过与其他操作相同的悬停、菜单和选择事件来触发。URL 操作的名称使其与其他操作区分开,并将在作为菜单使用时显示为链接。
URL 包括你输入的任何硬编码值,以及通过 URL 文本框右侧的箭头可以访问的占位符。这些占位符包括字段和参数。当操作触发时,这些值将动态插入到 URL 字符串中,基于构成所选标记的字段的值和当前参数的值。
如果你在仪表板中包含了一个网页对象,URL 操作将自动使用该对象作为目标。否则,操作会打开一个新的浏览器窗口(当仪表板在桌面或阅读器中查看时,使用你的默认浏览器)或一个新的标签页(当仪表板在网页浏览器中查看时)。
一些网页在通过 iframe 查看时具有不同的行为。浏览器对象在 Tableau Desktop 或 Tableau Reader 中不使用 iframe,但在将仪表板发布到 Tableau Server、Tableau Online 或 Tableau Public 时会使用 iframe。你需要根据你的观众将如何查看仪表板来测试 URL 操作。
创建或编辑 URL 操作时,你可以为 URL 操作指定一个目标:
图 8.24:URL 操作的选项
选项包括新浏览器标签页、网页对象(如果仪表板上有多个对象,你可以选择其中一个)和如果没有网页对象则为浏览器标签页。如果仪表板上有多个网页对象,建议为它们命名,以便更容易选择。
要完成此操作,请切换到左侧窗格中的布局选项卡,并展开项目层级结构,直到找到你希望重命名的对象。右键单击该对象并选择重命名仪表板项...:
图 8.25:可以通过项目层级结构和右键上下文菜单重命名仪表板对象
在你重命名对象之后,你将能更轻松地识别出哪个是 URL 操作的目标。
接下来,我们将考虑另一种实现特定结果的操作类型:导航。
转到工作表操作
转到工作表操作(也称为导航操作)允许你根据用户与一个或多个视图的交互,指定导航到工作簿中的另一个仪表板或工作表。例如,点击条形图中的条形可能会导航到另一个仪表板。这些操作类似于定义另一个工作表为目标的过滤器操作,但转到工作表操作不会设置任何过滤器。
参数操作
参数操作允许你根据用户操作设置参数的值。当你创建参数操作时,你将使用类似这样的界面设置选项:
图 8.26:参数操作的选项
与其他操作一样,你可以选择触发操作的工作表和用户交互(悬停、选择、菜单)。此外,你将设置目标参数并指定哪个字段将设置该值。你可以使用工作表中的任何字段,也可以为该字段指定聚合。
我们在第四章,使用计算和参数开始冒险中,看到过参数如何用于实现各种结果。你可以在计算、过滤器和前 N 名集合中使用它们,还可以使用它们定义参考线并改变任何视图的视觉效果。这为使用视图和触发器驱动交互体验打开了无限可能。
设置操作
集合操作允许你为一个或多个维度填充一个或多个值的集合。这非常强大,因为集合可以在任何架构中使用来编码任何视觉元素,可以在计算中使用,也可以作为过滤器使用。它们可以以不同的方式在不同的视图中使用,这为集合操作提供了令人难以置信的灵活性。我们将首先花一些时间更清楚地定义集合,然后看一个集合操作的示例。
集合
在 Tableau 中,集合定义了来自数据源的一组记录。在行级别,每条记录要么在集合中,要么不在集合中。有两种类型的集合:
-
动态集合(有时称为计算或计算集)
-
固定集合
动态集合是根据你定义的条件计算为单一维度计算的。随着数据变化,条件的结果可能会变化,记录可能会在集合内外之间切换。
例如,如果你在数据窗格中的Customer Name字段上使用下拉菜单并选择Create | Set,你可以规定一个条件来定义哪些记录属于该集合:
图 8.27:基于条件的动态集合
在这个示例中,我们创建了一个名为**Customers who purchased more than 100 来判断其是否在集合中。
固定集合是一个包含一个或多个维度的值的列表。如果单个记录的值与集合定义的列表匹配,则该记录在集合中,否则不在集合中。例如,你可能会基于Customer Name字段创建另一个集合,这次使用General选项卡:
图 8.28:基于成员选择的静态集合
在这里,你可以选择定义集合中包含或排除的单独值。注意有一个选项是排除而不是包含值。在这种情况下,我们创建了一个名为Customers with first name of Aaron的集合。任何具有与我们选择的6个值匹配的Customer Name值的记录都将包含在集合中。所有其他的将不在集合中。因为这是一个固定集合,所以这些值永远不会被计算或重新计算。如果下周数据集中出现一个名为 Aaron Burr 的客户记录,它仍然不会出现在集合中。
正如我们在下面的示例中所看到的,集合操作作用于固定的集合。
一个集合操作的示例
你可以在名为Sales by Region and Category (set actions)的仪表板中的Chapter 08 Complete.twbx工作簿中找到一个集合操作的示例,显示如下:
图 8.29:集合操作允许高亮显示:突出显示属于选定区域的条形部分
该仪表板包含两个视图:一个地图和一个条形图。在地图上选择一个区域会触发一个集合操作,从而更新条形图。一个筛选操作会筛选条形图,使每个条形的长度仅显示所选区域的值。然而,在这里,集合操作用于显示属于该区域的整体条形部分,同时仍保留所有区域的完整条形长度。
要复制此交互性,请按照以下步骤操作:
-
在数据窗格中维度下的Region字段上使用下拉菜单选择Create | Set。将集合命名为Region Set。
-
在生成的创建集合对话框中,选择常规选项卡,勾选一个或多个值。这将创建一个固定集合。在这个示例中,选择哪些值并不重要,因为稍后你会配置集合操作来瞬间更新这些值。
-
创建一个按类别销售的条形图。
-
从数据面板中的集合拖动区域集合并放置到颜色上:
图 8.30:将集合拖放到颜色上,以显示集合内外的区别
你可以像使用其他字段一样在架构上使用集合。注意集合如何给出两个值,即集合内和集合外,它们定义了两种颜色。你可能希望调整颜色,以突出显示集合内的部分。
你也可以在计算字段中使用集合。例如,代码[Region Set]为每条记录提供布尔值真/假结果,表示该记录是否在集合中。
通过创建区域地图、仪表板并实现集合操作来完成集合操作示例:
-
使用区域的下拉菜单选择地理角色 | 从…创建 | 州。这告诉 Tableau 根据州这一地理字段的关系将区域视为地理字段。
-
在一个新的空白视图中,双击区域字段以创建地图视图。现在,区域被识别为地理字段,Tableau 会生成必要的纬度、经度以及渲染形状所需的几何图形。
-
将地图和条形图视图都添加到同一个仪表板中。你可以根据需要将它们定位。
-
通过选择仪表板 | 操作菜单,然后在弹出的对话框中选择添加操作 | **更改集合值...**来添加集合操作。弹出的对话框具有许多与其他操作类型相似的功能:
图 8.31:集合操作的选项
你会注意到可以为名称指定操作值;执行操作时: 悬停、选择或菜单;以及清除选择的选项。像其他操作类型一样,你还可以指定触发该操作的源工作表。目标集合允许你指定根据操作更新值的数据源及该数据源中的固定集合。在此示例中,我们希望在销售按区域(集合操作)视图中做出选择时更新区域集合。当清除选择时,我们将选择从集合中删除所有值。
创建上述操作后,你的仪表板应与本节开始时显示的示例非常相似。在地图上选择一个区域时,突出显示与该区域对应的条形图部分。这种技术被称为刷选,或比例刷选。
该技巧只是集合操作的几百种可能应用之一。由于集合可以在任何架构上使用,并且可用于计算,通过集合操作更新数值为用户交互和分析开辟了几乎无限的可能性。
在了解了各种类型的操作后,让我们继续考虑另一个示例,展示不同类型的仪表板。
一个地区评分卡仪表板
现在,我们将考虑另一个示例仪表板,展示略微不同的目标。假设组织中的每个人都同意利润比率是一个 KPI。此外,大家也达成共识,认为可接受与差的利润比率之间的临界值为 15%,但管理层希望能够动态调整此值,以查看是否可能有更好的目标。
考虑以下仪表板:
图 8.32:一个简单的利润 KPI 仪表板
该仪表板使你的观众能够非常迅速地评估各个地区在过去六个月的表现。高层管理人员可以很快在他们的移动设备上调出这个仪表板,并根据需要采取适当的行动。
该仪表板提供与 KPI 目标参数的互动。如果需要,额外的深入探索功能可以提供到其他仪表板或视图。如果该视图发布到 Tableau Server,考虑到地区经理可能会订阅该视图并接收包含最新仪表板图像的定期电子邮件,这也是完全合理的。
让我们考虑如何创建一个类似的仪表板:
-
创建一个名为
Profit Ratio KPI Target的浮动类型参数,初始值设置为.15,格式为百分比。 -
创建一个名为
Profit Ratio的计算,公式为SUM([Profit]) / SUM([Sales])。这是一个聚合计算,它将把利润总和除以视图中定义的详细程度下的销售总和。 -
创建第二个名为
KPI - 利润比率的计算,公式如下:IF [Profit Ratio] >= [Profit Ratio KPI Target] THEN "Acceptable" ELSE "Poor" END该代码将利润比率与参数化的临界值进行比较。任何等于或高于临界值的将标记为
可接受,而低于临界值的将标记为差。 -
创建一个名为地区评分卡的新工作表。该视图包含行上的
地区,列上的订单日期(作为离散日期部分),以及在形状和颜色上都有KPI - 利润比率字段。你会观察到形状已被编辑为使用勾选标记和叉号,并且颜色调色板使用了对色盲友好的蓝色和橙色。 -
使用分析面板添加列总计,并将总计格式化为自定义标签总体,字体加粗,并使用浅灰色阴影。
-
添加订单日期作为过滤器,并将其设置为按字段排序的前 6 名(订单日期作为最小值)。这将动态地将视图过滤为过去六个月的数据:
图 8.33:此视图定义了地区评分卡,显示每个地区每月的可接受与差的结果
-
创建另一个名为按区域计算的利润率的工作表。
-
如果你跳过了设置操作示例,请使用
Region上的下拉菜单选择地理角色 | 从...创建 | 州。这告诉 Tableau 将Region视为一个基于与地理字段州的关系的地理字段。 -
双击数据窗格中的Region字段。Tableau 将自动根据Region生成地理可视化。我们将在第十二章,探索地图和高级地理空间功能中更详细地探讨自定义地理区域的创建。
-
将利润率放在颜色和标签上。你还需要将利润率格式化为百分比。你可以通过专门在此视图中格式化该字段,或者通过在数据窗格中设置字段的默认数字格式来完成(后者通常是首选,因为你几乎总是希望它以百分比形式显示)。
-
此外,将Region添加到标签中。重新排列标记卡中的字段以重新排序标签,或者点击标签架直接编辑标签文本。
-
将与区域记分卡视图相同的过滤器应用于此视图。你可能希望导航到区域记分卡工作表,并使用订单日期上过滤器架上的下拉菜单将现有的过滤器应用于多个工作表:
图 8.34:填充地图显示按区域计算的利润
一旦两个视图都创建完成,你可以将这些视图安排成一个仪表板。第八章完整工作簿中的示例应用了一个手机布局,如下所示:
图 8.35:KPI 仪表板的手机布局
尝试不同的布局和元素位置。
默认情况下,所有添加到仪表板的对象都是瓷砖化的。瓷砖化的对象会固定位置,并出现在浮动对象下面。任何对象都可以通过切换左侧窗口下新对象下的切换按钮,或按住Shift键将对象拖动到仪表板上,作为浮动对象添加到仪表板。
现有对象可以通过按住Shift键在移动对象时或使用下拉菜单在浮动和瓷砖之间切换。下拉菜单还提供了调整对象浮动顺序的选项。此外,通过选择浮动对象并使用左下角的定位和大小控制,你可以以像素为单位精确调整浮动对象的大小和位置。
你可以混合使用瓷砖和浮动元素,但许多仪表板作者更喜欢构建完全由一个或另一个组成的仪表板。这确保了不同布局和屏幕尺寸之间的一致性(特别是当仪表板设置为自动或范围大小选项时)。
这个例子展示了一个用于快速查找和快速决策的仪表板。如果我们想讲述一个更复杂的故事,展示细节的进展,甚至按照特定顺序呈现数据故事怎么办?让我们考虑如何利用 Tableau 的一个专门设计用于此目的的功能。
故事
故事功能允许你使用仪表板和视图的交互式快照讲述一个故事。快照成为故事中的一个点。这使你能够构建一个引导性叙事,甚至是一个完整的演示。
让我们考虑一个故事点可能有用的例子。高层管理者对你之前开发的区域记分卡仪表板感到满意。现在,他们希望你为董事会做一个演示,突出显示南部地区的某些具体问题。通过最小的努力,你可以将简单的记分卡进行扩展,添加一些额外的视图,并讲述整个故事:
-
首先,我们将构建几个额外的视图。创建一个简单的地理视图,命名为
利润比率 KPI 按州。将其设置为填充地图,使用KPI – 利润比率字段并定义颜色。 -
将利润比率添加到Marks卡片的详细信息部分,以便稍后使用:
图 8.36:利润比率 KPI 按州使用颜色编码显示可接受与差的对比
-
创建一个名为
按季度利润比率的额外视图。将订单日期作为列上的连续日期值,利润比率作为行。 -
将标记类型设置为条形图。为利润比率 KPI 目标参数值添加参考线(你可以右键点击利润比率轴并选择添加参考线...)。
-
将KPI – 利润比率添加到颜色。你也可以点击颜色货架并添加边框。
-
继续筛选视图,选择南部地区,并使用下拉菜单将该筛选器应用到利润比率 KPI 按州视图中:
图 8.37:按季度利润比率显示某一季度是否符合目标,是否可接受或差
-
创建一个新的仪表板,包含这两个新的视图,排列方式与下面截图中的相同。如果没有显示,添加利润比率 KPI 目标参数和地区筛选器。
-
使用利润比率 KPI 按州上的下拉菜单,将该视图作为筛选器使用:
图 8.38:同一仪表板上的利润比率 KPI 按州和按季度视图
-
通过从菜单中选择故事 | 新建故事,或者使用底部现有工作表旁的新建故事标签来创建一个新故事:
故事界面由一个侧边栏组成,显示所有可见的仪表板和视图。顶部显示故事标题,可以通过双击进行编辑。故事中的每个新点都会显示为一个导航框,其中的文本也可以编辑。点击框会让你访问故事点,随后你可以添加单个仪表板或视图。
图 8.39:添加故事点
你可以使用新建空白点按钮(创建一个新故事点)、复制按钮(将创建当前选定故事点的复制快照)或另存为新点按钮(将捕获当前仪表板的状态作为一个新的故事点)来创建新的故事点。
点击故事点导航框将显示该故事点的视图或仪表板快照。你可以通过选择、改变筛选器、更改参数值和添加注释等方式与仪表板互动。更改仪表板的任何部分后,系统将提供更新现有故事点为仪表板当前状态的选项。或者,你可以使用导航框上方的恢复按钮返回仪表板的原始状态。点击X将删除故事点。
每个故事点包含一个完全独立的仪表板快照。筛选选择、参数值、选择项和注释将为特定的故事点记住,但不会影响其他故事点或仪表板中的任何其他工作表。
你可以通过拖动和放置导航框来重新排列故事点。
我们将通过完成以下步骤来构建故事:
-
给故事命名为南部区域分析。
-
将区域成绩卡仪表板作为第一个故事点。选择地图中的南部区域。为该故事点添加以下文本:南部区域在过去六个月的表现不佳:
图 8.40:第一个故事点突出显示南部区域的表现
-
点击新建空白点按钮创建一个新的故事点,并将利润比率分析仪表板添加到该点。
-
给此故事点添加标题只有一个州整体达到了 15% 的目标。
-
右键点击地图上的弗吉尼亚州,选择注释 | 标记。保持州和利润比率作为注释的一部分:
图 8.41:第二个故事点深入细节
-
点击复制按钮复制当前故事点。为这个新故事点添加标题3 个州将达到 10% 的目标。将利润比率 KPI 目标设置为
10.00%并更新该点。 -
再次点击复制按钮,为新创建的点添加标题某些州在历史上表现良好。
-
右键点击弗吉尼亚州的注释,选择删除将其删除,然后为路易斯安那州添加类似的注释。接着,点击路易斯安那州选择该州。
-
确保点击更新按钮以捕获仪表板的状态。
在演示模式下,添加、复制、更新或删除故事点的按钮不会显示。你的最终故事应该类似于以下内容:
图 8.42:此故事点突出显示单个州的季度结果
花点时间浏览一下演示文稿。点击导航框将展示该故事点。你可以在每个故事点中完全与仪表板互动。通过这种方式,你可以即时回答问题并深入探讨细节,然后继续故事的进行。
学习仪表板技巧(以及数据可视化技巧的一般方法)一个很好的方式是订阅 每日可视化 (www.tableau.com/public/community/viz-of-the-day)。每天都会展示一个新的可视化、仪表板或故事。当你看到一个想要了解的设计技巧或可视化时,你可以下载工作簿并探索使用的各种技巧。
摘要
当你准备分享你的发现和分析时,你可能会使用仪表板将故事与观众关联起来。讲述故事的方式将取决于你的目标、观众以及传递方式。通过结合视图、对象、参数、筛选器和图例,你可以创造一个极具吸引力的数据故事框架。Tableau 允许你为不同的设备专门设计布局,确保你的观众获得最佳体验。通过引入动作和互动性,你可以邀请观众参与到故事中。故事点将允许你将多个仪表板和视图的快照汇集在一起,从而制作和呈现完整的叙事。
在下一章,我们将关注一些涉及趋势、分布、预测和聚类的更深入分析。
第九章:可视化分析 – 趋势、聚类、分布和预测
使用 Tableau 进行的快速视觉分析对于回答众多问题和做出关键决策非常有用。但它仅仅触及了可能分析的表面。例如,一个简单的散点图可以揭示异常值,但通常你会想要了解数据的分布,或者识别出类似的观察点的聚集。一个简单的时间序列帮助你看到某一指标随时间的涨跌,但通常,你想看到趋势或预测未来的数值。
Tableau 使你能够快速通过统计分析来增强数据可视化。内置的功能,如趋势模型、聚类、分布和预测,使你能够快速为你的可视化分析增值。此外,Tableau 还与 R 和 Python 平台集成,为数据的处理和分析提供了无限的选择。
本章将涵盖内置的统计模型和分析,包括以下主题:
-
趋势
-
聚类
-
分布
-
预测
我们将通过一些示例数据集来查看这些概念。你可以通过 Chapter 9 工作簿来跟随并重现这些示例。
在分析随时间变化的数据时,理解变化的整体趋势至关重要。我们将从观察和理解趋势开始。
趋势
World Population.xlsx 文件包含在 Chapter 09 目录中。它记录了每个国家从1960年到2015年的每一年的人口数据。使用这个数据集,让我们来看看不同国家的历史趋势。创建一个类似于下方截图所示的视图,展示阿富汗和澳大利亚随时间变化的人口数据。你会注意到国家名称已经被过滤,只包括阿富汗和澳大利亚,并且该字段还被添加到了颜色和标签货架中:
图 9.1:阿富汗和澳大利亚随时间变化的人口数据
仅从这个可视化图表中,你可以得出几个有趣的观察结论。到1980年,两国的人口增长相似。此后,阿富汗的人口开始下降,直到1988年才开始上升。在1996年左右,阿富汗的人口超过了澳大利亚。此后,两国之间的差距持续扩大。
虽然我们对这两个趋势有一些了解,但当我们看到趋势线时,它们变得更加明显。Tableau 提供了几种添加趋势线的方式:
-
从菜单中选择分析 | 趋势线 | 显示趋势线。
-
右键点击视图窗格中的空白区域并选择显示趋势线。
-
点击左侧边栏中的分析选项卡,切换到分析面板。将趋势线拖放到你选择的趋势模型上(在本例中我们使用线性模型,稍后我们将在本章中讨论其他模型):
图 9.2:通过从分析面板拖放来将趋势线添加到视图中
一旦将趋势线添加到视图中,你将看到两条趋势线:每个国家各一条。我们稍后将讨论如何定制显示。现在,你的视图应该像这样:
图 9.3:每条趋势线显示了各自国家的整体趋势
趋势是由 Tableau 在查询数据源后计算的,并且基于视图中的各个元素:
-
定义 X 和 Y 坐标的两个字段:位于行和列上的字段定义了x轴和y轴的坐标,允许 Tableau 计算各种趋势模型。为了显示趋势线,必须在行和列上使用连续(绿色)字段。唯一的例外是可以使用离散(蓝色)日期字段。如果你使用离散的日期字段来定义标题,另一个字段必须是连续字段。
-
创建多个独立趋势线的附加字段:行、列或颜色架上的离散(蓝色)字段可用作因素,将单一趋势线拆分为多个独立的趋势线。
-
选择的趋势模型:我们将在下一节中检查模型之间的差异,即趋势模型。
请在图 9.3中观察到有两条趋势线。由于国家名称是一个离散(蓝色)字段,且位于颜色上,因此默认情况下每种颜色都会定义一条趋势线。
如前所述,我们观察到阿富汗的人口在不同的历史时期内有所增减。请注意,趋势线是沿整个日期范围计算的。那么,如果我们想查看那些时间段的不同趋势线呢?
其中一个选项是简单地选择视图中感兴趣时间段的标记。默认情况下,Tableau 将为当前选择计算趋势线。例如,在这里,选择了1980到1988年间的阿富汗数据点,并显示了新的趋势:
图 9.4:默认设置指定将为选择绘制趋势线
另一个选项是指示 Tableau 使用行、列或颜色上的离散字段绘制不同的趋势线。
请继续创建一个名为Period的计算字段,该字段使用如下代码定义不同历史时期的离散值:
IF [Year] <= 1979
THEN "1960 to 1979"
ELSEIF [Year] <= 1988
THEN "1980 to 1988"
ELSE "1988 to 2015"
END
当你将其放置在列上时,你将得到每个时间段的标题,这会打断行并导致每个时间段显示不同的趋势。你还会观察到,Tableau 在每个时间段的轴上保留了完整的日期范围。你可以通过右键单击其中一个日期轴,选择编辑轴,然后勾选每行或每列独立的轴范围选项来设置独立范围:
图 9.5:这里,离散维度“周期”创建了三个独立的时间段,并为每个时间段绘制了趋势线
在这个视图中,已对颜色应用透明度,以帮助趋势线突出显示。此外,年份的轴被隐藏(通过取消勾选字段中的显示标题选项)。现在,你可以清楚地看到不同时期趋势的差异。澳大利亚的趋势在各个时期几乎没有变化,而阿富汗的趋势则变化较大。
在了解如何将趋势线添加到可视化之后,让我们更深入地探讨如何自定义趋势线和模型。
自定义趋势线
让我们再看一个例子,它将帮助我们考虑趋势线的各种选项。使用房地产数据源,创建一个像这样的视图:
图 9.6:散点图上的趋势线通常有助于更好地理解相关性和离群值
在这里,我们创建了一个散点图,尺寸(平方英尺)的总和放置在列上,用于定义x轴,价格的总和放置在行上,用于定义y轴。地址已添加到标记卡片的详细信息中,以定义聚合级别。因此,散点图上的每个标记都是一个在由尺寸和价格定义的位置的独特地址。销售类型已放置在颜色上。趋势线已经显示。根据 Tableau 的默认设置,有三条趋势线:每种颜色一条趋势线。置信区间已被隐藏。
假设有一个良好的模型,趋势线展示了价格与尺寸增加之间的关系,以及每种销售类型下价格的上涨速度和幅度。
在这个数据集中,我们有两个字段,地址和ID,每个字段定义了一个唯一的记录。将其中一个字段添加到详细级别,实际上会将数据进行拆分,并允许我们为每个单独的属性绘制一个标记。有时,数据中可能没有定义唯一性的维度。在这种情况下,你可以通过在分析菜单中取消勾选聚合度量来拆分数据。
另外,你可以使用每个度量字段在行和列上的下拉菜单,将它们从度量更改为维度,同时保持它们是连续的。作为维度,每个单独的值将定义一个标记。保持连续性将保留趋势线所需的轴。
让我们考虑一些趋势线的可用选项。您可以通过使用菜单并选择分析 | 趋势线 | 编辑趋势线... 或右键单击趋势线然后选择编辑趋势线... 来编辑趋势线。当您这样做时,您将看到如下的对话框:
图 9.7:Tableau 提供多种配置趋势线的选项
在这里,您可以选择模型类型;选择模型中适用的字段作为因素;允许离散颜色定义不同的趋势线;显示置信区间;强制 y 截距为零;为所选标记显示重新计算的趋势;以及显示趋势线的工具提示。我们将更详细地研究这些选项。
只有在确信必须为零时才应将 y 截距强制为零。根据这些数据,它几乎肯定不为零(即,不存在面积为 0 平方英尺且标价为$0 的房屋)。
现在,尝试各种选项。注意如何将销售类型字段作为因素移除或取消选中每种颜色显示趋势线选项将导致单一趋势线。
可以从下面的视图中排除一个字段作为因素的结果,其中销售类型已添加到行中:
图 9.8:将字段作为因素包含告诉 Tableau 它是否有助于趋势模型
如前述截图的左侧部分所示,销售类型被包括为因素。这导致每种销售类型有一个明显的趋势线。当将销售类型排除为因素时,相同的趋势线(即所有类型的总体趋势)将绘制三次。这种技术对比较数据子集和总体趋势非常有用。
自定义趋势线只是使用趋势了解数据的一个方面。同样重要的是趋势模型本身,我们将在下一节考虑定制。
趋势模型
让我们回到原始视图,并继续使用单一趋势线,考虑在 Tableau 中可用的趋势模型。下面的模型可以从趋势线选项窗口中选择。
线性
如果我们假设随着尺寸增加,价格将以恒定速率增加,我们将使用线性模型。无论尺寸增加多少,我们都预期价格增加,以便新数据点接近直线:
图 9.9:线性趋势
对数
如果我们预计实际上存在边际效益递减法则,即在买家停止支付更多之前,尺寸只能增加这么多:
图 9.10:对数趋势
指数
我们将使用指数模型来测试这样一个观点:每增加一点尺寸会导致价格的显著(指数级!)增加:
图 9.11:指数趋势
幂次
如果我们认为大小与价格之间的关系是非线性的,并且介于递减的对数趋势和爆炸性的指数趋势之间,我们会采用幂次趋势模型。该曲线表示价格是尺寸的某个幂次函数。幂次趋势非常适用于预测某些事件,例如车辆加速的行驶距离:
图 9.12:幂次趋势
多项式
如果我们认为大小和价格之间的关系较为复杂,并且遵循更像S形曲线的趋势——最初增大尺寸会显著提高价格,但到某一点后价格趋于平稳——我们将使用此模型。你可以将多项式模型的度数设置为从2到8之间。这里显示的趋势线是一个 3^(rd)度的多项式:
图 9.13:3^(rd)度多项式趋势
你需要了解趋势模型的基础知识,以便测试和验证你对数据的假设。某些趋势模型对于我们的数据显然是错误的(尽管在统计学上仍然有效,但价格指数增长的可能性极低)。常识与日益增加的统计学知识将帮助你在不断发展的过程中取得进展。
你可能还希望分析模型的准确性,我们接下来会进行这方面的讨论。
分析趋势模型
观察趋势线可能很有用,但通常我们希望了解我们选择的趋势模型是否具有统计学意义。幸运的是,Tableau 为我们提供了一些趋势模型和计算的可视化信息。
只需将鼠标悬停在单一趋势线上,就可以看到该趋势线的公式,以及R 平方和P 值:
图 9.14:将鼠标悬停在趋势线时显示的提示信息
P 值是一个统计学概念,描述了假设值之间没有关系(即随机机会)时,结果与趋势模型预测的结果之间的相似度的概率。P 值为 5%(.05)意味着有 5%的概率是随机机会能够至少与趋势模型一样好地描述值之间的关系。这也是为什么 P 值在 5%或以下通常被认为表明趋势模型显著的原因。P 值高于 5%通常会让统计学家质疑趋势模型所描述的相关性。
此外,你还可以通过从菜单中选择分析 | 趋势线 | 描述趋势模型...,或者通过右键单击视图面板中的相似菜单来查看趋势模型的更详细描述。当你查看趋势模型时,将会看到描述趋势模型窗口:
图 9.15:描述趋势模型窗口
你还可以在工作表描述中获得趋势模型的描述,该描述可以通过工作表菜单或按下Ctrl + E来访问。工作表描述包含了当前视图的其他有用的总结信息。
窗口中显示的丰富统计信息包括趋势模型的描述、公式、观测数量以及模型整体和每条趋势线的p 值。注意,在前面展示的截图中,类型字段作为一个因素被包含在内,定义了三条趋势线。你可能会发现,视觉化中的不同线条(例如图 9.6中的线条)的 p 值是不同的。有时,即使某些趋势线的 p 值不显著,你也可能会发现整个模型在统计上是显著的。
通过显示总结信息,Tableau Desktop 可以显示给定视图的额外统计总结信息。通过菜单选择工作表 | 显示总结。在总结卡片上的下拉菜单中可以展开显示的总结信息:
图 9.16:总结信息
通过工具提示和总结提供的大量信息将帮助你评估趋势模型并理解其准确性和细节。但我们甚至可以进一步,通过导出并分析趋势模型的统计数据。接下来我们将讨论这个话题。
导出统计模型详情
Tableau 还提供了导出数据的功能,包括与趋势模型相关的数据。这使得你能够更深入地——甚至是通过可视化的方式——分析趋势模型本身。让我们分析房地产价格与面积散点图的三次多项式趋势线,而不考虑任何因素。要导出与当前视图相关的数据,请使用菜单选择工作表 | 导出 | 数据。数据将被导出为Microsoft Access 数据库(.mdb)文件,并且系统会提示你保存文件的位置。
导出数据到Access的功能仅限于 PC。如果你使用的是 Mac,则没有此选项。你可以快速浏览这一部分,但不必担心你无法复制示例。
在导出数据到 Access屏幕上,指定一个 Access 表名称,并选择是导出整个视图的数据还是仅导出当前选择的数据。你还可以指定 Tableau 应该连接到数据。这将生成数据源,并以指定名称将其提供给当前工作簿:
图 9.17:导出数据到 Access 对话框
新的数据源连接将包含原始视图中的所有字段,以及与趋势模型相关的附加字段。这使得我们可以像下面这样使用残差和预测构建一个视图:
图 9.18:使用残差和预测来测试模型的视图
预测(x 轴)和残差(y 轴)的散点图可以让你直观地看到每个标记与趋势线预测位置之间的距离。这也能让你看出残差是否均匀分布在零的两侧。如果分布不均,则可能表明趋势模型存在问题。
你可以将这个新视图与原始视图一同放在仪表板上,以便直观地探索趋势模型。使用工具栏上的高亮按钮来高亮显示 地址 字段:
图 9.19:高亮按钮
定义了高亮动作后,在一个视图中选择标记,将使你能够在另一个视图中看到它们。你可以扩展此技术,将多个趋势模型和仪表板导出,以同时评估几个趋势模型:
图 9.20:将原始视图与测试视图并排放置,可以看到它们之间的关系
使用 R 和 Python 进行高级统计分析等
你可以利用 Tableau 与 R 或 Python 的集成功能,进行更复杂的统计分析。R 是一个开源的统计分析平台和编程语言,您可以使用它定义高级统计模型。Python 是一种高级编程语言,它因易用性而迅速获得数据分析师和数据科学家的广泛关注。Python 提供了许多数据清洗功能以及统计函数库。
要使用 R 或 Python,首先需要安装一个 R 服务器或 TabPy(Tableau 提供的 Python API),然后配置 Tableau 以使用 R 服务器或 TabPy。要了解更多关于安装和使用 R 服务器或 TabPy 的信息,请参考以下资源:
R: www.tableau.com/solutions/r
Python: www.tableau.com/about/blog/2017/1/building-advanced-analytics-applications-tabpy-64916
本书并未深入探讨 R 和 Python 的复杂性,但了解它们的功能将帮助你进一步研究该主题。
接下来,我们将查看 Tableau 如何利用聚类分析识别数据中复杂的关系。
聚类分析
Tableau 使你能够在可视化中快速执行聚类分析。这可以让你根据选择的任意数量,找到彼此相似的单个数据点的组,或者说是 聚类。这种功能在许多不同的行业和学科中都非常有用,以下是一些例子:
-
营销部门可能会发现,根据消费金额、购买频率或订单时间和日期,确定彼此相关的顾客群体是有用的。
-
医院中的病人护理主任可能会从了解基于诊断、药物、住院时间和再入院次数的病人群体中获益。
-
免疫学家可能会根据抗药性或基因标记搜索相关的细菌菌株。
-
可再生能源顾问可能希望根据能源生产来定位风车的聚类,然后将其与地理位置进行关联。
Tableau 使用标准的 k-均值聚类 算法,每次渲染视图时都会产生一致的结果。Tableau 会自动分配聚类数(k),但你可以选择调整该值,并分配任意数量的变量。
在我们考虑聚类时,我们将再次回到房地产数据,看看我们是否能够找到市场上相关房屋的分组,然后根据我们找到的聚类确定是否存在地理模式。
尽管你可以在任何可视化中添加聚类,但我们将从散点图开始,因为它已经允许我们查看两个变量之间的关系。这将为我们提供一些关于聚类如何工作的洞察,然后我们可以添加额外的变量,看看聚类是如何重新定义的。
从 地址 按 面积 和 价格 的基本散点图开始,切换到 分析 面板,并将 聚类 拖到视图中:
图 9.21:通过从分析面板拖放添加聚类
当你将 聚类 拖到视图时,Tableau 会生成一个新的 聚类 字段(这里自动放置在 颜色 上),并会显示一个包含作为 变量 使用的字段和更改 聚类数 选项的 聚类 窗口。变量 默认将包含视图中已经存在的度量:
图 9.22:基于价格和面积的单独地址的聚类
变量 是聚类算法用来确定相关数据点的所有因素。聚类数 决定了数据被划分成多少组。在前面的视图中,你将看到三个房屋聚类:
-
价格较低且面积较小的(蓝色)
-
价格和大小适中的(橙色)
-
价格较高且面积较大的(灰色)
由于用于聚类的两个变量与散点图中使用的变量相同,因此比较容易看出聚类的边界(你可以想象几条对角线将数据分区)。
你可以将几乎任何字段从 数据面板 或 视图 拖动到 变量 部分进行添加或删除变量。随着你这样做,聚类会自动更新。通过将 卧室数 添加到 变量 列表中进行实验,观察到 聚类 1 和 聚类 2 之间现在有了一些重叠,因为一些较大的房屋只有两三个卧室,而一些较小的房屋可能有四五个卧室。卧室数量现在有助于定义聚类。移除 卧室数,并注意到聚类会立即再次更新。
一旦你得到了有意义的集群,就可以通过将其从视图中拖动并放入数据面板,将集群物化为数据源中的组:
图 9.23:通过将集群字段从视图拖动到数据面板来物化集群
集群组在渲染时不会重新计算。要重新计算集群组,请使用数据面板中字段的下拉菜单,并选择重新调整。
使用集群组可以完成很多事情,包括以下内容:
-
集群组可以跨多个可视化使用,并可以在仪表板上的操作中使用。
-
集群组可以编辑,如果需要,个别成员可以在组之间移动。
-
集群组的名称可以设置别名,从而允许比集群 1和集群 2更具描述性的名称。
-
集群组可以在计算字段中使用,而集群则不能。
在以下示例中,已经根据前一视图中的**地址(集群)**组对房产地图进行了颜色编码,以帮助我们查看基于价格和大小的集群是否与地理位置有关。虽然这些集群可以直接在此可视化中创建,但该组有一些之前提到的优势:
图 9.24:此视图使用我们识别的集群,进一步理解任何地理空间关系
在此视图中,每个原始集群现在都是一个已经设置了别名的组,从而为集群提供了更好的描述。你可以使用数据面板中组字段的下拉菜单,或者右键点击颜色图例中的项目来编辑别名。
映射的外观有很多编辑选项。你可以调整显示在地图上的图层,以便为你绘制的数据提供更多背景信息。从顶部菜单中选择地图 | 地图图层。图层选项将显示在左侧边栏中。之前的地图启用了街道、高速公路、县边界和邮政编码边界,以便为每个地址提供更精确的位置背景。可以选择的图层将取决于地图的缩放级别。
在查看之前的视图时,确实可以看到一些几乎完全是低价和小尺寸(集群 1)的邻域,另一些则几乎完全是中等价位(集群 2)。试想一个房地产投资者如何利用这样的可视化来寻找在中等价位社区中的低价房屋。
分布
分析分布非常有用。我们已经看到某些计算可以用于确定统计信息,如平均值、百分位数和标准差。Tableau 还可以轻松地快速可视化各种分布,包括置信区间、百分比、百分位数、分位数和标准差。
您可以使用分析窗格添加任何这些视觉分析功能(或者,您可以右键单击轴并选择添加参考线)。与参考线和带状图一样,分布分析可以应用于表、窗格或单元格的范围内。当您拖放所需的视觉分析时,您将有选择范围和轴的选项。在以下示例中,我们从分析窗格将分布带拖放到由Sum(Price)定义的窗格轴上:
图 9.25:在添加参考线和分布时,定义范围和轴
选择了范围和轴之后,您将有更改设置的选项。您还可以通过右键单击视图中的分析功能或轴或参考线本身来编辑线条、带状图、分布和箱线图。
例如,让我们以价格和大小为轴,将销售类型放在列上,并加上颜色的散点图为例:
图 9.26:一个分为三列的散点图
接下来,我们从分析窗格将分布带放置到仅定义为价格轴的窗格中。这将弹出一个对话框来设置选项:
图 9.27:用于添加或编辑线条、带状图、分布或箱线图的对话框
每个特定分布选项在计算下拉菜单中有独特的设置。例如,置信区间允许您指定一个百分比值作为区间。标准差允许您输入一个逗号分隔的数值列表,描述多少个标准差和在什么间隔下。前述设置反映了指定**-2**、-1、1和2个标准差。调整标签和格式如前述屏幕截图所示后,您应该看到如下结果:
图 9.28:每种销售类型价格的两个标准差
由于您将标准差应用于每个窗格,因此每种销售类型都有不同的带状图。每个轴都可以支持多个分布、参考线和带状图。例如,在前述视图中添加平均线可帮助观看者理解标准差的中心。
在散点图上,为每个轴使用分布可以提供分析异常值的非常有用的方法。显示面积和价格的单个标准差使您能够轻松查看落入两者或其中一个或都不符合正常价格范围的属性(您可能会考虑购买一套房子,其大小处于高端但价格在正常范围内!):
图 9.29:所有房屋价格和大小的一个标准差
预测
如我们所见,趋势模型可以进行预测。在一个良好的模型下,你可以期望额外的数据会遵循这个趋势。当趋势随着时间推移时,你可以大致了解未来值可能落在何处。然而,预测未来值通常需要另一种类型的模型。季节性等因素可能会产生趋势模型无法预测的差异。Tableau 包含内置的预测模型,可以用来预测并可视化未来值。
要使用预测功能,你需要一个包含日期字段或足够日期部分的视图,以便 Tableau 可以重建日期(例如,年份和月份字段)。Tableau 还允许基于整数进行预测,而不是仅限于日期。你可以从分析窗格中拖放预测,选择分析 | 预测 | 显示预测,或右键点击视图窗格并从上下文菜单中选择该选项。
例如,下面是展示阿富汗和澳大利亚人口增长及其预测结果的视图:
图 9.30:阿富汗和澳大利亚的人口预测
请注意,当你显示预测时,Tableau 会在行的SUM(人口)字段上添加一个预测图标,以表明该度量值正在进行预测。此外,Tableau 还会在颜色中添加一个新的特殊预测指示器字段,以便在视图中区分预测值与实际值。
你可以将预测指示器字段移动,甚至复制它(在拖动和放置时按住Ctrl键)到其他货架上,以进一步自定义你的视图。
当你通过从菜单中选择分析 | 预测 | 预测选项...,或在视图上使用右键菜单进行编辑时,你将看到多个选项,允许你自定义趋势模型,如下所示:
图 9.31:预测选项对话框
在这里,你可以设置预测的时长、确定聚合方式、自定义模型,并设置是否希望显示预测区间。默认情况下,预测长度设置为自动,但你也可以通过自定义值来延长预测时长。
源数据下的选项允许你可选地为模型指定不同的数据粒度。例如,视图可能按年份显示一个度量值,但你可以允许 Tableau 查询源数据以按月份检索值,并使用更细粒度的数据来潜在地实现更好的预测结果。
Tableau 能够单独查询数据源以获取更细粒度的数据,从而获得更精确的结果,这在处理关系型数据源时效果很好。然而,联机分析处理(OLAP)数据源不兼容这种方法,这也是为什么在处理数据立方体时无法使用预测功能的原因之一。
默认情况下,最后一个值会被排除在模型之外。这在你处理的数据中,最近期的时间段尚不完整时非常有用。例如,当记录是每日添加时,最后(当前)月份在最后一天记录添加之前是不会完整的。如果在最后一天之前该不完整的时间段未被忽略,可能会影响模型的准确性。
模型本身可以设置为自动模式,带或不带季节性,或者可以自定义设置季节性和趋势的选项。要了解这些选项,请参考以下来自 Superstore 示例数据集的 按月销售 视图:
图 9.32:此时间序列显示了一个周期性或季节性模式
数据显示出明显的周期性或季节性模式。这对于零售销售和其他类型的数据非常典型。以下是选择不同自定义选项的结果:
图 9.33:选择不同的预测模型会产生不同的结果
检查上述差异将帮助你理解选项之间的不同。例如,注意没有季节性时,结果是一条直线,不随季节波动。乘法趋势会导致更陡峭的上升和下降,而乘法季节性则会导致更剧烈的变化。
与趋势类似,预测模型和摘要信息可以通过菜单访问。选择 分析 | 预测 | 描述预测 将显示一个窗口,其中包含关于模型的摘要和详细信息的选项卡:
图 9.34:Tableau 描述了预测模型
点击窗口底部的 了解更多关于预测摘要的信息 链接,将为你提供更多关于 Tableau 中使用的预测模型的信息。
预测模型仅在满足特定条件时启用。如果该选项被禁用,请确保你连接的是关系型数据库而非 OLAP,且未使用表计算,且至少有五个数据点。
摘要
Tableau 提供了一套丰富的功能,帮助你为分析添加更多价值。趋势线使你能够更准确地识别离群值,确定哪些值落在某些模型的预测范围内,甚至可以预测测量值的预期位置。Tableau 提供了对趋势模型的全面可视化,甚至允许你导出包含趋势模型预测值和残差的数据。聚类功能可以帮助你基于各种因素找到相关数据点的组。分布功能有助于理解数据集中的值分布。预测功能能够通过复杂的趋势和季节性模型预测未来的结果。充分理解这些工具将使你能够澄清和验证最初的可视化分析。
接下来,我们将考虑一些高级可视化类型,这些类型将拓展你在使用 Tableau 时能够完成的工作范围,以及你向他人传达数据的方式!
第十章:高级可视化
我们已经探索了许多不同类型的可视化,并考虑了它们最适合回答哪些类型的问题。例如,条形图有助于比较数值;折线图可以显示随时间变化的趋势和变化;堆叠条形图和树状图帮助我们看到部分与整体的关系;箱形图帮助我们理解分布和异常值。我们还看到如何通过计算、注释、格式化和参考线来增强我们的理解和数据叙事。以这些知识为基础,我们将通过一些高级可视化扩展数据分析的可能性。
这些仅仅是 Tableau 惊人灵活性的示例,旨在激发你思考新的方式来查看、理解和传达数据。这些图表并不是为了复杂而复杂,而是为了激发创造力和兴趣,从而有效地传达数据。
我们将考虑以下主题:
-
高级可视化——何时以及为什么使用它们
-
坡度图和波动图
-
漏斗图
-
步骤线和跳跃线
-
火花线
-
哑铃图
-
单位/符号图
-
Marimekko 图
-
动画可视化
高级可视化——何时以及为什么使用它们
到目前为止,我们看到的可视化类型可以回答你关于数据的许多问题。如果你问的是什么时候?,那么时间序列可能是最合适的解决方案。如果你问的是多少?,条形图可以提供一个快速且好的结果。但有时候,你会提出一些问题,用其他类型的可视化会更好地回答。例如,运动或流动可能最好用桑基图表示。多少个? 可能最好用单位图或符号图回答。比较排名或绝对值的变化可能最适合使用坡度图或波动图。这些后续的可视化并不是你在最初探索数据时会使用的。但当你深入分析并想了解或传达更多信息时,你可以考虑本章中的一些选项。
本章中的每个可视化都是使用提供的Superstore数据创建的。我们不会提供逐步的操作指引,而是指出每种图表类型中使用的具体高级技巧。我们的目标不是让你记住步骤,而是让你理解如何创造性地利用 Tableau 的功能。
你可以在第十章完整工作簿中找到完整的示例,或者通过使用第十章入门工作簿从零开始构建,测试你不断增长的 Tableau 技能。
让我们从坡度图和波动图开始我们的高级可视化之旅。
坡度图和波动图
坡度图展示了从一个时期或状态到另一个时期或状态的值变化。例如,这里是一个坡度图,展示了南部地区每个州在2016到2017年间销售排名的变化:
图 10.1:坡度图有助于比较从一个时期或状态到另一个时期或状态的排名或绝对值的变化。
以下是用于创建前述坡度图的一些功能和技术:
-
表格计算Rank(SUM(Sales))是通过(按州分组)计算的,这意味着每个州在单一年度的分区内进行排名。
-
网格线和零线的行已设置为无。
-
轴已经被反转(右键单击轴并选择编辑,然后勾选反转选项)。这样可以使排名**#1**显示在顶部,较低的排名按降序排列。
-
轴已被隐藏(右键单击轴并取消勾选显示标题)。
-
标签已被编辑(点击标签)以显示在线的两端,垂直居中,并将排名数字放在州名旁边。
-
年份列标题已从视图底部移至顶部(从顶部菜单中选择分析 | 表格布局 | 高级,然后取消选中将最内层级别显示在底部的选项)。
-
已添加数据高亮(在视图中的
State字段的下拉菜单中选择显示高亮),使最终用户能够突出显示一个或多个州。
数据高亮使用户能够通过从下拉列表中选择值或输入内容(任何部分匹配的值都会高亮显示标记;例如,输入Carolina会高亮显示北卡罗来纳州和南卡罗来纳州)。数据高亮可以显示在你在视图中使用的任何离散字段(蓝色),并且可以跨多个视图在仪表板中使用,只要这些视图中使用了相同的字段。
坡度图可以使用绝对值(例如,销售额的实际值)或相对值(例如,销售额的排名,如本例所示)。如果你展示超过两年的数据以观察排名在多个时期的变化,那么结果的可视化图表可能被称为碰撞图,其外观如下:
图 10.2:此碰撞图显示了每个州随时间变化的排名变化,并利用了高亮功能。
坡度图在比较前后的排名或从一个州到另一个州的排名时非常有用。碰撞图则将这一概念扩展到多个时期。当你想要理解排名的相对变化并对比这种变化时,可以考虑使用这两种图表之一。
接下来,我们将考虑一种帮助我们理解部分与整体关系的图表。
漏斗图
瀑布图在你想展示各个部分如何逐步累积到整体时非常有用。例如,在以下截图中,瀑布图显示了利润如何在各个部门和产品类别中逐步累积到最终总和。有时利润为负数,在这种情况下,瀑布图会出现下跌,而正值则逐步累积到总和:
图 10.3:该瀑布图显示了每个类别如何增加(或减少)利润,逐步构建出总和
以下是构建图表所使用的特性和技巧:
-
SUM(Profit) 字段在行上是一个累计总和表计算(使用快速表计算从下拉菜单创建),并且是跨整个表计算的。
-
已经在视图中添加了行总计(从分析窗格拖放)。
-
标记类型设置为甘特条形图,并使用了临时计算,代码为:SUM(Profit) 来确定大小。一开始这可能看起来有点奇怪,但它会让甘特条形图根据实际值绘制,当利润为正时填充向下,利润为负时填充向上。
-
类别按其利润总和升序排序,使得瀑布图在每个部门内从左到右逐渐(或负向)构建。你可能需要尝试不同的排序选项,看看它们对展示效果的影响。
瀑布图将帮助你展示一个逐步累积或向总和/整体值推进的过程。接下来,我们将考虑阶梯线和跳跃线,用来展示随时间变化的离散变化。
阶梯线和跳跃线
标记类型设置为线条,点击路径架,你将看到三种线条类型选项:
图 10.4:点击标记卡上的路径,改变线条类型
这三种选项为:
-
线性:使用倾斜的线条来强调值之间的运动或过渡。这是默认设置,并且本书中所有的线图示例都使用了这种线条类型。
-
阶梯线:保持连接,但强调离散的变化步骤。当你想表达值之间没有过渡,或者过渡是一个离散的变化步骤时,这种线条类型非常有用。例如,你可能想展示一段时间内发电机的数量变化。从 7 到 8 的变化是一个离散的变化,可能最适合用阶梯线表示。
-
跳跃线不连接,当值发生变化时,会开始新的一条线。跳跃线在你想展示某个特定状态存在一段时间后跳到另一个状态时非常有用。例如,你可能想展示一家酒店随时间变化的日入住率。跳跃线可以帮助强调每一天的入住率是一个新的值。
在以下示例中,我们使用之前用瀑布图演示的利润构建过程,采用阶梯线来显示每一步骤的利润变化:
图 10.5:阶梯线图强调突变或离散差异。
尝试切换线条类型,查看其视觉效果以及每种类型对数据的传达方式。
小火花图
**小火花图(Sparklines)**是通过多个小型线形图展示的可视化,它们旨在快速读取和比较。小火花图的目标是提供一种可以一眼看懂的可视化。你并不是在传达精确的数值,而是让观众快速理解趋势、变化和模式。
在这种可视化方法的各种用途中,你可能已经在财务出版物中看到过小火花图,用于比较股票价格的变动。回想一下,在第一章中,我们讨论了**小火花图(Sparklines)**的初步实现,分析了折线图的迭代过程。这里是一个更加完善的示例:
图 10.6:小火花图让你快速浏览多个类别的时间变化趋势。
你可以通过以下步骤构建这样的图表:
-
从订单日期(Order Date)按季度(Quarter)展示销售总和(SUM(Sales))的简单视图开始,并将类别(Category)放入行(Rows)。
-
创建两个计算字段,显示每个类别的季度最低和最高销售额。**最低销售额(Min Sales)**的公式是
WINDOW_MIN(SUM(Sales)),**最高销售额(Max Sales)的公式是WINDOW_MAX(SUM(Sales))。将这两个字段添加到行(Rows)**中,作为离散(蓝色)字段。 -
将计算字段最后销售(Last Sales),公式为
IF LAST() == 0 THEN SUM([Sales]) END,放入行(Rows),并使用同步的双轴与圆形标记类型,突出显示每个时间段的最终销售值。 -
编辑**销售总和(SUM(Sales))**的轴,使每行或列具有独立的轴范围,并隐藏轴。这可以突出显示线条的变化。记住:目标不是显示精确的数值,而是让观众看到模式和变化。
-
隐藏**行(Rows)**的网格线。
-
调整视图大小(水平压缩并设置为适应高度(Fit Height))。这将使小火花图适应小空间,便于快速理解模式和趋势。
小火花图可以与各种时间序列一起使用,帮助快速洞察整体趋势和行为。
哑铃图
**哑铃图(Dumbbell chart)**是圆形图的一种变体,用于比较每个数据切片的两个数值,突出显示这两个数值之间的距离。
例如,下面是一个展示东西部地区利润差异的图表,按每个**类别(Category)**的产品进行展示:
图 10.7:哑铃图强调两个数值之间的距离/差异。
此图表是使用以下功能和技术构建的:
-
已使用同步的双轴图,其中一个轴用于标记利润总和(SUM(Profit)),另一个轴用于**圆形(Circle)标记,另一个用于线形(Line)**标记。
-
类别已按利润降序排序(排序时将东部和西部的利润合并)。
-
区域已放置在路径架位上,以便线条告诉 Tableau 在两个区域之间绘制一条线。
路径架位适用于线条和多边形标记类型。当你将字段放置在路径架位时,它告诉 Tableau 连接点的顺序(按照放置在路径上的字段的排序顺序)。路径通常用于地理可视化中,连接原点和目的地,但也可以用于其他可视化类型。Tableau 会在两个值之间(在此例中是东部和西部)绘制一条线。
-
区域已放置在颜色上,用于圆形标记类型。
哑铃图非常适合突出值之间的差异。接下来我们考虑如何使用单位/符号图表来推动反应。
单位/符号图表
单位图表可以用来显示单个项目,通常使用形状或符号来代表每个个体。这些图表能够引起强烈的情感反应,因为数据的表现形式不那么抽象,更容易识别为真实的事物。例如,下面的图表显示了每个区域中有多少客户的订单发生了延迟发货:
图 10.8:每个图像代表一个真实的人,远比圆形或方形更具象
该视图使用了以下技术:
-
视图被过滤,仅显示延迟发货为True的记录。延迟发货是一个计算字段,用于判断订单是否超过
14天才发货。代码如下:DATEDIFF('day', [Order Date], [Ship Date]) > 14 -
区域已按客户 ID的不同计数降序排序。
-
客户 ID已放置在详细信息上,以便为每个独立客户生成一个标记。
-
标记类型已更改为形状,并且形状已更改为性别形状调色板中的人形图形。要更改形状,请点击形状架位并选择所需的形状,如下图所示:
图 10.9:你可以使用形状架位将形状分配给维度值
前述的单位图表可能比标准条形图更能引起区域经理的反应,尤其是在他们被温和提醒,客户服务不佳会影响真实人群时。尽管这些形状仍然是抽象的,但它们更能代表实际的人物。你还可以考虑为标记添加客户姓名标签或使用其他技巧来进一步吸引你的观众。
请记住,通常在 Tableau 中,每个维度值交叉点都会生成一个标记。因此,对于一个只包含某字段值10的单行数据,绘制10个单独的形状会相当困难。这意味着你需要考虑数据的形态,并包含足够的行数来绘制你希望表示的单位。
在任何类型的可视化中,具体的形状也能显著减少理解数据所需的时间。对比这两个散点图中识别部门所需的努力量:
图 10.10:注意左图和右图之间的“认知负荷”差异
一旦你了解了形状的含义,就不再需要参考图例。将离散字段放置在形状架上,可以将形状分配给字段的各个值。
形状是位于My Tableau Repository\Shapes目录中的图像。你可以通过在该目录下添加文件夹和图像文件,将自定义形状包含在子文件夹中。
Marimekko 图表
Marimekko 图表(有时也叫做Mekko 图表)类似于垂直堆叠条形图,但额外使用了不同宽度的条形图来传达有关数据的更多信息。例如,下面是一个Marimekko 图表,展示了按区域和部门分类的销售情况。
条形图的宽度传达了区域的总销售额,而每个部分的高度则展示了部门在该区域内的销售百分比:
图 10.11:每个部分的高度表示每个部门的销售额,而每个条形图的宽度则表示每个区域的总销售额
在 Tableau 中创建 Marimekko 图表利用了根据坐标轴的单位固定条形图宽度的功能。
当一个连续(绿色)字段位于列上(从而定义了横轴),且标记类型设置为条形时,点击大小架会显示固定大小的选项。你可以手动输入大小和对齐方式,或将字段拖到大小架上,以改变条形图的宽度。
创建这种可视化所需的步骤如下:
-
标记类型已特别设置为条形。
-
区域和部门分别被放置在颜色和详细信息架上。它们是视图中唯一的维度,因此定义了视图的详细级别。
-
销售额已放置在行上,并应用了总百分比快速表计算。计算方式(地址)已设置为部门,这样我们就能得到每个部门在区域分区中的销售百分比。
-
计算字段区域销售计算了每个条形图右侧位置的X轴位置。代码如下:
IF FIRST() = 0 THEN MIN({EXCLUDE [Department] : SUM(Sales)}) ELSEIF LOOKUP(MIN([Region]), -1) <> MIN([Region]) THEN PREVIOUS_VALUE(0) + MIN({EXCLUDE [Department] : SUM(Sales)}) ELSE PREVIOUS_VALUE(0) END
虽然这段代码一开始可能显得令人望而生畏,但它遵循了逻辑进程。具体来说,如果这是第一个条形段,我们需要知道Region的总和,我们需要将之前Region的总和与新的Region总和相加。否则,计算的是同一个Region中的另一个条形段,因此区域总和与前一个条形段相同。再次注意,Compute Using选项已设置为Department,以使逻辑进程按预期工作。
最后,对视图进行了几个额外的调整:
-
Size字段是一个临时的详细计算,代码为
{EXCLUDE [Department] : SUM(Sales)}。正如我们之前提到的,这排除了Department字段,允许我们获取Region级别的销售总和。这意味着每个条形的大小是根据给定Region的总销售额来确定的。 -
点击Size架构可以设置条形的对齐方式为右对齐。由于之前的计算给出了条形的正确位置,我们需要确保条形从该起始点绘制。
-
各种字段,如SUM(Sales)的绝对值和百分比,已被复制到Label架构中,以便每个条形段能够更清晰地传达含义给观众。
要为每个Region列添加标签,您可以考虑创建第二个视图并将两个视图放置在仪表板上。或者,您也可以使用注释。
除了让您能够创建 Marimekko 图表外,控制条形的大小(以坐标轴单位为准)还为创建其他可视化提供了各种可能性,例如复杂的级联图或阶梯面积图。使用的技术与此处相似。您还可以将大小调整功能与连续区间结合使用(使用下拉菜单将视图中的区间字段从离散更改为连续)。
有关 Marimekko 图表的更全面讨论,以及适用于稀疏数据的处理方法,请参阅 Jonathan Drummey 在www.tableau.com/about/blog/2016/8/how-build-marimekko-chart-tableau-58153上的博客文章。
动画可视化
Tableau 的早期版本通过Pages架构和播放控制实现了简单的动画效果。Tableau 2020.1 引入了真正的Mark Animation,意味着在应用筛选器、排序或分页变化时,标记会平滑过渡。考虑通过以下几种方式利用动画来扩展您的分析潜力:
-
在探索和分析数据时启用它。这使您能够获得您可能会错过的分析洞察,例如看到随着筛选器变化,散点图中的标记会向哪个方向移动。
-
战略性地使用它来增强数据故事。动画可以用来吸引注意力、突出重要元素,或为结论的出现制造悬念。
我们将在接下来的示例中考虑两种动画方法。
通过动画增强分析效果
考虑以下柱状图,展示了每个部门的销售额和利润的相关性:
图 10.12:每个部门的销售额和利润
注意区域过滤器。在Chapter 10工作簿中多次更改过滤器选择。你将观察到没有动画时的标准行为:圆形标记会立即在过滤器确定的新位置重新绘制。这是有效的,但在过滤器设置之间存在一些脱节。当你在区域之间切换时,注意到在跟踪标记的位置和新选择之间的心理难度。某个区域的标记是增加了利润吗?是减少了销售额吗?
现在,为视图开启动画。为此,使用菜单选择格式 | 动画…。动画格式面板将出现在左侧。使用它为选定工作表启用动画:
图 10.13:动画格式面板提供了工作簿和单个工作表动画设置的各种选项
尝试不同的持续时间设置并更改过滤器值。注意从一个区域到另一个区域销售额和利润变化的观察有多么容易。这让你能更轻松地注意到变化。即使不花费大量的认知精力,你也会开始洞察变化的大小和方向。动画为此分析洞察提供了路径。
通过动画增强数据讲故事的效果
除了在进行数据发现和分析时提供分析洞察外,你还可以利用动画更有效地激发兴趣,并突出数据故事中的决策点、机会或风险。例如,考虑一下Chapter 10工作簿中的这个视图:
图 10.14:阿波罗 13 号任务期间 O2 气罐 1 和 2 的压力读取随时间变化
这个视图讲述了阿波罗 13 号任务和灾难的故事,它通过使用页面架和流畅的动画来实现这一点。尝试调整Chapter 10工作簿中的动画速度和播放控件。考虑一下动画如何用来提高意识、激发兴趣,甚至制造悬念。
当你在仪表板上使用多个视图,并且每个视图在页面架上拥有相同的字段组合时,你可以通过同步播放控件(使用播放控件上的下拉菜单)来创建一个完全动画化的仪表板。
动画可以与其他 Tableau Desktop 用户共享,并在 Tableau Server、Tableau Online 和 Tableau Public 上显示。
总结
在本章中,我们涵盖了多种高级可视化类型!我们讨论了显示排名或数值变化的斜率图和凸起图,展示离散变化值的阶梯线和跳跃线,以及帮助具体化抽象概念的单元图。
不能涵盖所有可能的可视化类型。相反,我们的目的是展示一些可以实现的方式,并激发新的创意和灵感。当你尝试并不断迭代新的数据呈现方式时,你将变得更加自信,能够更好地传达数据背后的故事。接下来,我们将简要回到仪表盘的话题,看看一些高级技术如何使其真正变得动态。