
Matplotlib 是数据科学领域非常有用的可视化工具,几乎可以绘制我们想要的任何图像,数据的可视化非常重要,它能够让我们更加清楚的看到数据中的趋势和特性。本文中的代码均在 Jupyter Notebook 中运行,并且介绍的内容是 Matplotlib 中最常用的方法和技巧,更加详细的内容读者可以自行查看官方文档。主要内容如下:
- 一、notebook 和 inline
- 1.1 Backends
- 1.2 交互式
- 1.3 嵌入式
- 二、Figure
- 2.1 理解画布和子图
- 2.2 尺寸修改
- 三、Axes
- 3.1 参数的设置
- 3.2 风格更改
- 3.3 多子图操作
- 3.4 箭头绘制
- 3.5 图例、布局和轴范围
- 四、3D绘图
一、notebook 和 inline
在掌握 Matplotlib 之前我们首先需要熟悉下面的图片,内容展示的是使用 Matplotlib 绘制出的图像中各个部分的定义。

当我们在 Jupyter Notebook 中使用 Matplotlib 进行可视化的话会有两种常用的选择,交互式和嵌入式,两种方式的不同是因为设置了不同的 Backends 导致的。
1.1 Backends
在 Matplotlib 有很多 backends ,backends 主要负责显示图形, 它跟环境与硬件有关, 可以适用各种环境,如交互式绘图、 图形的保存等等。
1.2 使用交互式的绘图方式
如果使用交互式的绘图,需使用 magic 方法添加 %matplotlib notebook ,如下:
import
我们可以打印出当前的 backends,来确认是否设置成功:
print(matplotlib.get_backend())
需要注意的是,如果我们定义了 import matplotlib.pyplot as plt ,那么 %matplotlib notebook 必须放在 import matplotlib.pyplot as plt 的前面,如下:
import matplotlib
import numpy as np
%matplotlib notebook
import matplotlib.pyplot as plt
定义好 backends 之后,就可以看下交互式绘图的效果,运行下面的代码:
x = np.linspace(1,10,1000)
y = np.sin(x)
plt.plot(x,y)
plt.show()
得到如下的图像:

这就是一张交互式的图像,可以看到这个图像有非常多的交互按钮,不仅如此通过鼠标我们还能实现图像大小的拖拽缩放、点坐标的定位等等。
1.3 使用嵌入式的绘图方式
如果是嵌入式的绘图,需要使用 magic 方法添加 %matplotlib inline ,代码如下:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
我们运行之前同样的代码:
x = np.linspace(1,10,1000)
y = np.sin(x)
plt.plot(x,y)
plt.show()
得到如下图像:

这个图像是完全静态的,不能做任何的修改。
二、Figure
figure 是 Matplotlib 中的重要概念,之前我们使用的绘图方式只能够绘制一张图像,如果我们想一次展示多个图像,那么就需要用到 figure 和它内部的子图。
2.1 理解画布和子图
figure 我们可以理解为一张画布,我们可以往这个画布中添加指定数量的子图,每一个子图可以根据数据绘制单独的一张图像。figure 和 子图生成代码如下:
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
plt.show()
得到下图:

fig.add_subplot(121) 中的参数 121 表示的是在 1x2 的网格中的第一张图像。
这个画布我们还能够对其设置指定的颜色,画布默认的颜色为白色,代码如下:
fig = plt.figure(facecolor="y")
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
plt.show()
得到下图:

子图还是使用的默认色,为了更加明显,代码改成如下形式:
fig = plt.figure(figsize=plt.figaspect(0.6), facecolor="y")
ax1 = fig.add_subplot(121, facecolor="b")
ax1 = fig.add_subplot(122, facecolor="r")
plt.show()
得到下图:

这时我们就能够清晰的分辨出子图和画布了。
2.2 尺寸修改
figure 中最常被修改参数还是它的尺寸,而最常用的尺寸修改方法如下。
首先是按宽高比例进行修改,代码如下:
fig = plt.figure(figsize=plt.figaspect(0.5), facecolor="y")
ax = fig.add_subplot(111)
plt.show()
得到下图:

其次是按固定的尺寸大小进行修改,代码如下:
fig = plt.figure(figsize=(12,4), facecolor="y")
ax = fig.add_subplot(111)
plt.show()
得到下图:

唐进民:数据可视化工具 Matplotlib(下)zhuanlan.zhihu.com

微信公众号:PyMachine
