# 初识 matplotlib

# matplotlib 概述

# matplotlib 是一个由约翰 。亨特(John Hunter )等人员开发的、主要用于绘制 2D 图表的Python 库,它支持 numpy、pandas 的数据结构,具有丰富的绘制图表、定制图表元素(图例、注释文本、表格等)或样式(如颜色、字体、线型等)的功能,可以帮助开发人员轻松获得高质量的图表。此外,matplotlib 还可用于绘制一些 3D 图表。
matplotlib 实际上是一个面向对象的绘图库,它所绘制的图表元素均对应一个对象。但matplotlib 在设计之初仿照 MATLAB, 它提供了一套与 MATLAB 命令类似的 API, 方便熟悉MATLAB 的用户进行开发。matplotlib官网提供了 3 种 API :pyplot API、object-oriented API、pylab APIo。

# pyplot API

# pyplot API 是使用 pyplot 模块开发的接口,该接口的底层封装了一系列与 MATLAB 命令同名的函数,使用这些函数可以像使用 MATLAB 命令一样快速地绘制图表。
当使用pyplot API绘图时,需要先使用“import matplotlib.pyplot as pit”语句导入pyplot模块,之后使用该模块调用绘图函数即可在当前的画布和绘图区域中绘制图表。pyplot API 屏蔽了底层画布和绘图区域的创建细节,可以持续跟踪当前的画布和绘图区域。
对于熟悉 MATLAB 的用户而言,使用pyplot API 会非常得心应手 ;对于不熟悉 MATLAB的用户而言,只需花费少量的时间就可以掌握 pyplot API的函数。虽然 pyplot API的用法极其简单,但是 pyplot API隐藏了 matplotlib 中一系列具有隶属关系的绘图对象,使初学者十分容易产生混淆。

# object-oriented API

# object-oriented API是面向对象的接口,该接口包含一系列对应图表元素的类,只有创建这些类的对象并按照隶属关系组合到一起才能完成一次完整的绘图。
当使用 object-oriented API绘图时,用户需要先创建画布 ( Figure 类对象),再在该画布上添加拥有坐标系统的绘图区域 (Axes 类对象),最后在该绘图区域中调用绘图方法绘制图表。
与使用 pyplot API 的方式相比,object-oriented API 不仅使用户能明确绘图对象的隶属关系,而且可以自由地定制绘图对象,但 object-oriented API 接近 matplotlib 基础和底层,学习难度稍大,仅实现一个简单功能便需要编写不少的代码。

# pylab API

# pylab API 是使用 pylab 模块开发的接口,它最初是为了模仿 MATLAB 的工作方式而设计的,包括 pyplot、numpy 模块及一些其他附加功能,适用于 Python 交互环境中。
当使用 pylab API 绘图时,用户需要将 pylab 模块的所有函数导入单独的命名空间中,以便很好地实现交互模式,但可能会发生一些未知的错误行为。matplotlib 官方不建议使用pylab API 进行开发,并在最新的版本中弃用了 pylab API。
用户在使用时可以根据自身的实际情况进行选择,若只是需要快速地绘制图表,可以选择 pyplot API 进行开发 ;若需要自定义图表,可以选择 object-oriented API 进行开发。

# 安装 matplotlib

# 在安装 matplotlib 前,需要先确保计算机中已经配置好 Python 开发环境。matplotlib 的安装方式有很多种,既可以使用 pip 命令直接安装,也可以使用 Anaconda 工具进行安装。
Anaconda 是一个开源的 Python 发行版本,包括 conda、Python 环境,以及诸如 numpy、pandas、matplotlib、scipy 等 180多个科学计算包,既可以在同一台计算机上安装不同版本的软件包和依赖项,也可以在不同环境之间进行切换,非常适合初学者使用。下面以在Windows 系统中安装 Anaconda 为例进行演示,具体步骤如下。
(1)从 Anaconda 官网下载安装文件,双击启动安装程序,进入欢迎使用 Anaconda3 的界面,如图 1-22 所示。
(2) 单击图 1-22 的【 Next ]按钮进入要求用户接受许可协议的界面,如图 1-23 所示。

# (3) 单击图 1-23 的【 I Agree 】按钮进入用户选择安装类型的界面,如图 1-24 所示。
(4)这里选择采用“Just Me”方式进行安装。单击图 1-24 的【 Next】按钮进入用户选择 Anaconda 安装位置的界面,默认安装路径为“C:\Users\admin\Anaconda3”,如图1-25 所示。

# (5)保持默认配置。单击图 1-25 的【 Next】按钮进入设置高级安装选项的界面,如图 1-26 所示。
图 1-26 中包含两个高级选项,第 1 个选项为将 Anaconda 添加到计算机的环境变量中,第 2 个选项为允许 Anaconda 使用Python 3.7, 这里保持默认配置。
(6)单击图 1-26 的【 Install】按钮进入开始安装的界面,待安装完成后直接进入安装完成的界面,如图 1-27 所示。

# (7) 单击图 1-27 的【 Next 】 按钮,进入介绍 Anaconda3 信息的界面,再次单击【 Next 】按钮进入谢谢安装 Anaconda3 的界面,如图 1-28 所示。
单击图 1-28 的【 Finish】按钮,自动在默认的浏览器中打开登录或注册 “AnacondaCloud” 的界面,直接关闭即可。此时,Anaconda 工具已经自动安装了 matplotlib 库。
(8)为了验证 Anaconda 是否安装了 matplotlib, 单击计算机的【 开始 】→ 【 所有程序】→ [ Anaconda3(64-bit) ], 可以看到 “Anaconda3 (64-bit)" 目录中包含多个组件, 如图 1-29 所示。

# Anaconda3(64-bit)目录下的主要组件如下。
Anaconda Navigator (Anaconda3):Anaconda 发行版中包含的图形用户界面,允许用户在不使用命令的情况下启动程序并轻松管理包。
Anaconda Prompt (Anaconda3):Anaconda发行版中自带的命令行工具,允许用户使用conda命令管理包。
Jupyter Notebook (Anaconda3):基于Web的交互计算的应用程序,支持实时代码、数学方程和可视化。

# (9)单击 “Jupyter Notebook (Anaconda3)”启动程序,并在默认的浏览器中打开 JupyterNotebook 工具,再次单击“AnacondaProjects”进入存放程序文件的目录,此时该目录中还没有任何程序文件,如图 1-30 所示。

# (10) 单击图 1-30 的 【 New】→【 Python 3 】 按钮,即可创建并打开一个由系统自动命名的 “Untitled.ipynb”文件,在 “Untitled.ipynb” 文件中编写导入 pyplot 模块的语句,如图 1-31 所示。
(11)单击图 1-31 的【运行】按钮,程序未出现任何异常信息,表明 matplotlib 安装成功。

# 注意:

# Jupyter Notebook 与其他集成开发环境相比,它可以重现整个数据分析的过程,并将代码、公式、注释、图表和结论整合到一个文档中。因此本书后续会使用 Jupyter Notebook 工具进行开发,也建议初学者使用这个工具。