6.1 图表选择指南

本章学习目标

  • 理解数据可视化的核心目的:探索 vs 解释
  • 掌握不同分析场景对应的图表类型
  • 了解每种图表的优势和局限
  • 学会根据数据特征和分析目标选择图表
  • 核心能力:不只会画图,更知道为什么画这张图

一、为什么要做数据可视化?

1.1 可视化的核心价值

"一张好的图表,胜过千言万语。"

对比维度 表格/数字 图表
理解速度 慢(需要逐行阅读) 快(一眼看出趋势)
发现规律 难(数字不直观) 易(图形揭示模式)
沟通效果 枯燥 生动
信息密度 适中
精确性 较低(需要标尺)

1.2 可视化的两种目的

目的 说明 场景 图表特点
探索性分析 自己看图,发现数据中的规律 前期数据分析、找特征 可以复杂、多维度、尝试多种图表
解释性分析 向他人展示,传达明确结论 报告、PPT、汇报 简洁、清晰、突出重点

核心原则:探索时可以画100张图,汇报时只用1张最能说明问题的图。

二、图表选择的决策框架

2.1 核心问题:你想表达什么?

在选择图表之前,先问自己:

问题 对应的分析目的
想比较大小? 对比不同类别的大小
想看趋势? 数据随时间的变化
想看占比? 部分与整体的关系
想看分布? 数据的分散和集中程度
想看关系? 两个变量之间的关联
想看组成? 整体由哪些部分构成

2.2 图表选择总览图

复制代码
你想表达什么?
    │
    ├── 比较大小 ──→ 柱状图(类别少)、条形图(类别多)
    │
    ├── 趋势变化 ──→ 折线图(时间序列)
    │
    ├── 占比关系 ──→ 饼图(类别少)、环形图、堆叠柱状图
    │
    ├── 数据分布 ──→ 直方图(单变量)、箱线图(对比分布)、小提琴图
    │
    ├── 变量关系 ──→ 散点图(两变量)、热力图(多变量相关)
    │
    └── 地理数据 ──→ 地图

三、按分析目的选择图表

3.1 比较大小------柱状图、条形图

什么时候用:想比较不同类别之间的数值大小。

核心原则:用柱子的高度(或长度)代表数值大小,越长/越高表示数值越大。

图表类型 适用场景 优点 缺点 例子
垂直柱状图 类别名称较短、类别数量适中(3-8个) 直观、易读 类别名太长会重叠 各品牌销量对比
水平条形图 类别名称较长、类别数量多(8个以上) 标签易读 占空间大 各省份GDP排名
分组柱状图 同时比较两个维度(如不同年份的不同产品) 对比清晰 类别多了会拥挤 2019/2020/2021年各产品销量
堆叠柱状图 想看总量+内部构成 同时展示总量和结构 难以对比中间部分 总销售额+各品类贡献

选择指南

  • 类别名称短(2-4个字)→ 垂直柱状图
  • 类别名称长(5个字以上)或数量多 → 水平条形图
  • 想强调排名 → 排序后画水平条形图

常见错误

  • ❌ Y轴不从0开始(会夸大差异)
  • ❌ 3D柱状图(无信息增量,反而难读)
  • ❌ 柱子间距不合理(过密或过疏)

如何向AI描述

"画一个柱状图,X轴是品牌,Y轴是平均价格,按价格从高到低排序"

3.2 趋势变化------折线图

什么时候用:想看数据随时间(或其他有序变量)的变化趋势。

核心原则:用点代表数据,用线连接相邻点,强调变化的连续性。

适用场景 说明 例子
时间序列数据 最经典的应用 月销售额趋势、股价走势
有序类别 如年龄段(0-18,18-30,30-45...) 不同年龄段患病率
对比多个趋势 多条折线在同一图 对比不同产品的销售趋势

折线图 vs 柱状图

对比维度 折线图 柱状图
强调什么 变化趋势、连续性 数值大小、对比
数据特点 X轴有序(通常是时间) X轴是类别
适用场景 趋势分析、预测 横向对比

选择原则:X轴是时间或其他有序变量 → 折线图优先;X轴是类别(如品牌、地区) → 柱状图优先。

常见错误

  • ❌ 类别型数据用折线图(如不同"品牌"的价格连线------连线的意义是什么?)
  • ❌ 缺失数据时直接连线(可能误导)
  • ❌ 同时展示太多线条(超过5条就难读了)

如何向AI描述

"画一个折线图,X轴是月份,Y轴是销售额,按不同产品画多条线"

3.3 占比关系------饼图、环形图、堆叠柱状图

什么时候用:想看各部分占整体的比例。

核心原则:用面积(而非长度)代表比例,强调"整体中的一部分"。

重要警告 :饼图是争议最大的图表。很多专家建议慎用饼图,因为人眼对面积的感知不如对长度的感知敏感。

