python

matplotlib.pyplot中subplots()的用法

2020-01-03  本文已影响0人  雨幻逐光

在数据分析过程中,我们经常需要将数据可视化。这个过程中,人们经常会使用到 subplots 这个函数。今天我们就来介绍下 subplots 的一些用法和有点。

在很多数据分析的学习示例中,我们经常看到下面这段代码:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

上面的 plt.subplots() 函数见名知意,就是画多个图的意思。这个函数返回的是一个元组(tuple)。这个元组中包含了一个figure对象和axes对象集合。因此,当我们按上面fig, ax = plt.subplots()这样的用法时,我们相当于把返回的 tuple 进行解压(unpack)成 fig 和 ax 两个变量。fig 变量可以让我们可以修改 figure 层级(figure-level)的属性或者将 figure 保存成图片,例如:fig.savefig('thefilename.png')。ax 变量中保存着所有子图的可操作 axe 对象。
上面的写法相当于是下面这种写法的精简版:

fig = plt.figure()
ax = fig.add_subplot(111)

上面的例子是只有一个子图的情况。那么解压后的 ax 变量中也只是存贮着一个 axe 对象。接下来我们来尝试多个子图的情况:

fig, ax = plt.subplots(nrows=2, ncols=2)
print(ax.shape)

输出是:

(2, 2)

从中我们可以看出,plt.subplots() 返回的tuple中包含两个元素,其中第二个元素时一组subplots对象的集合(axes)。并且,第二个元素的 shape 和 (nrows, ncols) 保持一致。因此如果我们想将其解压(unpack)的话,可以用下面的写法代替:
fig, [[ax1, ax2], [ax3, ax4]] = plt.subplots(nrows=2, ncols=2)

最后,我们来介绍下 plt.subplot 和 plt.subplots 之间的区别。
subplots 一次性创建并返回所有的子图和其 axe 对象。subplot则是分开多次添加子图。每次调用返回一个子图和对应的 ax 对象。如下:

fig = plt.figure() # create the canvas for plotting
ax1 = plt.subplot(2, 1, 1)
ax2 = plt.subplot(2, 1, 2)

上面subplot的前两个参数分别指的是总的行数和总的列数。第三个参数表明是第几幅子图(即子图的序号)。

上一篇 下一篇

猜你喜欢

热点阅读