Python Excel数据可视化中常用图表生成的完整教学
1. 为什么要先理解常用图表类型?
本文主题是 常用图表类型概述。很多人学 Python 数据可视化时,一上来就背 plt.plot()、plt.bar()、plt.scatter(),但真正做报表时还是会卡住:到底该用折线图、柱形图,还是散点图?
图表不是为了好看,而是为了让数据表达一个明确问题。如果图表类型选错了,即使代码没有报错,读者也可能看不出重点。比如趋势变化应该优先考虑折线图,类别对比可以用柱形图或条形图,变量关系更适合散点图,占比结构才考虑饼图。
先把常用图表类型放在一个总览视角里看,能避免后面写代码时只会“照抄函数”,却不知道每种图表到底适合什么场景。

从图中可以看出,常用图表并不是孤立存在的。折线图看趋势,柱状图看类别对比,条形图适合长文本类别,散点图看变量关系,饼图看占比,面积图看累计变化,雷达图看多指标能力,组合图和双轴图则更偏复杂报表场景。
我的建议是:先判断你要回答什么问题,再决定用什么图表。不要反过来先选图,再硬把数据塞进去。图表选择本质上是数据表达设计,不只是 Python 函数调用。
2. 从数据到图表:Python 可视化的基本流程
Python 做图并不是直接从图表开始,而是从数据开始。尤其是 Excel 自动化场景,常见流程一般是:先读取 Excel 数据,再用 pandas 清洗和整理,最后交给 Matplotlib、Plotly 或其他可视化库生成图表。
如果数据本身没有整理好,图表只会把混乱放大。比如字段名不统一、空值没有处理、数字是文本格式、日期列无法识别,这些问题都会影响最终图表质量。
这里用流程图把“数据源 → Python 处理 → 图表输出”的完整链路串起来,便于理解 Python 可视化不是孤立画图,而是一条数据处理流水线。

从图中可以看出,Excel 只是数据入口,真正关键的是中间的读取、处理、清洗、转换、聚合和筛选。最后生成的折线图、柱状图、饼图、散点图,本质上都是前面数据整理结果的可视化表达。
一个最基础的 Python 绘图流程通常包括以下几步:
import pandas as pd
import matplotlib.pyplot as plt
# 1. 读取 Excel 数据
df = pd.read_excel("data.xlsx")
# 2. 选择需要分析的字段
x = df["月份"]
y = df["销售额"]
# 3. 创建图表
plt.figure(figsize=(8, 5))
plt.plot(x, y, marker="o")
# 4. 设置标题和坐标轴
plt.title("月度销售额趋势")
plt.xlabel("月份")
plt.ylabel("销售额")
# 5. 显示图表
plt.tight_layout()
plt.show()
这里最容易犯的错误,是只关注最后一行 plt.show(),忽略前面的数据清洗。在真实办公数据里,图画不出来或者图不对,大概率不是 Matplotlib 的问题,而是数据结构、字段类型、空值和重复值没有处理好。
3. 折线图:最适合展示趋势变化
折线图最适合处理“随时间变化”的数据,比如月度销售额、每日访问量、工单响应时长、设备故障趋势、补丁安装失败数量等。它的核心价值不是展示某一个点,而是让读者看到数据是上升、下降、震荡,还是出现了异常拐点。
折线图回答的是“变化过程”,不是单点大小。所以只要你的横轴是时间、批次、版本、周期,折线图通常就是优先选项。
下面这张图放在趋势分析小节最合适,因为它直接表达了 1 月到 12 月的数据变化过程。