图表类型 适用场景 优点 缺点
饼图 类别极少(2-4类)、想强调占比 直观、易懂 类别多了难读;难以精确比较
环形图 同饼图,中间可加总数 视觉效果更好 同饼图
堆叠柱状图 多个整体+内部结构 可同时对比多个整体的组成 难以对比中间的类别
百分比柱状图 只看比例不看总量 适合对比不同群体的构成 丢失了规模信息

饼图使用铁律

  1. 类别不超过5个(超过就用条形图)
  2. 从12点钟方向开始,按从大到小顺时针排列
  3. 比例必须加起来为100%
  4. 不用3D饼图(视觉扭曲)

什么时候不用饼图

  • 类别超过5个 → 变成"千层饼",完全无法阅读
  • 需要精确比较比例 → 条形图更适合(长度对比更精准)
  • 比例非常接近 → 饼图难以区分差异

替代方案

  • 多类别 → 水平条形图(更清晰)
  • 多整体对比 → 分组柱状图百分比堆叠柱状图

如何向AI描述

"画一个饼图,展示各品类的销售额占比,按占比从大到小排列"

3.4 数据分布------直方图、箱线图、小提琴图

什么时候用:想看数据的集中趋势、分散程度、偏态、异常值。

图表类型 适用场景 优点 缺点 例子
直方图 单变量分布 直观看到分布形状 对bin数量敏感 年龄分布、价格分布
箱线图 单变量分布+对比多组分布 简洁、信息密度高 丢失细节(看不到双峰) 不同城市的价格分布对比
小提琴图 箱线图升级版,需要看分布形状 保留分布形状+箱线图信息 较复杂,新手难读懂 比箱线图信息更丰富
密度图 平滑版直方图 平滑、美观 带宽选择影响形状 概率密度估计
3.4.1 直方图

核心原则:将数据分成连续的区间,用柱子高度代表落在该区间的数据数量。

关键参数

参数 说明 影响
bin数量 分组的数量 bin太少→信息损失;bin太多→噪音太多
bin宽度 每个区间的宽度 影响分布形状的呈现

如何选择bin数量

  • 数据量大(>1000条)→ 可以多用些bin(20-50)
  • 数据量小(<100条)→ 少用些bin(5-10)
  • 默认值通常可用,有疑虑就多试几个值

从直方图能读出什么

形状特征 含义 例子
对称钟形 正态分布 身高
右侧长尾 正偏态(右偏) 收入、房价
左侧长尾 负偏态(左偏) 考试通过率
两个高峰 双峰分布 可能有混合群体
孤立的柱子 可能有异常值 少数极高值

如何向AI描述

"画一个价格列的直方图,bin数量设为50"

3.4.2 箱线图

核心原则:用五个统计量概括数据分布:最小值、Q1、中位数、Q3、最大值。超出1.5倍IQR的点标记为异常值。

箱线图的结构

复制代码
          异常值 ●
              |
     ┌───────┴───────┐(上边缘:Q3 + 1.5×IQR)
     │               │
     │   ┌───────┐   │
     │   │       │   │
  ───┼───┼───────┼───┼───(Q3:75%分位数)
     │   │   Q3  │   │
     │   │       │   │
     │   │  ~~~  │   │ ← 中位数线
     │   │       │   │
     │   │   Q1  │   │
  ───┼───┼───────┼───┼───(Q1:25%分位数)
     │   │       │   │
     │   └───────┘   │
     │               │
     └───────────────┘(下边缘:Q1 - 1.5×IQR)
              |
          异常值 ●

箱线图的优势

  • 信息密度高,一张图包含多个统计量
  • 特别适合对比多组分布
  • 自动标记异常值

箱线图的局限

  • 看不到分布形状(如果数据是双峰,箱线图无法反映)
  • 需要理解分位数概念才能读懂

如何向AI描述

"画一个箱线图,X轴是品牌,Y轴是价格,看不同品牌的价格分布对比"

3.4.3 箱线图 vs 小提琴图
对比维度 箱线图 小提琴图
信息内容 5个统计量 统计量+完整分布形状
可读性 高(易读懂) 中(需要解释)
美观度 一般
适用场景 快速对比多组 需要看分布形状的细节

选择建议

  • 快速报告、汇报对象非技术背景 → 箱线图
  • 自己的探索性分析、技术报告 → 小提琴图

如何向AI描述

"画一个小提琴图,X轴是变速箱类型,Y轴是价格,中间叠加箱线图"

3.5 变量关系------散点图、热力图

什么时候用:想看两个或多个变量之间的关系。

图表类型 适用场景 优点 缺点 例子
散点图 两个连续变量的关系 直观看到相关模式 数据量大时点重叠 年龄vs价格
气泡图 三个变量的关系(XY+大小) 增加信息维度 可能过度拥挤 价格vs里程+销量
热力图 多变量相关性矩阵 信息密度极高 无法看到非线性关系 各特征相关性
散点图矩阵 多个变量的两两关系 全面扫描 信息量大,需解读 探索多变量关系
3.5.1 散点图

核心原则:每个点代表一个样本,X轴和Y轴分别代表两个变量。

