美文网首页python
matplotlib.pyplot中subplots()的用法

matplotlib.pyplot中subplots()的用法

作者: 雨幻逐光 | 来源:发表于2020-01-03 13:55 被阅读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的前两个参数分别指的是总的行数和总的列数。第三个参数表明是第几幅子图(即子图的序号)。

    相关文章

      网友评论

        本文标题:matplotlib.pyplot中subplots()的用法

        本文链接:https://www.haomeiwen.com/subject/yqhzoctx.html