Python Matplotlib库:从入门到精通
Python Matplotlib库:从入门到精通
在数据分析和科学计算领域,可视化是一项至关重要的技能。Matplotlib作为Python中最流行的绘图库之一,为我们提供了强大的绘图功能。本文将带你从Matplotlib的基础开始,逐步掌握其高级用法,通过具体的代码示例和详细说明,让你轻松实现数据可视化。
1. Matplotlib图表的主要组成部分
Matplotlib图表主要由以下几个部分组成:
- Figure:整个图形,可以把它理解成一张画布,包括了所有的元素,比如标题、轴线等。
- Axes:绘制2D图像的实际区域,也称为轴域区,或者绘图区。
- Axis:指坐标系中的垂直轴与水平轴,包含轴的长度大小、轴标签和刻度标签。
- Artist:画布上所有元素都属于Artist对象,比如文本对象(title、xlabel、ylabel)、Line2D对象(用于绘制2D图像)等。
在开始绘图之前,首先需要安装Matplotlib库。如果尚未安装,可以使用以下命令进行安装:
pip install matplotlib
2. 基础图表绘制
2.1 折线图(Line Plot)
折线图用于显示数据随时间或其他连续变量的变化趋势。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib# 指定默认字体为支持中文的字体,例如 SimHei
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
matplotlib.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题# 创建示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)# 创建一个图形
plt.figure(figsize=(10, 6))# 绘制线图
plt.plot(x, y1, label='正弦', color='red', linewidth=2)
plt.plot(x, y2, label='余弦', color='blue', linewidth=2, linestyle='--')# 添加标题和标签
plt.title('正弦和余弦函数')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend() # 显示图例
plt.grid(True) # 显示网格plt.show()

2.2 散点图(Scatter Plot)
散点图用于显示两个变量之间的关系。
import matplotlib.pyplot as plt
import numpy as np# 创建示例数据
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50)
sizes = 1000 * np.random.rand(50)# 绘制散点图
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='viridis')
plt.colorbar(label='颜色强度')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('散点图示例')plt.show()

3. 多子图绘制
在同一个窗口中绘制多个子图是一个常见需求。
import matplotlib.pyplot as plt
import numpy as np# 创建示例数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 78, 32]# 创建2x2的子图
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(12, 8))# 子图1: 柱状图
ax1.bar(categories, values)
ax1.set_title('柱状图')# 子图2: 折线图
ax2.plot(categories, values, 'r-o')
ax2.set_title('折线图')# 子图3: 散点图
ax3.scatter(categories, values)
ax3.set_title('散点图')# 子图4: 饼图
ax4.pie(values, labels=categories, autopct='%1.1f%%')
ax4.set_title('饼图')# 调整子图间距
plt.tight_layout()
plt.show()

4. 统计图表绘制
4.1 直方图(Histogram)
直方图用于显示数据的分布情况。
import matplotlib.pyplot as plt
import numpy as np# 创建示例数据
np.random.seed(42)
data = np.random.randn(1000)# 创建一个图形,包含多个子图
fig = plt.figure(figsize=(15, 5))# 子图1: 直方图
plt.subplot(131)
plt.hist(data, bins=30, alpha=0.7, color='blue')
plt.title('直方图')
plt.xlabel('值')
plt.ylabel('频次')# 后续可添加箱线图和小提琴图等统计图表...plt.tight_layout()
plt.show()

4.2 箱线图(Boxplot)和小提琴图(Violinplot)
箱线图和小提琴图也是常用的统计图表,用于展示数据的分布特征。
# 接着上面的代码,继续添加箱线图和小提琴图# 子图2: 箱线图
plt.subplot(132)
plt.boxplot(data)
plt.title('箱线图')# 子图3: 小提琴图
plt.subplot(133)
plt.violinplot(data)
plt.title('小提琴图')plt.tight_layout()
plt.show()

5. 高级绘图技巧
5.1 3D图表绘制
Matplotlib还支持3D图表的绘制。
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt# 创建数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))# 创建3D图形
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')# 绘制3D曲面
surface = ax.plot_surface(X, Y, Z, cmap='viridis')
fig.colorbar(surface)
ax.set_title('3D曲面图')plt.show()

6. 实战案例:数据分析可视化
以下是一个实际的数据分析可视化案例,用于展示Matplotlib的实用性。
import matplotlib.pyplot as plt
import numpy as np# 创建销售数据
months = ['1月', '2月', '3月', '4月', '5月', '6月']
sales_a = [100, 120, 140, 130, 150, 160]
sales_b = [90, 110, 130, 140, 145, 155]# 创建组合图表
fig, ax1 = plt.subplots(figsize=(10, 6))# 绘制柱状图
x = np.arange(len(months))
width = 0.35
ax1.bar(x - width/2, sales_a, width, label='产品A', color='skyblue')
ax1.bar(x + width/2, sales_b, width, label='产品B', color='lightgreen')# 设置坐标轴
ax1.set_xticks(x)
ax1.set_xticklabels(months)
ax1.set_ylabel('销售量')
ax1.set_title('月度销售对比')
ax1.legend()# 添加数据标签
for i, v in enumerate(sales_a):ax1.text(i - width/2, v, str(v), ha='center', va='bottom')
for i, v in enumerate(sales_b):ax1.text(i + width/2, v, str(v), ha='center', va='bottom')plt.show()