从散点图能读出什么

点的模式 含义 相关系数r 例子
从左下到右上 正相关 r > 0 功率↑ → 价格↑
从左上到右下 负相关 r < 0 里程↑ → 价格↓
云状无方向 不相关 r ≈ 0 价格vs车身颜色编码
曲线形 非线性关系 接近0 某些倒U型关系

常见陷阱

  • ❌ 数据量太大(>10000点)→ 点重叠严重,无法读图 → 考虑抽样或六边形分箱图
  • ❌ 过度解读异常点(少数离群点可能只是噪音)

如何向AI描述

"画一个散点图,X轴是里程,Y轴是价格,看里程和价格的关系"

3.5.2 热力图(相关系数矩阵)

核心原则:将相关系数矩阵用颜色深浅表示,颜色越深(或越鲜艳)表示相关性越强。

热力图的读法

  • 对角线(变量与自己的相关)= 1(最深色)
  • 上三角和下三角对称
  • 颜色深浅代表相关系数大小

从热力图能发现什么

发现 含义 处理建议
两个特征颜色很深 特征间高度相关(多重共线性) 建模时考虑只保留一个
某特征与目标变量颜色深 强预测力 建模时重点使用
某行/列都很浅 该特征与谁都无关 可能可以删除

如何向AI描述

"画一个相关系数热力图,展示所有数值特征之间的相关性,用颜色深浅表示相关强度"

四、图表选择速查表

4.1 按分析目的查找

你想表达什么 推荐图表 不要用
比较几个类别的数值 柱状图、条形图 饼图(类别多了不行)
看数据随时间的变化 折线图 柱状图(不强调连续性)
看部分占整体的比例(2-4类) 饼图、环形图 折线图(无顺序)
看部分占整体的比例(多类) 水平条形图 饼图(变成千层饼)
看单变量的分布 直方图、密度图 饼图
对比多组数据的分布 箱线图、小提琴图 折线图
看两个变量的关系 散点图 连接线(除非有时间顺序)
看多个变量的相关性 热力图 多个散点图

4.2 按数据类型查找

X轴数据类型 Y轴数据类型 推荐图表
类别(离散) 数值 柱状图、箱线图
时间(有序) 数值 折线图
数值 数值 散点图
类别 类别 堆叠柱状图、马赛克图
数值(单变量) --- 直方图、箱线图

五、本章总结

核心选择原则

原则 说明
目的驱动 先想清楚要表达什么,再选图表
简洁至上 去掉一切非必要元素(3D、过多颜色、网格线)
读者导向 你的读者能看懂这张图吗?
准确第一 不歪曲数据(Y轴从0开始、不用截断的轴)

图表速记口诀

比较用柱状,趋势用折线,占比用饼图(别超5个),分布用箱线,关系用散点,相关用热力。

核心心法

"好的图表不是最复杂的图表,而是能让读者在3秒内理解你想表达什么的图表。"

六、思考题

  1. 你想比较10个城市的人均消费。你会用什么图表?为什么不用饼图?

  2. 你想展示某产品过去12个月的销售额变化趋势。你会用折线图还是柱状图?为什么?

  3. 一份报告中有8个饼图,每个饼图有8个扇区。这个报告有什么问题?你会怎么改进?

  4. 你想对比不同品牌的价格分布(中位数、波动、异常值)。箱线图和小提琴图哪个更合适?为什么?

  5. 你想探索"里程"和"价格"的关系。应该用什么图?如果发现数据有100万点,直接画散点图会遇到什么问题?怎么解决?


下一节预告:6.2 各图表深度解读 ------ 折线图、柱状图、箱线图、散点图、热力图......每种图表的读法和解读要点。

相关推荐
次元工程师!1 小时前
LangFlow开发(一)—安装和部署
git·python·大模型·langflow
deephub1 小时前
Feature Engineering 实战:Pandas + Scikit-learn的机器学习特征工程的完整代码示例
人工智能·python·机器学习·pandas·scikit-learn
code_pgf1 小时前
Python `asyncio` 与 C++ Fiber 的原理与逻辑分析
c++·人工智能·python
张二娃同学1 小时前
第03篇_CNN图像识别入门
人工智能·python·神经网络·cnn
70asunflower1 小时前
7.2 回归 —— 预测一个数字
人工智能·数据挖掘·数据分析·回归
会开花的二叉树2 小时前
从 C++ 转向 AI 应用工程:我的 Python 基础第一阶段复盘
c++·人工智能·python
沪漂阿龙2 小时前
AI大模型面试题:朴素贝叶斯是什么?贝叶斯定理、条件独立、拉普拉斯平滑、文本分类、零概率问题一文讲透
人工智能·分类·数据挖掘
AI玫瑰助手2 小时前
Python流程控制:while循环嵌套与死循环避免技巧
开发语言·python·信息可视化
IT策士2 小时前
Python 中间件系列:消息队列 RabbitMQ 操作
python·中间件·rabbitmq