数据探索的旅程中,图表扮演着至关重要的角色。它们如同数据的眼睛,帮助我们洞察数据背后的故事——无论是发现隐藏的异常值,还是指导数据清洗的方向,抑或是为构建机器学习模型提供创新的思路。在数据科学报告的撰写过程中,图表的绘制是一项不可或缺的技能。
Python 拥有丰富的可视化工具箱,能够满足静态图表乃至动态图表的制作需求。在接下来的学习中,我们将深入探索 matplotlib 库,这个强大的绘图工具将帮助你在 Python 中实现专业级的图形绘制。
Matplotlib 作为 Python 绘图领域的核心库,其设计初衷是为了在 Python 环境中复现 MATLAB 的绘图体验。对于没有 MATLAB 使用经验的开发者来说,理解 matplotlib 各个组件如何协同工作以生成复杂的图形可能会感到有些吃力。但无需担忧,本教程将通过模块化的讲解方式,帮助你快速掌握 matplotlib 的使用方法。
Matplotlib 采用分层架构设计。在最顶层,我们有一个 Figure 对象,它包含了多个轴(Axes)或称为子图。每个轴都是一个独立的绘图区域,负责管理标题、图例、刻度标记和坐标轴等元素。下方的图表展示了 matplotlib 图形中各个组件的构成。
要开始绘制图形,我们可以调用 “pyplot.figure()” 函数创建一个新的图形对象,或者使用 “pyplot.add_subplot()” 函数向现有图形中添加新的子图。
在上述代码示例中,我们初始化了一个图形,该图形最多可以容纳四个子图。目前,我们选择了其中的三个进行操作。
一个更为简便的方法是使用 “plt.subplots()” 函数,它能够一次性创建图形和子图,并提供便捷的接口进行后续操作。
上图展示了 matplotlib 支持的多种子图类型。完整的绘图类型目录可以在官方文档中找到。
“plt.tight_layout()” 函数能够自动调整子图之间的间距,防止元素重叠,确保图形布局美观。此外,还可以通过 “plt.subplots_adjust(left=None, bottom=None, top=None, wspace=None, hspace=None)” 函数精细控制图形的边距和子图间距。
“plt.plot()” 函数支持通过字符串缩写来指定线条的颜色和样式。例如,在下面的代码片段中,我们绘制了一条红色虚线。
通过 linestyle 和 color 属性,我们可以精确控制线型和颜色。
matplotlib 提供了多种线型供选择:
‘-‘: 实线样式
‘–‘: 虚线样式
‘-.’: 点划线样式
‘:’: 点线样式
除了 matplotlib 预设的颜色缩写,我们还可以使用十六进制颜色代码(如 ‘#FFFF’)来指定任意颜色。
在绘制线图时,matplotlib 默认在数据点之间进行线性插值。如果需要突出显示原始数据点,可以使用 “marker” 属性。如下图所示,标记能够清晰地标识每个数据点。
默认的插值方式是线性插值;但我们可以通过 “drawstyle” 属性来改变插值方式。下方的示例对比了线性插值和步进后插值的效果。
ax 对象(子图对象)提供了多种方法用于自定义绘图效果:
- set_xticks 和 set_xticklabels 用于调整 x 轴刻度
- set_yticks 和 set_yticklabels 用于调整 y 轴刻度
- set_title 用于为图形添加标题
另一种设置绘图属性的方式是使用 “set()” 方法,它接受一个属性字典来进行批量设置。
当在同一图形中绘制多个数据系列时,图例成为区分不同元素的关键。因此,我们使用 “label” 和 “legend()” 方法来添加图例说明。
要向子图添加注释,可以使用 “text()”、”arrow()” 和 “annotation()” 函数。text 函数在指定坐标 (x, y) 处绘制文本,并支持自定义样式。annotation 函数则能够智能地排列文字和箭头,使注释更加清晰。
Matplotlib 提供了丰富的图形元素对象,称为 patches。例如 Rectangle 和 Circle 等基本形状,部分位于 ‘matplotlib.pyplot’ 模块中,而完整的集合则可以在 ‘matplotlib.patches’ 模块中找到。
使用 “fig.savefig()” 函数,我们可以将绘制的图形保存为文件。matplotlib 会根据文件扩展名自动判断保存的格式。例如,以下代码将保存图形为 PDF 文件:
fig.savefig(‘figpath.pdf’)
本教程旨在帮助你掌握 matplotlib 数据可视化的基础技能。希望这些内容能够为你的数据分析工作提供实用参考。