7. 设置中文
在使用 Matplotlib 显示汉字时,需要进行一些设置以确保汉字能够正确显示。以下是一些关键步骤:
-
设置字体:
Matplotlib 默认不支持中文字符,因此需要指定一个支持中文的字体。常见的中文支持字体有“SimHei”(黑体)、“SimSun”(宋体)等。你可以通过设置rcParams来指定字体。 -
确保字体文件存在:
指定的字体必须存在于你的系统中。在某些操作系统(如 Linux)上,可能需要手动安装相应的字体。 -
代码示例:
下面是一个简单的示例代码,展示如何在 Matplotlib 中显示汉字:
import matplotlib.pyplot as plt
import matplotlib# 指定默认字体为支持中文的字体,例如 SimHei
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
matplotlib.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题# 示例数据
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 40]# 创建图表
plt.figure()
plt.plot(x, y)
plt.title('示例图表')
plt.xlabel('横轴标签')
plt.ylabel('纵轴标签')# 显示图表
plt.show()
- 其他字体设置:
如果你的系统中没有 SimHei 字体,或者你想使用其他字体,可以指定字体文件的路径。例如:
from matplotlib.font_manager import FontProperties# 指定字体文件路径
font_path = '/path/to/your/chinese/font.ttf' # 替换为你的字体文件路径
font = FontProperties(fname=font_path)# 使用指定的字体创建文本
plt.text(2, 20, '使用指定字体显示的汉字', fontproperties=font)
- 保存图表时显示汉字:
当保存图表为图片文件时,同样需要确保字体设置正确。上面的rcParams设置已经涵盖了这一点,但如果你使用的是其他保存方法,确保字体设置一致。
# 保存图表
plt.savefig('example_chart.png')
通过本文的介绍,相信你已经对Matplotlib有了全面的了解,并能够运用它来实现各种数据可视化需求。从基础图表到高级绘图技巧,再到实战案例,Matplotlib都展现出了其强大的功能和灵活性。希望本文能够对你的学习和工作有所帮助!
相关文章:
Python Matplotlib库:从入门到精通
Python Matplotlib库:从入门到精通 在数据分析和科学计算领域,可视化是一项至关重要的技能。Matplotlib作为Python中最流行的绘图库之一,为我们提供了强大的绘图功能。本文将带你从Matplotlib的基础开始,逐步掌握其高级用法&…...
线程概念、操作
一、背景知识 1、地址空间进一步理解 在父子进程对同一变量进行修改时发生写时拷贝,这时候拷贝的基本单位是4KB,会将该变量所在的页框全拷贝一份,这是因为修改该变量很有可能会修改其周围的变量(局部性原理)…...
【PySide6拓展】QSoundEffect
文章目录 【PySide6拓展】QSoundEffect 音效播放类**基本概念****什么是 QSoundEffect?****QSoundEffect 的特点****安装 PySide6** **如何使用 QSoundEffect?****1. 播放音效****示例代码:播放音效** **代码解析****QSoundEffect 的高级用法…...
33【脚本解析语言】
脚本语言也叫解析语言 脚本一词,相信很多人都听过,那么什么是脚本语言,我们在开发时有一个调试功能,但是发布版是需要编译执行的,体积比较大,同时这使得我们每次更新都需要重新编译,客户再…...
【Unity】 HTFramework框架(五十九)快速开发编辑器工具(Assembly Viewer + ILSpy)
更新日期:2025年1月23日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 开发编辑器工具MouseRayTarget焦点视角Collider线框Assembly Viewer搜索程序集ILSpy反编译程序集搜索GizmosElement类找到Gizmos菜单找到Gizmos窗口分析A…...
如何解决TikTok网络不稳定的问题
TikTok是目前全球最受欢迎的短视频平台之一,凭借其丰富多彩的内容和社交功能吸引了数以亿计的用户。然而,尽管TikTok在世界范围内的使用情况不断增长,但不少用户在使用过程中仍然会遇到网络不稳定的问题。无论是在观看视频时遇到缓冲…...
告别页面刷新!如何使用AJAX和FormData优化Web表单提交
系列文章目录 01-从零开始学 HTML:构建网页的基本框架与技巧 02-HTML常见文本标签解析:从基础到进阶的全面指南 03-HTML从入门到精通:链接与图像标签全解析 04-HTML 列表标签全解析:无序与有序列表的深度应用 05-HTML表格标签全面…...
WireShark4.4.2浏览器网络调试指南:数据统计(八)
概述 Wireshark 是一款功能强大的开源网络协议分析软件,被广泛应用于网络调试和数据分析。随着互联网的发展,以及网络安全问题日益严峻,了解如何使用 Wireshark进行浏览器网络调试显得尤为重要。最新的 Wireshark4.4.2 提供了更加强大的功能…...
Hypium+python鸿蒙原生自动化安装配置
Hypiumpython自动化搭建 文章目录 Python安装pip源配置HDC安装Hypium安装DevEco Testing Hypium插件安装及使用方法插件安装工程创建区域 Python安装 推荐从官网获取3.10版本,其他版本可能出现兼容性问题 Python下载地址 下载64/32bitwindows安装文件&am…...
2025创业思路和方向有哪些?
创业思路和方向是决定创业成功与否的关键因素。以下是一些基于找到的参考内容的创业思路和方向,旨在激发创业灵感: 一、技术创新与融合: 1、智能手机与云电视结合:开发集成智能手机功能的云电视,提供通讯、娱乐一体化体…...
实验五---控制系统的稳定性分析---自动控制原理实验课
一 实验目的 1、理解控制系统稳定性的概念 2、掌握多种判定系统稳定性的原理及方法 3、掌握使用Matlab软件进行控制系统的稳定性分析 二 实验仪器 计算机,MATLAB仿真软件 三 实验内容及步骤 1.计算系统闭环特征根,判别系统稳定性; 2.绘制系统…...
AttributeError: can‘t set attribute ‘lines‘
报错: ax p3.Axes3D(fig) ax.lines [] AttributeError: cant set attribute lines 总结下来,解决方案应包括: 1. 使用ax.clear()方法清除所有内容。 2. 逐个移除lines中的元素。 3. 检查matplotlib版本,确保没有已知的bug。…...
Day07:缓存-数据淘汰策略
Redis的数据淘汰策略有哪些 ? (key过期导致的) 在redis中提供了两种数据过期删除策略 第一种是惰性删除,在设置该key过期时间后,我们不去管它,当需要该key时,我们再检查其是否过期,如果过期&…...
基于聚类与相关性分析对马来西亚房价数据进行分析
碎碎念:由于最近太忙了,更新的比较慢,提前祝大家新春快乐,万事如意!本数据集的下载地址,读者可以自行下载。 1.项目背景 本项目旨在对马来西亚房地产市场进行初步的数据分析,探索各州的房产市…...
Java—工具类类使用
工具类的调用:工具类名.方法名 工具类的书写: 示例: 写一个遍历数组的工具类 import java.util.Arrays;public class ArrayUtil {private ArrayUtil() {} //用私有化构造方法不让外界创建关于它的对象//定义static静态方法,因…...
游戏开发领域 - 游戏引擎 UE 与 Unity
游戏引擎 游戏引擎是用于开发电子游戏的软件框架,它提供图形渲染、物理模拟、音频处理、动画系统、脚本编写等功能,帮助开发者高效创建电子游戏 但是,游戏引擎也不仅限于游戏开发,还广泛应用于其他领域,例如ÿ…...
[NVME] PMRCAP-Persistent Memory Region Capabilities
This register indicates capabilities of the Persistent Memory Region(持久内存区域) If the controller does not support the Persistent Memory Region feature, then this register shall be cleared to 0h BitsTypeResetDescription31:25RO 0hReserved24ROImpl Spec…...
Ollama windows安装
Ollama 是一个开源项目,专注于帮助用户本地化运行大型语言模型(LLMs)。它提供了一个简单易用的框架,让开发者和个人用户能够在自己的设备上部署和运行 LLMs,而无需依赖云服务或外部 API。这对于需要数据隐私、离线使用…...
vim操作简要记录
操作容易忘记,记录一下基本使用的 :wq保存退出 :w :q :q! :wq! i I a A 方向键 h左 j下 k上 l右 dd删除方行(这其实是剪切行操作,不过一般用作删除,长按可删除,不过按.执行上一次操作删除更快) .执行上…...
车载软件架构 --- 基于AUTOSAR软件架构的ECU开发流程小白篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
ArcPy扩展模块的使用(3)
管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...
Python爬虫实战:研究Restkit库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...
Qt Quick Controls模块功能及架构
Qt Quick Controls是Qt Quick的一个附加模块,提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中,这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构,与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...
理想汽车5月交付40856辆,同比增长16.7%
6月1日,理想汽车官方宣布,5月交付新车40856辆,同比增长16.7%。截至2025年5月31日,理想汽车历史累计交付量为1301531辆。 官方表示,理想L系列智能焕新版在5月正式发布,全系产品力有显著的提升,每…...
