在数据分析、科学计算以及机器学习项目中,数据可视化(Data Visualization)是一项重要环节。通过图形化方式展示数据,可以帮助我们理解数据分布、发现规律以及验证分析结果。
例如,在一组数据中:
[10, 15, 20, 18, 25]如果只以数字形式呈现,很难直观理解变化趋势;但若绘制为折线图,数据变化便可以一目了然。
Matplotlib 是 Python 中最基础、最常用的可视化库之一,具有以下特点:
• 支持多种图形类型(折线图、散点图、柱状图、直方图等)
• 与 NumPy、Pandas 等科学计算库高度兼容
• 支持高度自定义的图形样式
• 提供面向函数(pyplot)与面向对象(Figure/Axes)两种绘图方式
• 可以导出多种格式图像(PNG、PDF、SVG 等)
安装 Matplotlib:
pip install matplotlib导入库:
import matplotlib.pyplot as plt在 Matplotlib 中,大多数绘图函数都通过 matplotlib.pyplot 模块调用。
pyplot 提供了类似 MATLAB 的状态式绘图接口,本质上是对 Figure 与 Axes 对象操作的封装。
一、Matplotlib 的图形结构
理解 Matplotlib 的核心结构,有助于更清晰地理解各种绘图函数的作用。
Matplotlib 的图形系统由三个主要层次组成:
Figure → Axes → Artist
这三个层次可以理解为:
Figure表示整个图形对象,是所有图形元素的顶层容器。
Axes表示一个绘图坐标系区域,绝大多数绘图操作都发生在 Axes 上。
Artist是图形中的具体元素,例如线条、文本、坐标轴和图例。
从视觉上可以理解为:
└── Axes(另一个子图)在日常语言中,人们有时把 Figure 称为“画布”,而 Axes 则是画布上的绘图区。
在代码中通常通过 subplots() 同时创建 Figure 与 Axes:
fig, ax = plt.subplots()此时:
• fig 表示整个图形对象
• ax 表示绘图坐标系
后续绘图操作通常发生在 ax 上:
ax.plot(x, y)这种方式称为“面向对象绘图方式”,也是 Matplotlib 官方推荐的使用方式。
二、基础绘图函数
Matplotlib 的核心功能是绘制各种统计图形,例如折线图、散点图、柱状图和直方图等。
plot()
用于绘制折线图(Line Plot),是 Matplotlib 中最常用的函数。
)参数说明:
• x:横轴数据,通常为列表或 NumPy 数组。如果省略 x,则 Matplotlib 会自动生成从 0 开始的序列
• y:纵轴数据
• label:图例名称
• color:线条颜色
• linestyle:线条线型,例如 "-"、"--"、":"
• linewidth:线宽
• marker:数据点标记,例如 'o'、's'、'^'
• markersize:标记大小
• alpha:图形元素透明度
返回值:
返回一个 Line2D 对象列表。
示例:
plt.show()plot() 是 Matplotlib 中最基础的绘图函数,适用于:
• 时间序列分析
• 函数曲线绘制
• 数据趋势展示
以下示例默认已导入 Matplotlib 和 NumPy。
scatter()
用于绘制散点图(Scatter Plot)。
)参数说明:
• x:横轴数据
• y:纵轴数据
• s:散点大小(size)
• c:散点颜色(color)
• marker:散点形状
• cmap:颜色映射
• alpha:散点图形透明度
返回值:
返回 PathCollection 对象。
示例:
plt.show()散点图常用于观察两个变量之间的关系,例如回归分析、相关性分析等。
bar()
用于绘制柱状图(Bar Chart)。
)参数说明:
• x:柱子位置或类别标签
• height:柱子的高度
• width:柱子宽度
• color:柱子颜色
• align:对齐方式
• alpha:图形元素透明度
返回:
返回 BarContainer 对象。
示例:
plt.show()柱状图常用于比较不同类别的数据。
hist()
用于绘制直方图(Histogram)。
)参数说明:
• x:输入数据序列
• bins:分箱数量
• range:统计范围
• density:指定是否归一化为概率密度
• color:指定颜色
• alpha:指定透明度
返回:
返回三个对象 (n, bins, patches):
patches:绘制的矩形对象集合示例:
plt.show()直方图常用于观察数据分布,例如判断数据是否接近正态分布。
pie()
用于绘制饼图(Pie Chart)。
)参数说明:
• x:各部分的数据值
• labels:指定标签
• autopct:指定百分比显示格式,例如 "%1.1f%%"
• startangle:指定饼图起始角度
示例:
plt.show()饼图常用于展示各部分在整体中的比例关系。
三、图形结构函数
在 Matplotlib 中,可以通过多种方式创建图形对象与子图。
figure()
用于创建图形对象。
plt.figure(figsize=None, dpi=None)参数说明:
• figsize:用于指定图形尺寸,单位为英寸
• dpi:图像分辨率
示例:
plt.show()subplot()
用于创建子图。
plt.subplot(nrows, ncols, index)参数说明:
• nrows:子图行数
• ncols :子图列数
• index:当前子图编号
示例:
plt.show()subplots()
用于同时创建 Figure 与 Axes。
fig, ax = plt.subplots(nrows=1, ncols=1)示例:
plt.show()这种方式是 Matplotlib 官方推荐的绘图方式。
四、图形元素函数
绘制图形后,通常需要添加标题、标签、图例等元素。
title()
设置图标题。
plt.title(label, fontsize=None, loc=None)参数说明:
• label:标题内容
• fontsize:指定字体大小
• loc:指定标题位置
xlabel()/ylabel()
设置坐标轴标签。
plt.ylabel(label)legend()
显示图例。
plt.legend()示例:
plt.show()grid()
显示网格。
plt.grid(True)网格可以帮助读者更容易估计数据位置。
tight_layout()
自动调整子图间距,避免标签或标题重叠。
plt.tight_layout()五、图像输出函数
savefig()
用于将图形保存为文件。
)参数说明:
• fname:文件名
• dpi:图像分辨率
• bbox_inches:指定是否自动裁剪空白区域
• transparent:指定背景是否透明
示例:
plt.show()上述代码会先将图形保存为文件,再显示图形窗口。
Matplotlib 支持导出多种图像格式,例如 PNG、PDF、SVG 和 JPG。
show()
用于显示图形窗口。
plt.show()在普通 Python 脚本中通常需要调用 show() 才能显示图形窗口。
在 Jupyter Notebook 中,图形通常会自动显示。
六、简单数据可视化示例
在数据分析项目中,Matplotlib 常用于展示数据趋势、分布以及变量关系。
例如:
plt.show()运行结果将得到一个函数曲线图。
这种图形在以下场景中非常常见:
• 数学函数可视化
• 机器学习训练曲线
• 时间序列趋势分析
• 实验数据展示
七、Matplotlib 后端控制与全局配置
Matplotlib 的图形系统不仅涉及绘图函数,还依赖于运行环境配置,这些配置通常在程序开始阶段进行设置。
1、后端控制
matplotlib.use()
Matplotlib 的图形显示依赖于图形后端(backend)。后端负责图形渲染、窗口显示以及图像输出。
matplotlib.use(backend)参数说明:
• backend:后端名称字符串,例如:
"Agg":不显示图形窗口,仅用于生成图像文件示例:
import matplotlib.pyplot as plt• Agg 后端通常用于:
• 服务器环境
• 批量生成图像
• 无图形界面的系统
需要注意的是,matplotlib.use() 必须在导入 pyplot 之前调用,否则设置不会生效。
2、全局配置
plt.rcParams
rcParams 是 Matplotlib 的全局配置参数系统。它本质上是一个字典对象,用于控制图形的默认行为。
plt.rcParams[key] = value其中,常见的配置项名称 key 有:
plt.rcParams["axes.labelsize"] = 12 # 用于设置坐标轴标签字体大小Matplotlib 的所有配置项都存储在 rcParams 字典中,可以通过以下方式查看:
plt.rcParams如果希望查看某一个参数的当前值,可以使用:
plt.rcParams["figure.figsize"]在 Matplotlib 中,默认字体通常不包含中文字符,因此绘制包含中文的图形时可能出现乱码。
解决方法是通过 rcParams 指定中文字体。
示例:
plt.rcParams["axes.unicode_minus"] = False• font.sans-serif 用于指定无衬线字体列表。SimHei 是常见的中文字体(黑体)
• axes.unicode_minus 用于控制负号显示。如果设为 False,则使用普通字符 "-" 代替 Unicode 负号,以避免字体缺失导致的显示问题。
3、图形样式系统
plt.style.use()
除了通过 rcParams 设置单个参数外,Matplotlib 还提供了图形样式系统(style system),用于一次性应用整套图形风格。
plt.style.use(style_name)参数说明:
• style_name 表示样式名称字符串,用于指定预设的图形风格。Matplotlib 内置了多种样式,例如:
"dark_background"这些样式通常模仿常见统计软件或可视化工具的绘图风格。
示例:
plt.show()运行后可以看到图形使用了类似 R 语言 ggplot2 的绘图风格。
plt.style.available
用于查看所有可用样式。
plt.style.available不同版本的 Matplotlib 中,可用样式名称可能略有不同。
小结
Matplotlib 是 Python 中最基础的数据可视化库,提供了折线图、散点图、柱状图、直方图等常见图形绘制功能。通过 plot()、scatter()、bar()、hist() 等常用函数,并结合 title()、legend()、grid() 等图形元素设置,可以较方便地构建数据分析与机器学习中的可视化展示流程。
“点赞有美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.