美文网首页Python
Python 数据可视化:如何分区和绘图

Python 数据可视化:如何分区和绘图

作者: you的日常 | 来源:发表于2020-11-26 11:49 被阅读0次

    在图纸上绘图,有时候整张图纸只绘制一幅图,有时候要绘制多幅图。在 Matplotlib 中要实现这种功能,可以使用 plt.subplots,前面已经用过此函数,此处要深入理解它的特点。

    首先,要引用 Matplotlib 的模块。

    %matplotlib inline
    import matplotlib.pyplot as plt
    import matplotlib
    matplotlib.rcParams['axes.unicode_minus'] = False
    
    

    1.3.1 分区

    在前面编写可视化代码的时候,plt.subplots() 已经出现过了,它返回了一个图像对象和一个坐标系对象。但是,在以往调用的时候,没有向函数提供任何参数。如果像下面代码这样,就不会只返回一个坐标系对象了。

    fig, ax = plt.subplots(3, 3, sharex='col', sharey='row')
    
    

    输出结果:

    image

    从输出结果中可知,现在得到了 3 × 3 = 9 个坐标,即在一张图中得到了 9 个坐标系。

    ax
    #Out:
    array([[<matplotlib.axes._subplots.AxesSubplot object at 0x118bb3470>,
            <matplotlib.axes._subplots.AxesSubplot object at 0x118ba69b0>,
            <matplotlib.axes._subplots.AxesSubplot object at 0x11ac36e48>],
           [<matplotlib.axes._subplots.AxesSubplot object at 0x11ac652b0>,
            <matplotlib.axes._subplots.AxesSubplot object at 0x11ac8c6d8>,
            <matplotlib.axes._subplots.AxesSubplot object at 0x11acb49b0>],
           [<matplotlib.axes._subplots.AxesSubplot object at 0x11acdcc88>,
            <matplotlib.axes._subplots.AxesSubplot object at 0x11ad0c0b8>,
            <matplotlib.axes._subplots.AxesSubplot object at 0x11ad333c8>]],
          dtype=object)
    
    

    变量 ax 其实引用了一个数组对象,其形状是 3 × 3 的,每个元素是一个坐标系对象。于是乎就可以通过类似 ax[1, 2] 的方式得到某一个坐标系对象,然后对该坐标系对象实施有关操作,比如设置属性,或者调用方法,在上一课中有一个绘制脸谱的例子,就是这个道理的具体应用。

    作为复习,可以看下面的代码,目的是依次在每个坐标系内标注上行列。

    fig, ax = plt.subplots(3, 3, sharex='col', sharey='row')
    for i in range(3):
        for j in range(3):
            ax[i, j].text(0.5, 0.5, str((i, j)), fontsize=18, ha='center')
    
    

    输出结果:

    image

    显然,以上功能的实现,就在于 plt.subplots 函数。为了深入理解此函数,可以先浏览它的完整参数。

    plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
    
    

    结合之前展示的 Matplotlib 中函数(方法)的参数,会发现不仅参数个数比较多,而且还通过 *fig_kw、arg 等方式,许可传入更多的参数。这就说明,它们提供了非常灵活的功能。但是,记忆就麻烦了。而实际上,不用刻意记忆,因为通过官方文档或者在 Jupyter 中使用查看帮助文档的智力,能够查看到对所有参数解释说明。

    选择几个常用的参数给予说明:

    • nrows 和 ncols,必须是整数,分别设置了行(nrows)和列(ncols)的坐标系分区数量;
    • sharex 和 shapey,布尔值,或者选择 'none'、'all'、'row'、'col' 中的某个字符串,默认是 False。

    相关文章

      网友评论

        本文标题:Python 数据可视化:如何分区和绘图

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