很多人一拿到数据就先画图看看——画什么?柱状图吧,或者饼图?结果数据没问题,图却选错了,读者 get 不到重点。
图表不是为了"有个图",而是为了把数据里的信息更快、更准地传递出去。今天不讲参数和代码,讲一个更根本的问题:面对一份数据,该选什么图? 按你想表达的内容分成 8 种常见场景,每种告诉你用什么图、为什么、什么时候不能用。
一、想比大小?用柱状图
适用:不同类别之间比多少、排名次(各产品销量、各部门人数、各地区营收、学生成绩排名)。
为什么? 人眼对柱子高度的判断很准,两个柱子差多少一眼看出;而且柱子基线都在 0 线上,不容易误导。
什么时候不能用? 类别超过 10 个会挤成一团看不清(考虑横向柱状图,或只列前几名);想看趋势变化那是折线图的活。柱子一般 5-7 根效果最好,类别多就用横向 barh,文字横着放更好读。
ax.bar(categories, values) # 柱状图
ax.barh(categories, values) # 横向柱状图
二、想看趋势?用折线图
适用:数据随时间变化的走势、连续变量的变化规律(日/月销售额、股价波动、温度变化、网站流量)。
为什么? 线条本身就在表达"连接"和"连续",从左到右一眼看出是涨是跌、平稳还是波动、有没有拐点。
什么时候不能用? 数据是无序离散类别时用柱状图——产品之间没有连续关系,不能拿线连起来;只有两三个点也看不出趋势。注意折线图的 X 轴必须是有序的(时间、年龄这种有大小顺序),别拿"产品A、产品B"这种无序类别当 X 轴,那会误导读者以为它们有连续关系。
ax.plot(x, y)
三、想看占比?慎选饼图
适用:一个整体分成几个部分,看各部分占整体的比例(公司收入构成、市场份额、预算分配)。
饼图是被滥用最多的图表,两个致命弱点:一是人眼对角度的判断远不如对长度准,两个扇形差 5% 你很难看出哪个大;二是类别一多就乱,最多放 5-6 块,多了就成五颜六色的披萨。
饼图的正确打开方式: 类别不超过 5 个、有一个你想强调的明显大部分、你真的在表达"占整体比例"而不是"谁比谁大"。如果只是想比大小,哪怕是百分比,也请用柱状图。 环形图(甜甜圈图)本质是中间挖洞的饼图,优缺点一样。
ax.pie(values, labels=categories, autopct='%1.1f%%')
四、想看两个变量的关系?用散点图
适用:两个数值型变量之间有没有关联、强弱、正负(身高和体重、广告费和销售额、学习时间和分数)。
散点图把两个变量的联合分布完整呈现,每个点是一个样本,点的整体形态就是关系本身。你一眼能看出:正/负相关、线性还是非线性、关系强还是弱(贴成一条线还是散成一片云)、有没有异常值。
什么时候不能用? 其中一个变量是类别就用箱线图;数据点少于 20 个画出来没意义;想精确读数值也别看散点图。可以叠加回归线,但记住——相关不等于因果,散点图只告诉你"有关系",不告诉你"谁导致谁"。
ax.scatter(x, y)
五、想看分布?用直方图或箱线图
直方图:看整体形状
适用:一组数据是怎么分布的——集中在哪、分散程度、偏不偏、有没有双峰(员工工资、学生成绩、客户年龄)。
它和柱状图像但不是一回事:柱状图 X 轴是类别、柱子有间隔;直方图 X 轴是连续数值区间、柱子没间隔。它最有用的是告诉你数据的"形状":是正态(钟形)还是偏态、集中在中间还是两头、有没有异常的高值或低值。
ax.hist(data, bins=20)
箱线图:看分组对比
适用:多个类别之间比较数据的分布范围和中位数(不同班级成绩、不同部门薪资、不同产品评分)。一条小箱子装了五个关键数:最小值、第一四分位数、中位数、第三四分位数、最大值,外加异常值,信息密度很高。缺点是初学者看不懂——读者不熟就加个说明,或考虑换别的图。
ax.boxplot([group1, group2, group3])
六、想看两类维度交叉?用热力图
适用:两个维度交叉,看交叉点数值大小,找规律找异常(星期×小时客流量、产品×地区销量矩阵、所有变量两两相关系数矩阵)。
人眼对颜色深浅非常敏感——一堆数字表格看半天找不到规律,换成热力图,颜色深浅一眼扫过去模式就出来了(比如周末下午人最多、工作日凌晨最少)。连续型数据用渐变色,别用彩虹色,彩虹色的深浅感知不均匀。
import seaborn as sns
sns.heatmap(data_matrix, annot=True, cmap='YlOrRd')
七、想按地理看?用地图
适用:数据带地理位置,想直观展示地区差异(各省销售额、各国用户数、各城市门店)。优点是直观、地区差异一目了然,缺点是制作门槛高,需要地理数据(shapefile 或 GeoJSON)。Python 里可用 pyecharts(交互地图效果好)、geopandas(数据分析场景常用)、plotly。初学先把基础图练熟,真有地理数据要展示了再针对性学。
八、一张决策表,选图不纠结
拿到数据先问自己"我想表达什么",然后按表选图:
| 不同类别比大小 | 柱状图 | 条形图 | 饼图(类别多了没法比) |
| 随时间变化的趋势 | 折线图 | 面积图 | 柱状图(趋势感弱) |
| 各部分占整体的比例 | 饼图(≤5类) | 堆叠柱状图 | 折线图 |
| 两个变量的关系 | 散点图 | 气泡图 | 柱状图(看不出分布) |
| 一组数据的分布 | 直方图 | 密度图 | 折线图 |
| 多组数据的分布对比 | 箱线图 | 小提琴图 | 柱状图(只看平均不够) |
| 两个维度交叉的大小 | 热力图 | 分组柱状图 | 散点图 |
| 数据的地理位置差异 | 地图 | 柱状图 | 饼图 |
最后一句:图表是工具,不是装饰。 能用最简单的图把事情说清楚,就别用复杂的,信息传递效率永远排第一。
真实运行效果
把“想比大小就用柱状图”这个判断真跑一遍,实际输出是这样的:

截图里先打印了三类产品的真实销售额数据框,再按决策表判定“比大小→柱状图”并完成绘图,最后附上速查表,选型判断和运行过程一目了然。
下一篇聊聊怎么把默认的"丑图"改成"专业级图表"——不改数据,只调样式,效果差一大截。
梅雅达编程工作室 · Python数据实战系列第12篇
选对图表,分析效率翻倍。
网硕互联帮助中心



评论前必须登录!
注册