目录
绘制固定区域的子图
(一)、绘制单子图
subplot()函数
Jupyter Notebook的绘图模式
(二)、多子图
subplots()--可以在规划好的所有区域中一次绘制多个子图
(三)、跨行跨列
subplot2grid()---将整个画布规划成非等分布局的区域,并可在选中的某个区域中绘制单个子图
绘制固定区域的子图
matplotlib可以将整个画布规划成等分布局的m*n(行*列)的矩阵区域,并按照先行后列的方式对每个区域进行编号(编号从1开始),之后在选中的某个或某些区域中绘制单个或多个子图。
(一)、绘制单子图
subplot()函数
subplot(nrows, ncols, index, projection, polar, sharex, sharey, label, **kwargs)
nrows:表示规划区域的行数。
ncols:表示规划区域的列数。
index:表示选择区域的索引,默认从1开始编号。
projection:表示子图的投影类型。
polar:表示是否使用极坐标,默认值为False。
若参数polar设为True,则作用等同于projection='polar'。
参数nrows、ncols、index既支持单独传参,也支持以一个3位整数(每位整数必须小于10)的形式传参。
subplot()函数会返回一个 Axes类的子类SubplotBase的对象。 Figure类对象可以使用add_subplot()方法绘制单子图,此方式与subplot()函数的作用是等价的。
Jupyter Notebook的绘图模式
控制台绘图
%matplotlib inline
弹出窗绘图
%matplotlib auto
//或
%matplotlib notebook
%matplotlib auto
#%matplotlib inline
import matplotlib.pyplot as plt
#3*2,区域6
ax_one = plt.subplot(335)
ax_one.scatter([500,200,850,400,200,700],[2,7,10,12,16,28])#折线图
#3*1,区域2
ax_two = plt.subplot(322)
ax_two.pie([500,200,850,400,200,700])#饼图
ax_two = plt.subplot(313)
ax_two.plot([500,200,850,400,200,700])#这里标注为饼图有误,应为折线图
plt.show()
(二)、多子图
subplots()--可以在规划好的所有区域中一次绘制多个子图
subplots(nrows=1,ncols=1,sharex=False,sharey=False,squeeze=True,subplot_kw=None,gridspec_kw=None,**fig_kw)
nrows:表示规划区域的行数,默认为1。 ncols:表示规划区域的列数,默认为1。 sharex, sharey:表示是否共享子图的x轴或y轴。 (Squeeze表示是否返回压缩的Axes对象;gridspec_kw表示用于控制区域结构属性的字典)
import matplotlib.pyplot as plt# 创建 3x3 的子图布局
fig, ax_one = plt.subplots(3, 3)
# 在 (1, 1) 位置的子图绘制散点图
ax_one[1, 1].scatter([500, 200, 850, 400, 200, 700], [2, 7, 10, 12, 16, 28])
# 在 (1, 0) 位置的子图绘制饼图
ax_one[1, 0].pie([500, 200, 850, 400, 200, 700])
# 在 (0, 0) 位置的子图绘制折线图
ax_one[0, 0].plot([500, 200, 850, 400, 200, 700])
# 显示图形
plt.show()
(三)、跨行跨列
subplot2grid()---将整个画布规划成非等分布局的区域,并可在选中的某个区域中绘制单个子图
subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)
shape:表示规划的区域结构,该参数接收一个包含两个整型数据的元组,元组中第1个元素表示规划区域的行数,第2个元素代表规划区域的列数。
loc:表示选择区域的位置,该参数接收一个包含两个整型数据的元组,元组中第1个元素表示子图所在的行数(行数从0开始),第2个元素表示子图所在的列数(列数从0开始)。 r
owspan:表示向下跨越的行数,默认为1。
colspan:表示向右跨越的列数,默认为1。
fig:表示放置子图的画布,默认当前画布。
%matplotlib auto
import matplotlib.pyplot as plt
#2*3,第0行第2列区域中绘制子图
ax1=plt.subplot2grid((2,3),(0,2))
ax1.scatter([1,2,3,4,5], [1,2,3,4,5])#散点图
#2*3,第1行第1~2列区域绘制子图
ax2= plt.subplot2grid((2,3),(1,1),colspan=2)
ax2.pie([1,2,3,4,5])#饼图
plt.show()