喜乐君·数据分析夏令营 第 3 期:从问题到图形——可视化原理

图形不是随便画的。本文讲透可视化的基本原理,以及 Tableau 中“从问题到图形”的结构化方法,让图表自己说话。

喜乐君(XILEJUN):Tableau Visionary 名人堂成员,著有《数据可视化分析》《业务可视化分析》等。slogan:「唯有知识让我们免于平庸」。

📌 要点 · 图形不是“挑好看的”,问题类型在落笔前就决定了最佳图形; · 可视化 = 空间 + 坐标轴,坐标轴只来自“连续”字段(Tableau 中以绿色表示); · 维度≠离散、度量≠连续——连续 / 离散是主观的“字段角色”,数据类型才是客观的。

开场:从问题到图形

前两期我们解决了一个根本问题——问题怎么写。第 1 期立起了「业务 ← 数据 → 分析」的框架,第 2 期把问题的统一结构讲透:一个问题 = 范围 + 维度(的左边)+ 度量(的右边)。

这一期的定位是可视化落地:把写好的问题真正变成图形。一句话概括本期主线——问题的最佳图形,在你写问题时就已经确定,不是挑好看的。

但这里有一个容易被忽略的转折:问题的结构(维度 / 度量)解决的是"问题怎么写",而真正决定一个图形能不能画出来、长什么样子的,是另一个属性——字段的连续与离散。上一次我们结尾预告过这句话:"什么问题生成什么图形,连续 / 离散属性决定能否生成轴。"这一期,我们就把这句话彻底落地。

顺着这个逻辑,问题类型与最佳图形之间有这样一条自然的对应关系(后面会逐一落地):

  • 比较 / 排序 —— 条形图、柱状图
  • 趋势 / 时间 —— 折线图
  • 构成 / 占比 —— 饼图、环图、百分比堆积图
  • 分布 / 形状 —— 直方图、盒须图(下期详讲)
  • 关系 / 相关 —— 散点图、气泡图

图形不是"挑好看的",是"问题自然选出来的"。

从问题到图形:问题类型与可视化主视图

一、先理解数据:一行对应什么业务过程

明细表每行 = 一笔业务过程;分析的本质是分组 + 聚合

动手画图之前,先要搞清楚你手上的数据对应的是什么业务过程——这是分析的地基。

这一期我引入了一份新的案例数据:一份美国各州学生心理测评的统计结果。它想回答的问题是"各个州、不同年度、不同群体的心理健康状况如何"。这份数据来自公开样本,已经在源头被高度聚合——每一行代表"某一年度、某一个区域、某一个观察视角(type,比如总体、男学生、女学生)下,某个题项(question)的一个 percent 值"。比如阿拉斯加在 2023 年总体健康是 13.2%,旁边还带一个上下波动的区间(可信区间),因为样本数据天然围绕真值波动。

这里要提醒一个关键的方法论:理解一份数据,必须理解它最详细的业务过程对应到哪一级"颗粒度"。一行数据到底代表什么?如果到不了最细的那一级(我们常说"要到一"),你就没法真正理解这份数据。比如,当你看到坐标轴上最大值是 2 时,就说明一定存在某一行的值是 2;如果所有行都是 1,轴只会延伸到 2(表示连续性)。反过来,如果最大值是 3,就必然有一行是 2。这个细节能帮你判断数据的详细级别。

为了讲清"什么才是唯一的",我现场切换到了大家熟悉的超市订单数据:订单 id 看起来唯一,但加上"订单计数"你会发现它并不唯一;再加上"产品"依然可能不唯一——因为同一次购物可能被扫成两行,也可能合并成一行。所以"什么是唯一的"取决于业务过程本身,而行 id 在业务上往往没有意义,只是技术上的标识。

结论:高度聚合的结果表(如这份心理测评)并不适合做底层的大数据分析,用它来理解业务过程也不够客观;但用它来讲可视化原理恰好合适。动手画图前,先想清楚"一行对应什么"。

二、从条形图理解可视化的原理

我们不从交叉表开始(交叉表无所谓图形),而是从最基础的条形图开始——理解了条形图,其他图形就都好理解了。

2.1 双击一个值:连续 → 轴 → 空间 → 图

条形图生成原理:双击值 → 连续 → 轴 → 空间 → 图

在 Tableau 中,当你双击一个度量值(比如 percent),它默认会被聚合(SUM),并且默认是连续的。而连续的值,为了表达"连续性",它会生成一个坐标轴——这个轴从零开始,向上延伸到该值(比如 90K、100K 的刻度)。

当你再加入一个维度(比如 area 区域),视图里出现了多个值,它们都被放在同一个连续的刻度上去比较"谁多谁少",图形就这样自然出现了。比如把年份加进来,轴上有 2019、2021、2023 等多个值;再把区域加进来,值更多——它们都被放在同一个连续刻度上比高低。

这里引出了 Tableau 最关键的视觉语言之一:颜色代表连续 / 离散——

  • 绿色 = 连续:生成轴、数值刻度、连续区间;
  • 蓝色 = 离散:生成标题(header)、标签、分组。

