1、绘图区域设置:为figure指定不同的axes区域
我们可以在一张图上绘制多个图形,当然,我们也可以将不同的图形绘制到多个不同的区域当中。共有如下几3种方式来实现绘图区域的设置。
通过figure对象调用add_subplot方法。
通过plt的subplot方法。
通过plt的subplots方法。
1)figure对象的add_subplot方法使用说明
首先需要显示的创建一个figure对象,通过调用figure对象的add_subplot方法,来分配不同的子绘图区域。通俗的来说,就是相当于得到一个"画板对象",然后在这个画板上,分配出不同的子绘图区域,每个区域可以绘制不同的图形。
add_subplot指定绘图布局,需要指定子绘图区域的行数、列数和当前要绘制的子区域。
add_subplot方法会返回每个子绘图区域的对象,调用该对象即可实现在子区域的图形绘制。
在绘制图形时,总是需要创建figure对象。如果没有显式创建,则plt会隐式创建一个figure对象。在绘制图形时,既可以使用plt来绘制,也可以使用子绘图对象来绘制。“如果使用plt对象绘制,则总是在最后创建的绘图区域上进行绘制。”
操作如下:
figure = plt.figure() axes1 = figure.add_subplot(2, 1, 1, facecolor="#eeeeee") axes2 = figure.add_subplot(2, 1, 2) plt.plot([1,2],[4,8])
结果如下:
① figure对象的add_subplot方法常用参数说明
add_subplot指定绘图布局:既可以使用三个参数分开传递,也可以使用一个参数整体传递。
使用facecolor设置绘图区域的背景色。
plt.subplots_adjust方法可以用来调整子图与子图之间的距离。(left,right,top,bottom,wspace,hspace)
② add_subplot指定绘图布局与facecolor设置绘图区域的背景色
figure = plt.figure() axes1 = figure.add_subplot(2, 1, 1, facecolor="#eeeeee") axes1.plot([1,2],[4,8]) axes2 = figure.add_subplot("212") axes2.plot([1,8],[4,2])
结果如下:
③ plt.subplots_adjust方法调整子图与子图之间的距离
figure = plt.figure() axes1 = figure.add_subplot("221",facecolor="#eeeeee") axes1.plot([1,2],[4,8]) axes2 = figure.add_subplot("222") axes2.plot([1,8],[4,2]) axes3 = figure.add_subplot("223") axes3.plot([1,2],[4,8]) axes4 = figure.add_subplot("224",facecolor="#eeeeee") axes4.plot([1,8],[4,2]) # hspace和wspace参数最有用,只讲述这个 plt.subplots_adjust(hspace=1,wspace=0.5)
结果如下:
3)plt的subplot方法的使用说明
plt.subplot方法,由于plt可以隐式的创建一个figure对象,因此使用这个方法,来指定绘图布局,不需要显示的创建figure对象。因为plt.subplot方法直接可以返回子绘图区域的axes对象。
实际上,这种创建子绘图区域的方式,底层也是通过第一种方式实现的。
因此,使用这种方式和add_subplot的使用方式,一摸一样。
① 演示如下
plt.subplot("121") plt.plot([1, 2, 3], "g--d") plt.subplot(1, 2, 2) plt.plot([2, 4, 1], "r-.o") plt.subplots_adjust(wspace=0.5)
结果如下:
4)plt的subplots方法的使用说明
通过plt的subplots方法创建子绘图区域,该方法返回一个元组。如果是一个子绘图对象,那么返回的是一个axes坐标系对象。如果是多个子绘图对象,则返回一个ndarray数组。
可以通过sharex与sharey来指定是否共享x轴与y轴。
操作如下:
figure,axes = plt.subplots(1,1) display(type(figure)) display(type(axes)) figure,axes = plt.subplots(2,2) display(type(figure)) display(type(axes))
结果如下:
① 不使用sharex与sharey共享x轴与y轴
figure,axes = plt.subplots(2,2) axes[0,0].plot([1,4]) axes[0,1].plot([6,2]) axes[1,0].plot([3,7]) axes[1,1].plot([8,4])
结果如下:
② 使用sharex与sharey共享x轴与y轴
figure,axes = plt.subplots(2,2,sharex=True,sharey=True) axes[0,0].plot([1,4]) axes[0,1].plot([6,2]) axes[1,0].plot([3,7]) axes[1,1].plot([8,4])
结果如下:






