跳到主要内容

图表选型指南

问题

如何根据分析目的选择合适的图表?常见图表类型的适用场景是什么?

答案

按分析目的选图

核心图表速查表

图表类型分析目的数据要求适用场景
柱状图对比分类 + 数值各渠道收入对比
条形图对比(分类多)分类 + 数值Top 10 产品排名
折线图趋势时间 + 数值DAU 日趋势
面积图趋势+构成时间 + 分组数值各渠道流量趋势
饼图占比分类 + 数值收入来源占比(≤6 类)
直方图分布连续数值用户年龄分布
箱线图分布+异常分组 + 数值各城市订单金额分布
散点图关系两个数值广告花费 vs 转化
热力图关系矩阵二维数值矩阵相关系数矩阵
瀑布图增减构成分步数值利润拆解
桑基图流转来源→去向用户转化路径
漏斗图转化各步骤数值注册转化漏斗
树状图层级占比层级 + 数值品类收入占比

常见选图错误

避免这些图表误用
  1. 饼图类别太多:超过 6 类就改用条形图,人脑无法比较过多扇区
  2. 3D 图表:几乎所有 3D 效果都是视觉噪声,歪曲数据比例
  3. 双 Y 轴折线:两条线 Y 轴范围不同,容易误导(可用分面替代)
  4. 截断 Y 轴:柱状图 Y 轴不从 0 开始,放大差异误导读者
  5. 不排序的条形图:条形图应按值排序,否则难以比较

Python 快速选图

各场景的图表选择
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

np.random.seed(42)

fig, axes = plt.subplots(2, 3, figsize=(15, 10))

# 1. 对比 → 条形图(水平,排序后)
categories = ['搜索', '社交', '直接', '邮件', '广告']
values = [320, 280, 150, 90, 60]
order = np.argsort(values)
axes[0, 0].barh([categories[i] for i in order], [values[i] for i in order])
axes[0, 0].set_title('对比 → 条形图')

# 2. 趋势 → 折线图
dates = pd.date_range('2024-01', periods=12, freq='M')
axes[0, 1].plot(dates, np.cumsum(np.random.randn(12) * 10 + 5))
axes[0, 1].set_title('趋势 → 折线图')
axes[0, 1].tick_params(axis='x', rotation=45)

# 3. 分布 → 直方图
axes[0, 2].hist(np.random.lognormal(3, 1, 1000), bins=30, edgecolor='white')
axes[0, 2].set_title('分布 → 直方图')

# 4. 占比 → 饼图(≤6类)
labels = ['A', 'B', 'C', 'D']
sizes = [40, 30, 20, 10]
axes[1, 0].pie(sizes, labels=labels, autopct='%1.0f%%', startangle=90)
axes[1, 0].set_title('占比 → 饼图')

# 5. 关系 → 散点图
x = np.random.rand(100) * 100
y = x * 0.8 + np.random.randn(100) * 15
axes[1, 1].scatter(x, y, alpha=0.6)
axes[1, 1].set_title('关系 → 散点图')

# 6. 分布对比 → 箱线图
data = [np.random.normal(loc, 5, 100) for loc in [20, 25, 30]]
axes[1, 2].boxplot(data, labels=['A', 'B', 'C'])
axes[1, 2].set_title('分布对比 → 箱线图')

plt.tight_layout()
plt.show()

图表选择决策树

你有什么数据?分析目的推荐图表
1 个分类 + 1 个数值对比大小柱状图/条形图
时间 + 1 个数值看趋势折线图
时间 + 多组数值看趋势对比多折线 / 分面
1 个连续数值看分布直方图 / 密度图
分组 + 1 个数值分布对比箱线图 / 小提琴图
2 个数值看相关散点图
3 个数值看相关+维度气泡图
分类占比(≤6)看比例饼图 / 环形图
多步骤数值看转化漏斗图
流转方向看流向桑基图

常见面试问题

Q1: 什么时候用折线图、什么时候用柱状图?

答案

  • 折线图:X 轴是连续的(通常是时间),强调变化趋势
  • 柱状图:X 轴是离散分类,强调数值对比
  • 常见错误:用折线图连接无序分类(如不同城市)

Q2: 为什么不推荐用饼图?

答案

  • 人脑对面积/角度的感知远不如长度
  • 超过 5-6 类时几乎无法区分差异
  • 替代方案:用排序后的条形图更清晰
  • 唯一适合饼图的场景:只有 2-3 类且不需要精确比较

Q3: 数据看板上应该放什么图?

答案

  • 顶部:KPI 数字卡片(最关键指标 + 同比/环比)
  • 中间:趋势图(核心指标走势) + 对比图(分维度对比)
  • 底部:明细表(支持筛选下钻)
  • 原则:一屏看全局,点击看细节

Q4: 如何选择颜色?

答案

  • 分类数据:用定性调色板(互不相关的颜色),如 Tableau 10
  • 连续数据:用渐变色(从浅到深),如 viridis
  • 对比数据:用发散调色板(红-白-蓝),突出正负
  • 避免红绿配色(色盲不友好)
  • 同一图表颜色不超过 7 种

相关链接