从图中可以看出,折线图能快速暴露波动节奏。比如某些月份明显上升,某些月份回落,后续又重新拉升。相比表格逐行查看,折线图更适合快速判断趋势方向和异常时间点。
在 Python 中,折线图最常用的是 plt.plot():
import matplotlib.pyplot as plt
months = ["1月", "2月", "3月", "4月", "5月", "6月"]
values = [120, 150, 130, 180, 210, 190]
plt.figure(figsize=(8, 5))
plt.plot(months, values, marker="o", linewidth=2)
plt.title("月度数据趋势")
plt.xlabel("月份")
plt.ylabel("数值")
plt.grid(axis="y", linestyle="--", alpha=0.4)
plt.tight_layout()
plt.show()
实战建议:折线图最好配合数据标签、网格线和清晰的时间轴使用。如果时间点很多,可以适当旋转 x 轴标签,避免文字挤在一起。
4. 柱形图与条形图:类别对比怎么选?
柱形图和条形图本质上都是做类别对比,只是方向不同。柱形图是竖向对比,条形图是横向对比。很多新手会把它们当成同一种图随便用,但在实际报表里,这个选择会直接影响阅读体验。
类别名称短、类别数量不多时,柱形图更直观;类别名称长、需要做排行时,条形图更清晰。
这里用柱形图和条形图的对比图来说明两者差异:同样是类别对比,展示方向不同,适用场景也会变化。

从图中可以看出,柱形图适合快速比较各类别的高低差异,而条形图更适合排行榜。特别是当类别名较长时,条形图能避免 x 轴文字倾斜、遮挡和拥挤。
柱形图示例:
import matplotlib.pyplot as plt
categories = ["A类", "B类", "C类", "D类"]
values = [45, 78, 60, 92]
plt.figure(figsize=(7, 5))
plt.bar(categories, values)
plt.title("类别数据对比")
plt.xlabel("类别")
plt.ylabel("数值")
plt.tight_layout()
plt.show()
条形图示例:
import matplotlib.pyplot as plt
categories = ["企业微信在线文档", "Outlook", "Teams", "Edge浏览器"]
values = [28, 19, 12, 9]
plt.figure(figsize=(8, 5))
plt.barh(categories, values)
plt.title("软件故障次数排行")
plt.xlabel("次数")
plt.tight_layout()
plt.show()
注意:如果类别超过 10 个,不建议继续用普通柱形图硬挤。更稳的做法是先排序,再取 Top N,然后使用条形图展示。
5. 散点图:发现变量关系和异常点
散点图和前面的折线图、柱形图不一样。它不是主要看时间变化,也不是简单看类别大小,而是看两个变量之间有没有关系。比如设备使用年限和故障次数是否相关,CPU 占用率和响应时长是否相关,学习时长和考试成绩是否相关。
散点图回答的是“两个变量之间有没有规律”。如果点大致沿着某个方向分布,说明可能存在相关性;如果点非常分散,就说明关系可能不明显;如果有少数点明显偏离主体,就要关注离群点。
这一张图适合放在散点图章节,因为它把相关性、趋势线、离群点和统计指标放在了同一个观察框架里。

