目录

一. Part of a Figure

二. 画布设置

1. plt.subplot()

2. plt.subplots()

3. add_subplot()

4. plt.figure() 

5. add_axes()

 6. subplots_adjust()


一. Part of a Figure

官方指南:Matplotlib 文档 — Matplotlib 3.7.1 文档

  • Figure  fig = plt.figure(): 可以解释为画布。画图的第一件事,就是创建一个画布figure,然后在这个画布上加各种元素。
  • Axes  ax = fig.add_subplot(1,1,1): 可以理解为在画布上要画的一个图。如果figure只有一张图,那么只有一个axes;也可以用subplot() 函数设置多个axes。axes下可以修改编辑的变量非常多。
  • Axis ax.xaxis/ax.yaxis: 这是x、y坐标轴。每个坐标轴实际上是由竖线和数字组成的,每一个竖线是一个axis的subplot,因此ax.xaxis也存在axes这个对象。对这个axes进行编辑就会修改xaxis图像上的表现。

二. 画布设置

1. plt.subplot()

subplot(*args, **kwargs)

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(ax)

  • *args:三个整数或一个三位数(自动解析成三个整数),用于分别对应 nrows, ncols, index

        - nrows:在画布纵轴上分隔成几个子图

        - ncols:在画布横轴上分隔成几个子图

        - index:子图索引

  • **kwargs:一些涉及子图属性的关键字参数。此方法还接受返回AXIS基类的关键字参数。

2. plt.subplots()

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

  •  nrows,ncols:子图的行列数。
  • sharex, sharey:是否共轴。可选:‘none’, ‘all’, ‘row’, ‘col’, ‘True’, ‘False’。

        True 或者 ‘all’ 时,所有子图共享 x 轴或者 y 轴;

        False or ‘none’ 时,所有子图的 x,y 轴均为独立;

        ‘row’ 时,每一行的子图会共享 x 或者 y 轴;

         ‘col’ 时,每一列的子图会共享 x 或者 y 轴。

  • squeeze:默认为 True,是设置返回的子图对象的数组格式。当为 False 时,不论返回的子图是只有一个还是只有一行,都会用二维数组格式返回他的对象。当为 True 时,如果设置的子图是(nrows=ncols=1),即子图只有一个,则返回的子图对象是一个标量的形式,如果子图有(N×1)或者(1×N)个,则返回的子图对象是一个一维数组的格式,如果是(N×M)则是返回二位格式。
  • subplot_kw:字典格式,传递给 add_subplot() ,用于创建子图。
  • gridspec_kw:字典格式,传递给 GridSpec 的构造函数,用于创建子图所摆放的网格。如,设置 gridspec_kw={‘height_ratios’: [3, 1]} 则子图在列上的分布比例是3比1。
  • **fig_kw :所有其他关键字参数都传递给 figure()调用。如,设置 figsize=(21, 12) ,则设置了图像大小。
  • 返回值:fig: matplotlib.figure.Figure 对象;ax:子图对象( matplotlib.axes.Axes)或者是他的数组。

示例:

生成一块画布。1行2个,每一块是一个axe,返回画布和axes的数组,后面还可以跟一些figure的参数。

# 示例
fig, axes = plt.subplots(1, 2, figsize = (8, 10))

3. add_subplot()

面对对象的方法,参数及使用与subplot相似,但不会删除与其重叠的子图。

4. plt.figure() 

figure()创建一个新的画布,通过figure()函数来实例化Figure对象。

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

  • num: 图像编号或名称,数字为编号 ,字符串为名称。
  • figsize: 指定figure的宽和高,单位为英寸。
  • dpi:参数指定绘图对象的分辨率。
  • facecolor:背景颜色。默认为:rc:figre.facecolor‘=’w‘
  • edgecolor:边框颜色。如果未提供,默认为:rc:figre.edgecolor‘=’w‘
  • frameon:是否显示边框(图形框架)
# 示例  分辨率参数-dpi,画布大小参数-figsize
fig = plt.figure(dpi=300, figsize=(24, 8))

5. add_axes()

面对对象的方法,创建一个子图,如范围内已有图像,则覆盖在原图像上。

 add_axes(rect, projection=None, polar=False, **kwargs)

  • rect:子图的位置,大小。以列表传入[左、下、宽、高];左 / 下:以百分比确定
  • projection:投影类型。
  • polar:为True时,相当于projection = ‘polar’
  • **kwargs:其他相关关键字参数
# 示例 创建两个子图对象,ax2将覆盖在ax1上
fig = plt.figure()
ax1 = fig.add_axes([0,0,1.5,1.5])
ax2 = fig.add_axes([0.5,0.5,1,1])

 6. subplots_adjust()

对子图的布局进行设置

 subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)

  • left:以图形宽度为单位,调整最左侧子图与画布左边框的距离,范围(0-1)
  • bottom:以图形高度为单位,调整最下侧子图与画布下边框的距离,范围(0-1)
  • right:以图形宽度为单位,调整最右侧子图与画布右边框的距离,范围(0-1)
  • top:以图形高度为单位,调整最上侧子图与画布上边框的距离,范围(0-1)
  • wspace:调整坐标系之间的水平间隔
  • hspace:调整坐标系之间的垂直间隔
  • left和right值的和为1,且left<=rigth;bottom和top值的和为1,且bottom<=top
fig, ax = plt.subplots(2, 2)
fig.subplots_adjust(left=0.1,  # 调整最左边坐标系到画布左边框的间距
                    right=0.9,  # 调整最右边坐标系到画布右边框的间距
                    top=0.9,  # 调整最上面坐标系到画布顶部框的间距
                    bottom=0.1,  # 调整最下面坐标系到画布底部框的间距
                    wspace=1,  # 调整坐标系之间的水平间隔
                    hspace=1,  # 调整坐标系之间的垂直间隔
                    )
plt.show()

Logo

鸿蒙生态一站式服务平台。

更多推荐