【python】matplotlib 模块_画布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()
更多推荐
所有评论(0)