从图中可以看出,散点图不只是“把点画出来”。真正有价值的是观察点的分布方向、密集区域、异常点位置,以及趋势线是否能解释数据关系。比如图中趋势线向右上方延伸,就表示两个变量可能存在正相关。
Python 中绘制散点图通常使用 plt.scatter():
import matplotlib.pyplot as plt
x = [10, 20, 30, 40, 50, 60, 70]
y = [15, 25, 33, 48, 52, 70, 76]
plt.figure(figsize=(7, 5))
plt.scatter(x, y)
plt.title("变量关系散点图")
plt.xlabel("变量X")
plt.ylabel("变量Y")
plt.grid(True, linestyle="--", alpha=0.4)
plt.tight_layout()
plt.show()
实战建议:散点图适合配合相关系数、趋势线和异常点标注一起使用。如果只是简单画一堆点,不解释点的分布规律,读者仍然很难得到结论。
6. 其他常见图表:不要滥用,但要知道适用边界
除了折线图、柱形图、条形图和散点图,Python 数据可视化中还经常会遇到饼图、面积图、雷达图、堆积图、组合图和双轴图。这些图不是不能用,而是更需要控制使用场景。
饼图适合展示少量类别的占比关系,比如不同类型工单占比、不同渠道来源比例。 但如果类别太多,饼图会变得非常难读。通常超过 5 到 6 类,就要考虑改用条形图或堆积图。
面积图适合展示趋势和累计变化,比如不同产品线随时间变化的销售面积。它比折线图更强调“量的堆叠感”,但如果系列太多,也会遮挡严重。
雷达图适合多指标能力对比,比如某个部门在响应速度、解决率、满意度、复发率、处理量等维度上的综合表现。但雷达图不适合做精确读数,它更适合看整体形状。
组合图和双轴图更接近汇报场景。比如一张图里同时展示工单数量和满意度,数量用柱形图,满意度用折线图。 但双轴图一定要谨慎使用,因为不同量纲放在同一张图里,很容易制造误读。
| 图表类型 | 最适合表达 | 不建议使用的场景 |
|---|---|---|
| 折线图 | 时间趋势、连续变化 | 类别过多且无时间关系 |
| 柱形图 | 类别对比 | 类别名称太长 |
| 条形图 | 排行榜、长文本类别 | 时间趋势展示 |
| 散点图 | 变量关系、离群点 | 单一类别统计 |
| 饼图 | 少量类别占比 | 类别太多、差异很小 |
| 雷达图 | 多指标能力画像 | 精确数值对比 |
| 组合图 | 数量 + 趋势同时展示 | 数据量纲差异过大 |
| 双轴图 | 两个量纲同时观察 | 没有明确解释口径 |
7. 我的选择原则:先问问题,再选图表
我自己在做报表或写自动化脚本时,不会先问“用什么函数”,而是先问“这张图要帮我说明什么”。这个顺序非常关键。
推荐的判断顺序是:
- 看趋势 → 折线图
- 看类别对比 → 柱形图 / 条形图
- 看排行 → 条形图
- 看占比 → 饼图 / 堆积图
- 看关系 → 散点图
- 看多指标 → 雷达图
- 看数量+趋势 → 组合图
- 看不同量纲 → 双轴图
这个选择逻辑在办公自动化里非常实用。比如你要做月度工单报告,如果想看每个月工单量变化,用折线图;如果想看各部门工单数量,用柱形图;如果部门名称很长,用条形图;如果想看工单量和满意度同时变化,再考虑组合图或双轴图。
最差的做法,是为了让图表“看起来高级”,强行使用复杂图表。复杂图表不一定专业,能让读者更快理解才是真专业。
8. 常见踩坑:图表没错,但表达错了
数据可视化最容易出现一种情况:代码没错,图也生成了,但表达效果很差。这个时候不要急着怀疑 Python,而要检查图表设计本身。
第一个坑是 图表类型选错。比如把时间趋势做成饼图,把相关性分析做成柱形图,这类问题会让读者很难理解数据真正想表达什么。
第二个坑是 坐标轴没有说明。图表必须让读者知道横轴是什么、纵轴是什么、单位是什么。否则一张图再漂亮,也缺少解释力。
第三个坑是 类别过多。类别太多时,普通柱形图会非常拥挤,饼图也会变成色块拼盘。这个时候应该做排序、筛选、Top N 或合并“其他”。
第四个坑是 只画图,不给结论。技术博客里不能只放一张图然后结束,必须说明从图里能看出什么。否则读者看到了图,却不知道该带走什么判断。
图表的核心不是展示数据,而是帮助读者形成判断。这一点比任何绘图函数都重要。
9. 总结:图表类型是数据表达的第一道选择题
这一节虽然只是“常用图表类型概述”,但它其实是后续所有 Python 可视化学习的基础。因为只有先知道每种图表解决什么问题,后面学习 Matplotlib、pandas 绘图、Excel 图表自动化时,才不会变成单纯背函数。
我从这一节带走的核心结论是: 先明确表达目标,再选择图表类型,最后才写绘图代码。
如果要记住几个最常用的判断,可以这样总结:
看趋势,用折线图;看对比,用柱形图或条形图;看关系,用散点图;看占比,用饼图或堆积图;看复杂报表,再考虑组合图和双轴图。
不要为了炫技而做图。真正好的图表,应该让读者不用猜、不绕弯,能快速看出数据背后的重点。
以上就是Python Excel数据可视化中常用图表生成的完整教学的详细内容,更多关于Python Excel数据可视化图表的资料请关注脚本之家其它相关文章!


最新评论