当前位置:

首页 > 编程开发 > Python使用Matplotlib绘制基础可视化图表的完整指南

Python使用Matplotlib绘制基础可视化图表的完整指南

Matplotlib是Python数据可视化核心工具,支持折线图、柱状图、饼图、散点图、直方图、箱线图、热力图和雷达图等常见图表。通过示例代码和数据,展示了各图表的绘制方法、中文显示设置及网格线、标签等要素。

本文目录

    在数据可视化领域,Matplotlib可以说是Python生态中最基础但也最核心的工具之一。无论你是想快速生成一张报表图,还是想为论文或演示准备专业的可视化素材,它都能帮你搞定柱状图、折线图、饼图、散点图、直方图、箱线图、热力图、雷达图等一系列常见图表。

    当然,开始之前得先把Matplotlib装上。如果还没装,直接来一句:

    pip install matplotlib

    装好之后,咱们就一个一个来。

    1. 折线图 (Line Chart)

    折线图的拿手好戏,是展示数据随时间变化的趋势。比如上半年的销售额,放在折线图上一目了然。

    import matplotlib.pyplot as plt
    
    # 解决中文显示问题 (Windows系统使用SimHei,Mac系统可换成PingFang SC)
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    
    # 准备数据
    months = ["1月", "2月", "3月", "4月", "5月", "6月"]
    sales =[78,85,74,95,84,80]
    
    # 绘制折线图
    plt.figure(figsize=(8, 5))  # 设置画布大小
    plt.plot(months, sales, marker="o", color="blue", linewidth=2, label="销售额")
    
    # 添加标题和标签
    plt.title("上半年销售额趋势")
    plt.xlabel("月份")
    plt.ylabel("销售额(元)")
    plt.legend()  # 显示图例
    plt.grid(True, linestyle="--", alpha=0.5)  # 添加网格线
    
    plt.show()

    效果图:

    Python使用Matplotlib绘制基础可视化图表的完整指南

    2. 柱状图 (Bar Chart)

    想比较不同产品之间的销量?柱状图是最直观的选择。它就像把一堆数据摆在你面前,高矮立现。

    import matplotlib.pyplot as plt
    
    # 解决中文显示问题
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    
    # 准备数据
    products = ["手机", "电脑", "耳机", "平板", "手表"]
    sales =[78,85,74,95,84]
    
    # 绘制柱状图
    plt.figure(figsize=(8, 5))
    plt.bar(products, sales, color="orange", width=0.6)
    
    # 在柱子顶部添加具体的数值标签
    for index, value in enumerate(sales):
        plt.text(index, value + 10, str(value), ha="center")
    
    # 添加标题和标签
    plt.title("不同产品销量对比")
    plt.xlabel("产品")
    plt.ylabel("销量")
    
    plt.show()

    效果图:

    Python使用Matplotlib绘制基础可视化图表的完整指南

    3. 饼图 (Pie Chart)

    饼图的强项在于展示占比——谁在整体中占据多大一块,一目了然。比如用户来源渠道,用饼图呈现最合适不过。

    import matplotlib.pyplot as plt
    
    # 解决中文显示问题
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    
    # 准备数据
    channels = ["搜索引擎", "短视频", "社交媒体", "直接访问", "邮件"]
    users =[1000, 500, 300, 400, 200]
    
    # 绘制饼图
    plt.figure(figsize=(7, 7))
    plt.pie(
        users, 
        labels=channels, 
        autopct="%.1f%%",  # 显示百分比,并保留1位小数
        startangle=90,     # 设置饼图起始角度
        counterclock=False # 按顺时针方向绘制
    )
    
    plt.title("用户来源占比")
    plt.show()

    效果图

    Python使用Matplotlib绘制基础可视化图表的完整指南

    4. 散点图 (Scatter Plot)

    散点图是用来观察两个变量之间是否存在关联的利器。测试数据模拟了100名学生的“每日学习时长”与“期末考试成绩”,用来判断两者是否存在正相关。

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 设置中文显示
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    
    # 生成测试数据:100个学生的学习时长(1-8小时)和对应的成绩
    np.random.seed(42) # 固定随机种子,保证每次运行结果一致
    study_hours = np.random.uniform(1, 8, 100)
    # 成绩 = 学习时长 * 8 + 基础分40 + 随机波动
    scores = study_hours * 8 + 40 + np.random.normal(0, 5, 100)
    
    # 绘制散点图
    plt.figure(figsize=(8, 5))
    plt.scatter(study_hours, scores, color="skyblue", edgecolors="black", alpha=0.7)
    
    plt.title("学习时长与考试成绩的关系", fontsize=14)
    plt.xlabel("每日学习时长 (小时)")
    plt.ylabel("考试成绩 (分)")
    plt.grid(True, linestyle="--", alpha=0.5)
    plt.show()

    效果图

    Python使用Matplotlib绘制基础可视化图表的完整指南

    5. 直方图 (Histogram)

    直方图是观察数据分布形态的标配。测试数据模拟了1000名成年男性的身高数据(符合正态分布),用来展示整体分布区间。

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 设置中文显示
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    
    # 生成测试数据:1000名男性的身高 (均值175cm,标准差7cm)
    np.random.seed(42)
    heights = np.random.normal(175, 7, 1000)
    
    # 绘制直方图
    plt.figure(figsize=(8, 5))
    # bins=30 表示将数据分成30个区间,color设置颜色,edgecolor设置柱子边框色
    plt.hist(heights, bins=30, color="mediumseagreen", edgecolor="black", alpha=0.7)
    
    plt.title("成年男性身高分布情况", fontsize=14)
    plt.xlabel("身高 (cm)")
    plt.ylabel("人数")
    plt.grid(axis="y", linestyle="--", alpha=0.5)
    plt.show()

    效果图

    Python使用Matplotlib绘制基础可视化图表的完整指南

    6. 箱线图 (Box Plot)

    箱线图最适合拿来对比多组数据的分布情况——中位数、波动范围、异常值一览无余。测试数据模拟了A、B、C三个班级的数学成绩,用来对比各班水平和异常值情况。

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 设置中文显示
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    
    # 生成测试数据:三个班级的数学成绩
    np.random.seed(42)
    class_A = np.random.normal(75, 10, 100) # A班:均值75,标准差10
    class_B = np.random.normal(80, 8, 100)  # B班:均值80,标准差8
    class_C = np.random.normal(70, 12, 100) # C班:均值70,标准差12(波动更大)
    
    # 将数据组合成列表传入
    data_to_plot = [class_A, class_B, class_C]
    labels = ["A班", "B班", "C班"]
    
    # 绘制箱线图
    plt.figure(figsize=(8, 5))
    plt.boxplot(data_to_plot, labels=labels, patch_artist=True, 
                boxprops=dict(facecolor="lightcoral", color="black"),
                medianprops=dict(color="white"))
    
    plt.title("三个班级数学成绩分布对比", fontsize=14)
    plt.ylabel("数学成绩")
    plt.grid(axis="y", linestyle="--", alpha=0.5)
    plt.show()

    效果图

    Python使用Matplotlib绘制基础可视化图表的完整指南

    7. 热力图 (Heatmap)

    热力图的应用场景非常有趣——它能帮你一眼扫出数据中的“热点”区域。不过绘制热力图,我们通常搭配一个更漂亮的库:seaborn。先装好依赖:

    pip install matplotlib seaborn numpy pandas

    测试数据模拟了一周七天内、某电商平台24小时的订单量矩阵。用它来找找哪个时间段是真正的下单高峰期。

    import matplotlib.pyplot as plt
    import seaborn as sns
    import numpy as np
    import pandas as pd
    
    # 设置中文显示
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    
    # 生成测试数据:7天 x 24小时的订单量矩阵
    np.random.seed(42)
    days = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
    hours = [f"{h}点" for h in range(24)]
    # 模拟数据:周末和晚间订单量较高
    orders = np.random.randint(10, 100, size=(7, 24))
    orders[5:, 18:23] += 50  # 周末晚间增加订单量
    
    # 将数据转换为 DataFrame
    df = pd.DataFrame(orders, index=days, columns=hours)
    
    # 绘制热力图
    plt.figure(figsize=(14, 6))
    # annot=True 显示数值,fmt="d" 表示显示为整数,cmap 设置颜色主题
    sns.heatmap(df, annot=False, fmt="d", cmap="YlOrRd", cbar_kws={'label': '订单量'})
    
    plt.title("一周内每小时订单量热力图", fontsize=14)
    plt.xlabel("时间")
    plt.ylabel("星期")
    plt.show()

    效果图

    Python使用Matplotlib绘制基础可视化图表的完整指南

    8. 雷达图 (Radar Chart)

    雷达图,也叫蜘蛛图,是多维度数据展示的神器。比如评估一个人的综合能力,或对比不同产品的性能指标,用雷达图一眼就能看清强项和短板。在Python里,借助matplotlib的极坐标系就能轻松实现。下面这个例子模拟了两名游戏角色的六维能力对比。

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 设置中文显示 (Windows系统使用SimHei,Mac系统可换成PingFang SC)
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    
    # 1. 准备测试数据
    # 设定6个能力维度
    categories = ["攻击", "防御", "速度", "耐力", "技术", "策略"]
    num_vars = len(categories)
    
    # 角色A的能力值(假设是均衡型战士)
    stats_A = [85, 90, 70, 88, 75, 80]
    # 角色B的能力值(假设是高攻高速刺客)
    stats_B = [95, 60, 92, 65, 88, 70]
    
    # 2. 计算每个维度的角度
    # 将圆周(2*pi)平均分成 N 份
    angles = np.linspace(0, 2 * np.pi, num_vars, endpoint=False).tolist()
    
    # 3. 闭合图形
    # 雷达图需要首尾相连,所以要把第一个维度的角度和数据追加到列表末尾
    stats_A += stats_A[:1]
    stats_B += stats_B[:1]
    angles += angles[:1]
    
    # 4. 创建极坐标画布并绘图
    fig, ax = plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))
    
    # 绘制角色A的折线和填充区域
    ax.plot(angles, stats_A, color="blue", linewidth=2, linestyle="solid", label="角色 A (均衡型)")
    ax.fill(angles, stats_A, color="blue", alpha=0.2)
    
    # 绘制角色B的折线和填充区域
    ax.plot(angles, stats_B, color="red", linewidth=2, linestyle="solid", label="角色 B (刺客型)")
    ax.fill(angles, stats_B, color="red", alpha=0.2)
    
    # 5. 美化图表
    # 设置半径(能力值)的范围,留出一点空间给图例
    ax.set_ylim(0, 100)
    # 设置维度标签(攻击、防御等)
    ax.set_xticks(angles[:-1])
    ax.set_xticklabels(categories, size=12)
    # 添加图例
    plt.legend(loc="upper right", bbox_to_anchor=(1.3, 1.1))
    # 添加标题
    plt.title("游戏角色六维能力对比雷达图", size=16, pad=20)
    
    plt.show()

    效果图

    Python使用Matplotlib绘制基础可视化图表的完整指南

    以上,就是使用Matplotlib绘制八种常见可视化图表的具体方法。从折线图到雷达图,每种图表都有它最适合的应用场景。数据可视化这件事,工具是固定的,但如何把数据讲成故事,才是真正的功夫所在。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。