强基初中数学&学Python——第267课 数字和数学第三方模块Matplotlib之七:封装端-在图表中排列多个图表域(1)

  通常,一个图表(figure)上一次需要绘制多个图表域(Axes),一般排版成一个规则的网格。随着Matplotlib库的不断地被完善,逐渐形成了有多种用于处理图表域网格的工具。在这里,我们将讨论我们认为用户最常用的工具,这些工具支持如何排版图表域,并提及一些较旧的工具。

备注:

  Matplotlib使用图表域来表示包含数据、x轴和y轴、刻度、标签、标题等的绘图区域。有关详细信息,请参见图表的部分(Parts of a Figure)。另一个经常使用的术语是“子绘图(subplot)”,它也是图表域对象,不过特指网格中的图表域。

概述

创建网格状组合的图表域

subplots

  用于创建图表和图表域网格的主要功能。它一次性创建并放置在图表上的所有图表域,并返回一个对象数组,其中包含网格中的图表域的控制句柄。见Figure.subplots

subplot_mosaic

  创建图表和图表域网格的简单方法,增加了图表域的灵活性,可以跨行或列。返回的这些图表域是带标签的字典而不是数组。另请参见Figure.subplot_mosaic和复杂和语义图表组合(Complex and semantic figure composition)。

  有时,很自然会有多组不同的图表域网格,在这种情况下,Matplotlib使用子图表(SubFigure)概念:

SubFigure

  图表中的虚拟图表。

基础工具

  上面提到的这些功能的基础是网格规格(GridSpec)和子网格规格(SubplotSpec)概念:

GridSpec

  指定要放置子绘图的栅格的几何图形。需要设定网格的行数和列数。可选地,可以调整子绘图布局参数(例如,left、right等)。

SubplotSpec

  指定给定GridSpec中子绘图的位置。

一次添加单个图表域

  上述函数在单个函数调用中创建所有图表域。也可以一次添加一个图表域,这是Matplotlib最初的工作方式。这样做通常不怎么优雅和灵活,但有时对交互式工作或在自定义位置放置图表域很有用:

add_axes

  在列表[left,bottom,width,height](每个数值都是图表宽度或高度的分数)指定的位置添加单个图表域。

subplotFigure.add_subplot

  使用基于1的索引(从Matlab继承而来)在图表上添加单个子绘图。通过指定网格单元格的范围,可以跨越列和行。

subplot2grid

  类似于pyplot.subplot,但使用基于0的索引和二维Python切片来选择单元格。

 

Parts of a Figure:

https://matplotlib.org/stable/tutorials/introductory/quick_start.html#figure-parts

subplots:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplots.html#matplotlib.pyplot.subplots

Figure.subplots:

https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.subplots

subplot_mosaic:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplot_mosaic.html#matplotlib.pyplot.subplot_mosaic

Figure.subplot_mosaic:

https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.subplot_mosaic

Complex and semantic figure composition:

https://matplotlib.org/stable/tutorials/provisional/mosaic.html

SubFigure:

https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.SubFigure

GridSpec:

https://matplotlib.org/stable/api/_as_gen/matplotlib.gridspec.GridSpec.html#matplotlib.gridspec.GridSpec

SubplotSpec:

https://matplotlib.org/stable/api/_as_gen/matplotlib.gridspec.SubplotSpec.html#matplotlib.gridspec.SubplotSpec

add_axes:

https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.add_axes

subplot:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplot.html#matplotlib.pyplot.subplot

subplot:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplot.html#matplotlib.pyplot.subplot

Figure.add_subplot:

https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.add_subplot

subplot2grid:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplot2grid.html#matplotlib.pyplot.subplot2grid

pyplot.subplot:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplot.html#matplotlib.pyplot.subplot