画图的过程会逼你把「我想比较什么」说清楚。说不清就画不出来——这是图形最值钱的地方。 图给人的东西是假设,不是结论。实验设计师看完图提的那几条假设,都得靠对照实验去验。 交付一张图的标准句式是:一句结论、一张图、一个下一步。三样缺一样,图就只是壁纸。
这一篇收第 4 章。前三篇是工具,这一篇是用法——图在分析流程里到底站在哪一格。 书里到这儿故事收尾,订单滚滚而来。现实里没有这么干净的结局,最后一节会把话说全。
一、画图的过程就是思考的过程
嘴上说「我想看看数据」,手一放到键盘上就得回答:横轴放什么、纵轴放什么、颜色分几组。 这几个问题答不出来,说明你还没想清楚要比什么。图画不出来,不是手笨,是脑子里的问题还没成形。 所以画图不是分析的最后一步,是中间一步。画到一半发现图画不下去,往往是最好的收获。
客户指着图上某个点问「它为什么在这儿」,也是同一个机制——这个问题会逼你回去查数据。
二、实验设计师的假设
看到「停留时长与转化率」那张散点图,实验设计师提了三条:图放大一点,人就会多停留; 停留久了就会多买;多买的人下次还会来。 三条听着都顺,但一条都没被验证。每一条都是一个可以设计的实验:改一个变量,其他不动,跑两周。 第一、二条可以合起来测:A 组用大图,B 组用原图,比停留时长和转化率。第三条要测复购,得等更久。
注意「其他不动」这四个字:同一个月、同一批流量来源、同一个价格。少一个条件,结论就不可信。
三、假设要能被证伪
「放大图会提高转化」这句是可证伪的:跑完发现 B 组反而更高,这句话就被推翻了。 「用户体验更好了」这句不可证伪:怎么算更好?没有数,就没有反驳的机会,也就没有信息。 做分析的人有个习惯值得学:提假设时就顺手写上「什么结果说明我错了」。写不出来,说明这条假设不能测。
这一条和第 2 章的实验设计是一回事。图形负责提,实验负责验,两个缺一个都成不了结论。
四、交付时怎么讲一张图
第一句说结论:把资源给上海,因为它每千访客带来 11388 元,比最低的广州高 69%。 第二句说依据:这张图按每千访客收入排序,颜色标出转化率。 第三句说下一步:先在广州试两周落地页改版,有效再推广。
三句话之外都是解释。讲图的人最容易犯的错,是从「我用了什么数据」开始讲——听众要的是结论,不是过程。 还有一条:图的标题要写成一句话结论,不要写「各城市转化率对比图」。 标题是这张图唯一保证会被读到的一行字。
五、故事之外:这本书没说的两件事
第一件:书里的数据都干净。 现实里的数据有缺行、有重复、有口径变过——同一列数在 6 月换了统计方式,这种事很常见。 第二件:书里的结论都被采纳了。 现实里一张图能不能改变决定,还取决于会议室里的权力和预算,不只看分析对不对。 这两件事都不影响这一章的方法。方法是对的,只是方法之外还有别的变量。
第 4 章到此结束。下一章换一个问题:数据不够、只能靠猜的时候,怎么猜得有理有据。
六、动手 Demo:多元图形与分面:一张纸说四件事
按转化率和客单价各切一刀,六个城市落进四格,再把四格画成 2×2 的四张小图。 分面是四种编码通道里精度最高的一个——代价是占地方。
import os
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
CITY = [("北京", 3.4, 268.0), ("上海", 3.9, 292.0), ("广州", 2.8, 241.0),
("成都", 4.6, 205.0), ("杭州", 4.1, 255.0), ("西安", 5.2, 188.0)]
RATE_CUT, AOV_CUT = 4.0, 250.0 # 两条分界线是人为定的
grid = {}
for nm, cr, aov in CITY:
grid.setdefault((cr >= RATE_CUT, aov >= AOV_CUT), []).append(nm)
for hi_r in (True, False):
for hi_a in (True, False):
g = grid.get((hi_r, hi_a), [])
print("%s转化 %s客单 -> %s"
% ("高" if hi_r else "低", "高" if hi_a else "低",
"、".join(g) if g else "空"))
fig, ax = plt.subplots(figsize=(5.0, 3.2), dpi=110)
ax.axis("off")
ax.set_title("2x2 facets: conversion rate by city", fontsize=8)
for k, (hi_r, hi_a) in enumerate(((True, True), (True, False),
(False, True), (False, False))):
sub = ax.inset_axes([0.04 + (k % 2) * 0.48, 0.52 - (k // 2) * 0.48,
0.44, 0.38])
g = [c for c in CITY if (c[1] >= RATE_CUT) == hi_r
and (c[2] >= AOV_CUT) == hi_a]
sub.bar(range(len(g)), [c[1] for c in g], color="#7f9fd0")
sub.set_xticks(range(len(g)))
sub.set_xticklabels(["c%d" % (CITY.index(c) + 1) for c in g], fontsize=6)
sub.tick_params(labelsize=6)
sub.set_title("%s rate / %s order" % ("hi" if hi_r else "lo",
"hi" if hi_a else "lo"), fontsize=6)
fig.tight_layout()
fig.savefig("panels.png")
plt.close(fig)
print("分面图存成 %d 字节" % os.path.getsize("panels.png"))
实跑输出:
--------------------------------------------------------------------
多元图形与分面:一张纸说四件事
--------------------------------------------------------------------
① 把六个城市切成四块
--------------------------------------------------------------------
按「转化率高/低」和「客单价高/低」切一刀,六个城市落进四格。
| 转化率 | 客单价 | 城市 | 数量 |
|---|---|:---:|---|
| 高 | 高 | 杭州 | 1 |
| 高 | 低 | 成都、西安 | 2 |
| 低 | 高 | 北京、上海 | 2 |
| 低 | 低 | 广州 | 1 |
② 分面:四张小图并排
--------------------------------------------------------------------
把四格画成 2×2 的四张小图,每格一根柱子,高度是该城市的转化率。
分面的好处是:不用把三个变量硬塞进一张图,读者一眼能对上。
分面图存成 PNG:13592 字节
③ 图形是拿来思考的
--------------------------------------------------------------------
画图的过程会逼你把「我想比较什么」说清楚。说不清,图画不出来。
客户看图的时候,会问「为什么这个点在这儿」——这个问题会逼你回去查数据。
所以图不是分析的终点,是分析的中间产物。
! 一张让人「哦」一声的图,比十页表格有用;一张只让人「嗯」一声的图,不如不画。
④ 这一章的收尾
--------------------------------------------------------------------
图形化的根本在于正确比较。位置、大小、颜色、分面,都是为了让比较成立。
下一章换一个问题:当数据不够、只能靠猜的时候,怎么猜得有理有据。
分界线定在 4.0% 和 250 元,是人为的。 换个界线,四格里的城市会变——分面之前要先说清按什么切,这是分面唯一容易被藏起来的地方。 六个城市里,右下那格(低转化、低客单)只有广州一个。一格里只有一个点,这张小图其实什么也比不了。
30 秒实验
- 把两条分界线换成均值(转化率均值 4.0%、客单价均值 241.5 元),四格里的城市会怎么变?
- 把分面改成「颜色标转化率、位置标客单价」,一张图能不能装下同样多的信息?会丢什么?
- 想一想:这一章三份图被退回,最后一张分面图被接受了。真正让它被接受的是图本身,还是那三句话?
常见误区
- 画完就完了:图不配结论,等于把解读的活全推给读者,读者通常不会接。
- 标题写「XX 对比图」:标题是唯一保证被读到的一行,写成目录就是浪费。
- 分界线随手定:用均值、中位数、还是业务阈值,得说得出理由,否则分面就是在制造结论。
- 把假设当结论讲:散点图看出来的关系,讲成「因为……所以……」就是越界。
自测三问(点开对答案)
1. 为什么说画图是分析的中间一步? —— 因为画图会逼你回答「比什么、怎么比」。答不出来的地方,就是问题还没想清的地方。 2. 一条假设要能被验证,得先满足什么? —— 可证伪:能事先说出「出现什么结果说明我错了」。说不出来就没法测。 3. 交付一张图的三句话是什么? —— 一句结论、一张图作依据、一个下一步。第 4 章收尾。第 5 章开始处理「数据不够」这件事:手里只有一小批数,怎么猜得有理有据。
- ☐ (本篇完,下一篇 5.1 手机皮肤与已知信息)