展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 编程开发 > 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绘制八种常见可视化图表的具体方法。从折线图到雷达图,每种图表都有它最适合的应用场景。数据可视化这件事,工具是固定的,但如何把数据讲成故事,才是真正的功夫所在。

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发 Python
相关文章 更多
精品专题 更多
本月促销

正软商城本月促销专区,汇集办公、设计、安全、影音、系统工具及AI软件等正版软件优惠活动,提供限时折扣、特价授权和优惠购买信息,活动库存及价格以页面实时展示为准。

装机必备

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

Windows

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

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

PDF教程

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

Mac软件 更多
灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Menuist
Menuist

Menuist 是一款面向 macOS 的 Finder 右键菜单增强工具,主要用来补充新建文件、快捷导航等常用操作,让日常文件管理和访问路径时更高效、更顺手。

Mole
Mole

Mole 是一款专为 Mac 设计的深度清理优化工具,涵盖缓存清理、应用管理及实时状态监控等功能。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

PinStack
PinStack

PinStack是一款轻量级的Windows平台剪贴板管理工具,优化您的剪贴板使用体验。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Seer
Seer

Seer是一款在Win平台下的空格键功能增强效率工具,只需轻敲空格键,就能预览几乎任何格式的文件。它更适合把零散的小功能集中起来使用,处理高频琐碎任务时会更省事。