Python Excel数据可视化中常用图表生成的完整教学

 更新时间:2026年07月09日 09:12:59   作者:杨利杰YJlio  
这篇文章主要为大家详细介绍了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数据可视化图表的资料请关注脚本之家其它相关文章!

相关文章

  • Python导入不同文件夹中文件的方法详解

    Python导入不同文件夹中文件的方法详解

    在写python程序的时候,经常会用到引入其他文件夹里的py文件,下面这篇文章主要给大家介绍了关于Python导入不同文件夹中文件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Python从列表中随机选择元素的多种实现方法

    Python从列表中随机选择元素的多种实现方法

    在Python编程中,经常会遇到需要从列表中随机选择元素的场景,比如游戏开发中随机选择道具、数据处理时随机抽取样本等,Python提供了多种方法来实现这一功能,不同方法适用于不同的需求,需要的朋友可以参考下
    2025-07-07
  • 解决python2.7用pip安装包时出现错误的问题

    解决python2.7用pip安装包时出现错误的问题

    这篇文章主要介绍了在python2.7用pip安装包时出现错误问题的解决方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • Python上下文管理器用法及实例解析

    Python上下文管理器用法及实例解析

    这篇文章主要介绍了Python上下文管理器用法及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • opencv canny边缘检测算法详解

    opencv canny边缘检测算法详解

    本文主要介绍了opencv canny边缘检测算法详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Django 联表查询操作方法

    Django 联表查询操作方法

    作为一个django使用的新手,在做练手项目中对联表查询感觉比较生疏,最近两天整理了一些连表查询应用场景和使用方法以及无法使用django中ORM操作的原生查询,对Django 联表查询操作感兴趣的朋友跟随小编一起看看吧
    2023-09-09
  • Python实现制作透明背景的电子印章

    Python实现制作透明背景的电子印章

    这篇文章主要为大家详细介绍了如何利用Python语言实现制作透明背景的电子印章,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-09-09
  • 让 python 命令行也可以自动补全

    让 python 命令行也可以自动补全

    这篇文章主要介绍了让 python 命令行也自动补全,需要的朋友可以参考下
    2014-11-11
  • django商品分类及商品数据建模实例详解

    django商品分类及商品数据建模实例详解

    这篇文章主要介绍了django商品分类及商品数据建模实例代码内容,需要的朋友们学习参考下。
    2020-01-01
  • 使用Python实现写入JSON数据到Word文档

    使用Python实现写入JSON数据到Word文档

    本文将介绍如何使用 Python 读取 JSON 数据,并将其以表格、段落等结构化形式自动写入 Word 文档,整个过程可以实现自动化,适用于 API 数据报告生成、配置文档输出、数据库导出数据格式化、业务数据定期汇总等多个场景,希望对大家有所帮助
    2026-06-06

最新评论