1.方法一:subplot2grid()函数
例一:用subplot2grid()函数画出下图中的函数:
代码如下:
import matplotlib.pyplot as plt
from numpy import *
x=linspace(0,1,5)
plt.figure()
#将图片分为3行3列,从第1行第1列开始显示,函数跨3列1行
plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)
y1=x
plt.plot(x,y1)
#将图片分为3行3列,从第2行第1列开始显示,函数跨2列1行
plt.subplot2grid((3,3),(1,0),colspan=2,rowspan=1)
y2=x**2
plt.plot(x,y2)
#将图片分为3行3列,从第2行第3列开始显示,函数跨1列2行
plt.subplot2grid((3,3),(1,2),colspan=1,rowspan=2)
y3=x**3
plt.plot(x,y3)
#将图片分为3行3列,从第3行第1列开始显示,图像跨1列1行
plt.subplot2grid((3,3),(2,0))
plt.scatter(x,y1)
#将图片分为3行3列,从第3行第2列开始显示,图像跨1列1行
plt.subplot2grid((3,3),(2,1))
plt.scatter(x,y3)
plt.show()
注:
plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1):将图分为3行3列,行和列的编号从0开始,声明从第1行第1列(即第一个格)开始画这个图像,函数图像跨3列(colspan)1行(rowspan)。
2.方法二:Gridspec()函数
例二:将上图用Gridspec()函数展示出来。
代码如下:
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from numpy import *
x=linspace(0,1,5)
plt.figure()
gs=gridspec.GridSpec(3,3) #将区域分为3行3列
#1.将函数画在第1行跨123列
plt.subplot(gs[0,:])
y1=x
plt.plot(x,y1)
#2.将函数画在第2行跨12列
plt.subplot(gs[1,:2]) #跨编号为0,1的列
y2=x**2
plt.plot(x,y2)
#3.将函数画在第3列跨23行
plt.subplot(gs[1:,2]) #跨编号为1,2的行
y3=x**3
plt.plot(x,y3)
#4.将函数画在第3行第1列
plt.subplot(gs[-1,0]) #-1表示最后一行,也可以写成2
plt.scatter(x,y1)
#5.将函数画在第3行第2列
plt.subplot(gs[2,1])
plt.scatter(x,y2)
plt.show()
注:
注意在使用GridSpec函数是要import matplotlib.gridspec
gs=gridspec.GridSpec(3,3),将区域分为3行3列,并返回一个3行3列的对象.
plt.subplot(gs[0,:]),将图像显示在第1行的1,2,3列。
举例说明[1,:],[:,1]等的含义,假设有4行4列,编号从0开始0,1,2,3:
- [1,:] 表示1行0,1,2,3列
- [1,:2] 表示1行0,1列
- [0,2:] 表示0行2,3列
- [1:,1] 表示1,2,3行1列
- [:,1] 表示0,1,2,3行1列
3.方法三:subplots()函数
例三:将下图用subplots()函数画出来
代码如下:
import matplotlib.pyplot as plt
from numpy import *
x=linspace(0,1,10)
fig,ax=plt.subplots(2,2,sharex=False,sharey=True) #将区域分为2行2列,所有的部分共享y轴,不共享x轴
y1=x
y2=x**2
ax[0][0].plot(x,y1)
ax[0][1].scatter(x,y1)
ax[1][0].plot(x,y2)
ax[1][1].scatter(x,y2)
plt.show()
注:
fig,ax=plt.subplots(2,2,sharex=False,sharey=True) #将区域分为2行2列,所有的部分共享y轴,不共享x轴,函数返回一个Figure对象和一个子图数组