而第 2 期讲的"维度 / 度量"是另一组属性,靠数据窗格里的一条分隔线区分(线上是维度、线下是度量),那是字段的"内容"分类。

2.2 图形的价值:规律 vs 细节

为什么我们更喜欢看图形?因为图形在表达数据的同时,直观地展示了规律。

举个例子:把性别放到颜色上,男女两组心理健康得分一对比,立刻能看出"某一侧比另一侧更低"。我们甚至可以加两根参考线(比如平均值),把结论直接可视化。

但这里有个重要的权衡:图形让精确性下降,却让规律性提高。具体的值从 41.87 变成了"大约 40 多",确定性降低了;但"谁高谁低"的规律被凸显了。抽象与具体是一对相反的东西——当你要表达的东西更抽象、更概括时,就不得不以失去一些细节为代价。这就好比一个将军,长征时能记住每个兵的名字,现在手底下兵太多,他记不住了——细节和抽象,在可视化里往往不可兼得。

2.3 坐标空间:轴 → 笛卡尔空间

规律依赖图形,图形依赖什么?依赖坐标的空间;坐标空间依赖什么?依赖坐标轴。没有坐标轴,就没有空间,也就没有图形。

最典型的空间就是我们中学就学过的笛卡尔空间,通俗地说就是直角坐标系(X 轴、Y 轴)。Tableau 里的"行(row)"和"列(column)",本质上就是在构建这个行列空间。你做任何一个图,其实都是在用行和列撑起一个坐标空间。

但要记住:空间不只有一种。地图对应的是球面空间,饼图对应的是极坐标空间——它从 12 点钟方向往右转,那才是饼图真正的"轴"。我们外面的 XY 轴,你可以理解为只是把饼图"放"在了一个空间里。

三、连续与离散:图形能否生成的开关

维度与度量(内容分类)和连续与离散(使用方式)是正交的两组属性

可视化的地基是坐标轴,而只有连续性字段才能产生坐标轴。所以连续 / 离散,才是图形能否生成的那个"开关"。

3.1 什么是连续性

严格来说,具有连续性的东西有两种:

  • 数值:40 一定比 30 大、比 35 小,天然可以排到无穷;
  • 日期 / 时间:2018、2019…2024,可以一直往后排,也可以往前排。

进一步区分,连续性又分两种:

  • 无限连续:可以永远往下排、排不到尽头(数值、日期);
  • 有限连续(次序):比如心理测评里的"健康、良好、危险",它也有连续性,但有尽头——到了"危险"后面就没了。正因为有限,我们通常不会用轴来显示它,更不会用条形图去给它"排序"(排序的前提是没有既定次序)。

与之相对的是不连续(离散):比如地区、人名。人和人之间天然平等,你不能说"谁在前谁在后"——除非你给了一个排序的依据(比如按某个连续值排序)。没有依据,它就是不连续的,不能放在轴上。所以所有图形的基础,其实都来自这个连续 / 离散的区分。

3.2 字段角色(Role)vs 数据类型(Data Type)—— 核心区分

字段分类里,有一对极易混淆的概念,必须严格区分:

  • 数据类型(data type):是字符串、日期还是数字?它是客观的——当你把一张数据表加入 Tableau 时,类型就确定了。你可以改(把日期改成小数、改成字符串),但那只是改了你"肉眼看见的",数据在存储层面依然是它本来的样子,改回默认值就回去了。
  • 字段角色(role):是连续还是离散?它是主观的——只存在于"问题"之中。

关键在这里:在明细表(detail)里,只有客观的数据类型,没有主观的字段角色;只有在你提出一个问题、把字段拖进行列时,角色才出现。同一个字段,在 A 问题里是维度(离散),在 B 问题里可能变成度量(连续)。所以连续 / 离散不是写死的,右键随时可以切换——你甚至可以为了少占视觉空间,把一个绿色的连续字段右键改成离散。

这就打破了那个最常见的误区:维度 ≠ 离散,度量 ≠ 连续。二者是正交的两组属性——

  • 维度 / 度量,是按"内容"分(位置区分,分隔线上 / 下);
  • 连续 / 离散,是按"使用方式"分(颜色区分,绿 / 蓝)。

日期是维度,但可以作连续(生成轴);数量是度量,但右键可离散成标题。很多国产 BI 工具把"字符串 = 不连续、数字 = 连续"硬绑定在一起,正是认知上的误区——分不清这一点,就不是一个好的 BI。

四、三图一表:业务分析的四个基本功

三图一表:条形图(排序)、折线图(趋势)、饼图/环图(层次)、交叉表(精确)

绝大多数业务问题,落到图形上就是这四个形态:表给精确、图给直觉。先把这四样练扎实,再谈花式图表。我们顺着条形图、折线图、饼图、交叉表的顺序一个个讲。

4.1 条形图:排序问题的最佳图形

