Python3matplotlib的绘图函数subplot()简介
Python3 matplotlib的绘图函数subplot()简介
⼀、简介
matplotlib下, ⼀个Figure对象可以包含多个⼦图(Axes), 可以使⽤subplot()快速绘制, 其调⽤形式如下 :
subplot(numRows, numCols, plotNum)
图表的整个绘图区域被分成numRows⾏和numCols列
然后按照从左到右,从上到下的顺序对每个⼦区域进⾏编号,左上的⼦区域的编号为1
plotNum参数指定创建的Axes对象所在的区域
如果numRows = 2, numCols = 3, 那整个绘制图表样式为2X3的图⽚区域, ⽤坐标表⽰为:
(1, 1), (1, 2), (1, 3)
(2, 1), (2, 2), (2, 3)
这时, 当plotNum = 3时, 表⽰的坐标为(1, 3), 即第⼀⾏第三列的⼦图
如果numRows, numCols和plotNum这三个数都⼩于10的话, 可以把它们缩写为⼀个整数, 例如subplot(323)和subplot(3,2,3)是相同的.
subplot在plotNum指定的区域中创建⼀个轴对象. 如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除.
用subplot函数⼆、参数说明
1,subplots()参数
matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
创建⼀个画像(figure)和⼀组⼦图(subplots)。
这个实⽤程序包装器可以⽅便地在单个调⽤中创建⼦图的公共布局,包括封闭的图形对象。
输⼊参数说明:
nrows,ncols:整型,可选参数,默认为1。表⽰⼦图⽹格(grid)的⾏数与列数。
sharex,sharey:布尔值或者{'none','all','row','col'},默认:False
控制x(sharex)或y(sharey)轴之间的属性共享:
1.True或者'all':x或y轴属性将在所有⼦图(subplots)中共享.
2.False或'none':每个⼦图的x或y轴都是独⽴的部分
3.'row':每个⼦图在⼀个x或y轴共享⾏(row)
4.'col':每个⼦图在⼀个x或y轴共享列(column)
当⼦图在x轴有⼀个共享列时('col'),只有底部⼦图的x tick标记是可视的。
同理,当⼦图在y轴有⼀个共享⾏时('row'),只有第⼀列⼦图的y tick标记是可视的。
squeeze:布尔类型,可选参数,默认:True。
* 如果是True,额外的维度从返回的Axes(轴)对象中挤出。
》
如果只有⼀个⼦图被构建(nrows=ncols=1),结果是单个Axes对象作为标量被返回。
》对于N*1或1*N个⼦图,返回⼀个1维数组。
》对于N*M,N>1和M>1返回⼀个2维数组。
*如果是False,不进⾏挤压操作:返回⼀个元素为Axes实例的2维数组,即使它最终是1x1。
subplot_kw:字典类型,可选参数。把字典的关键字传递给add_subplot()来创建每个⼦图。
gridspec_kw字典类型,可选参数。把字典的关键字传递给GridSpec构造函数创建⼦图放在⽹格⾥(grid)。
**fig_kw:把所有详细的关键字参数传给figure()函数
返回结果:
fig:matplotlib.figure.Figure对象
ax:Axes(轴)对象或Axes(轴)对象数组。
2,figure()参数
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class'matplotlib.figure.Figure'>, clear=False, **kwargs)
创建⼀个新的画布(figure)。
输⼊参数:
num:整型或者字符串,可选参数,默认:None。
如果不提供该参数,⼀个新的画布(figure)将被创建⽽且画布数量将会增加。
如果提供该参数,带有id的画布是已经存在的,激活该画布并返回该画布的引⽤。
如果这个画布不存在,创建并返回画布实例。
如果num是字符串,窗⼝标题将被设置为该图的数字。
figsize:整型元组,可选参数,默认:None。
每英⼨的宽度和⾼度。如果不提供,默认值是figure.figsize。
dpi:整型,可选参数,默认:None。每英⼨像素点。如果不提供,默认是figure.dpi。
facecolor:背景⾊。如果不提供,默认值:figure.facecolor。
edgecolor:边界颜⾊。如果不提供,默认值:figure.edgecolor。
framemon:布尔类型,可选参数,默认值:True。如果是False,禁⽌绘制画图框。
FigureClass:源于matplotlib.figure.Figure的类。(可选)使⽤⾃定义图实例。
clear:布尔类型,可选参数,默认值:False。如果为True和figure已经存在时,这是清理掉改图。
返回值:
figure:Figure。返回的Figure实例也将被传递给后端的new_figure_manager,这允许将⾃定义的图类挂接到pylab接⼝中。
附加的kwarg将被传递给图形init函数。
三、⽰例
1,规则划分成3*3
代码:
import matplotlib
import matplotlib.pyplot as plt
if__name__ == '__main__':
for i,color in enumerate("rgby"):
plt.subplot(221+i, facecolor=color) #背景⾊设置facecolor
plt.show()
效果:
2,不规则划分
不规则划分
将整个表按照2*2划分
前两个简单, 分别是(2, 2, 1)和(2, 2, 2)
但是第三个图呢, 他占⽤了(2, 2, 3)和(2, 2, 4)
显⽰需要对其重新划分, 按照2 * 1划分
前两个图占⽤了(2, 1, 1)的位置
因此第三个图占⽤了(2, 1, 2)的位置
代码:
import matplotlib.pyplot as plt
import numpy as np
def f(t):
p(-t) * np.cos(2 * np.pi * t)
if__name__ == '__main__' :
t1 = np.arange(0, 5, 0.1)
t2 = np.arange(0, 5, 0.02)
plt.figure(12)
plt.subplot(221)
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'r--')
plt.subplot(222)
plt.plot(t2, np.cos(2 * np.pi * t2), 'r--')
plt.subplot(212)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.show()
效果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论