Matplotlib学习日记——多图合并展示

方法一:subplot()函数

下边的一个例子将四个图像在一个figure中展示:

#第一个图
plt.subplot(2,2,1)
plt.plot(X1,Y1)

#第二个图
plt.subplot(2,2,2)
plt.plot(X2,Y2)

#第三个图
plt.subplot(2,2,3):
plt.plot(X3,Y3)

#第四个图
plt.subplot(2,2,4)
plt.plot(X4,Y4)

subplot()函数共有三个参数,前两个参数表示将一个figure从行和列分成几个小块,第三个参数就是块号,第三个参数需要格外注意,下边再用另外一个例子解释一下:

#一个figure分成两行两列共四块,第一行的图像独占两块,第二行两个图像各占一块
#第一个图
plt.subplot(2,1,1) #两行,第一行只有一个图,这个图的块号是1
plt.plot(X1,Y1)

#第二个图
plt.subplot(2,2,3) #两行,第二行有两个图,现在这个图的块号是3而不是2!
plt.plot(X2,Y2)

#第三个图
plt.subplot(2,2,4) #两行,第二行有两个图,现在这个图的块号是4
plt.plot(X3,Y3)

总之subplot()函数的参数有点迷,可以用下边几个方法来实现多图合并显示

方法二:subplot2grid()

下边用subplot2grid()函数来实现第二个例子:

#第一个图
ax1 = plt.subplot2grid((2,2),(0,0),colspan = 2,rowspan = 1)
ax1.plot(X1,Y1)
ax1.set_title('ax1_title') #此处用的是set_title(),区别之前用的plt.title()

subplot2grid()函数的第一个参数(2,2)将figure分成了2 * 2 = 4块,第二个参数(0,0)表示当前所画的图从第一行的第一块开始(下标从0开始而不是1),第三个参数colspan = 2表示当前所画的图的列跨度是2(跨度以块为单位),最后一个参数rowspan = 1表示当前图的行跨度是1,rowspan和colspan默认值都是1

同理,剩下的两个图:

#第二个图
ax2 =plt.subplot2grid((2,2),(1,0))
ax2.plot(X2,Y2)
ax2.set_title('ax2_title')

#第三个图
ax3 =plt.subplot2grid((2,2),(1,1))
ax3.plot(X2,Y2)
ax3.set_title('ax2_title')

方法三:gridspec

先导包:

import matplotlib.gridspec as gridspec

画图:

#将figure分成2 * 2 = 4块
gs = gridspec.Gridspec(2,2)

#通过索引的方式来控制不同的图所占的行和列
ax1 = plt.subplot(gs[0,:])  #图1占第一行所有的块
ax2 = plt.subplot(gs[1,:1]) #图2占第二行的第一块
ax3 = plt.subplot(gs[1,2])  #图3占第二行的第二块

方法四:subplots()

用subplots()函数画2 * 2 = 4个小图:

f,((ax11,ax12),(ax21,ax22)) = plt.subplots(2,2,sharex= True,sharey = True)

这一行代码直接将一个figure分成了ax11,ax12,ax21,ax22四个小图,接下来只需要直接用ax的plot()函数画图即可
subplots的前两个参数表示将figure分成2 * 2 = 4小部分
后两个参数表示这四个小图共享横纵坐标轴

你可能感兴趣的:(matplotlib)