条形图的统一规律是:一个离散(分类)字段 + 一个连续(值)字段。离散的字段本身没有次序(不能说阿拉斯加必须在前),但我们可以用那个连续的值去给它排序——这就是为什么你能"点一下就排序"。注意:阿拉斯加排在前面,只是计算机默认的字母次序(ABCD),在业务上往往没有意义,真正有意义的次序来自那个连续的值。

  • 我更推荐横向条形图而非柱状图:人对"长度"比"高度"更敏感,左边的标签也能显示得更清楚。
  • 当有多个字段时,谁在后面,谁就是视觉的焦点。比如把"性别"放在区域后面,强调的是"每个区域内部男女的差异";反过来,则强调"可比的男女内部、不同区域谁高谁低"。动手前先想清楚你要强调的规律是什么。
  • 加一根平均参考线(通常用虚线),能直接把组间差异标出来。

4.2 折线图:看趋势

日期本身就是连续的。当横轴是日期(连续)时,它不能被排序——于是我们不再比较高低,而是看它沿着时间怎么变。

所以三图一表里最核心的两个图,区别就在"能不能排序":没有时间的字段,我们默认强调那个离散字段的高低排序(条形图);有了连续的日期,就强调沿时间的趋势(折线图)。这就是问题类型决定最佳图形的具体体现。

4.3 饼图:高级分析的入门(层次感)

为什么说饼图是高级分析的入门?因为饼图里藏着前面条形图、折线图都没有的一种东西——分析上的层次感。

看一个"不同性别的问卷数量"的饼图:表面上它回答的是显性问题(各性别的数量);但当你用"合计百分比"时,它同时回答了隐性问题(占总体 19719 的多少)。那个分母(total)是全体性别之和,在饼图里被隐含进了百分比。

在 Tableau 里,这个百分比的本质是 SUM(...) / SUM(...) 外面套了一个 total——而 total 换个说法就是窗口函数(window sum),在 SQL 里是 SUM() OVER (...)。Tableau 里我们称之为表计算。所以饼图"高级"在:它是两个不同力度的问题叠加在一起。

4.4 环形图:饼图的升级版

可视化框架:标记(颜色、标签、大小)像化妆一样一层层叠加

饼图好看但不"好用"——它把隐含的分母藏起来了。于是有了环形图:用双轴把"各性别"和"总体"两个观察视角叠在一起,把分母明确放出来。环形图比饼图用得更多,不只是因为好看,更因为它更丰富,把那一层潜在的意思表达出来了。

顺带提一句可视化的"框架":行列是空间(坐标系),坐标系里可以叠很多层——颜色是一层,标签是一层,再加一句话又是一层。这就像女人化妆:洗洗脸、打粉底、抹粉、画眉毛,一层一层上来。可视化也是一层一层叠出来的,而这一层一层,靠的就是"标记(marks)"卡。

4.5 交叉表:所有图形的反面

最后说"一表"——交叉表。它是任何一个图形背后硬币的反面。

蒋老师写的《结构可视化原理》里有一个很好的方法:当你做一个图太难时,先从交叉表开始——先把表里的数算出来,再想"哪里该造一个轴、该用连续还是离散",把轴造出来、把数填进去,图形就慢慢长出来了。所以说:所有的可视化背后其实都是交叉表。

五、可视化原理总结与下期预告

直方图:频数分布,引出数据桶与 FIXED LOD(下期详讲)
盒须图:集中度分布,盒与须都是表计算的简化形式(下期详讲)

今天这一期,我们讲清了可视化的底层原理:

  • 可视化 = 空间 + 坐标轴;坐标轴在 Tableau 里对应绿色的连续字段。
  • 连续 / 离散是主观的,就像维度 / 度量一样,右键随时可切换;但数据类型是客观的,在明细表里就定下了。
  • 问题类型决定最佳图形:离散 + 连续 → 条形图(排序);连续日期 → 折线图(趋势);构成占比 → 饼图 / 环形图(层次);而看"形状"则要靠下期的分布分析。

我常跟学生说一个词叫"逆流而下":很多人学 BI 总想着抄近路、抄国产工具,结果连数据类型和字段角色都分不清,设计出来的工具、教出来的方法都走样。与其逆流而上累死在半路,不如一开始就爬上 Tableau 这座"喜马拉雅山",再俯冲下来——等你掌握了工具背后的分析方法,换任何国产工具都是降维打击。

下期预告:分布分析(直方图与盒须图)

今天因为时间关系,还差两块最重要的内容没讲完,留到下一期——直方图与盒须图,它们都属于分布分析。

心理测评本质上就是分布的特征:男和女比对、这个班级和那个班级比对,看的都是"分布长什么样"。在分析中,真正的转折点是从分布分析开始的。而分布分析的典型,一个是直方图(连续度量按区间分箱看频数,顺带引出数据桶与 FIXED LOD),一个是盒须图(看中位数、四分位、须与离群点,盒与须都是表计算的简化形式)。

下期,我们就从"看多少"跨入"看形状"。

No comments yet