首页编程开发Matplotlib【数据可视化(Matplo...

【数据可视化(Matplotlib篇)】18.子图布局函数subplot()

本系列文章配套代码获取有以下两种途径:

  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1jG-rGG4QMuZu0t0kEEl7SA?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Data_Visualization




上一篇文章中介绍了Figure对象的内容,其所有绘图元素的顶级容器。当然也可以在在同一张画布(Figure对象)上绘制多个图形,此时就需要引入子图的概念。

子图其实就是将画布分成若干子画布,每一个子画布就构成一个绘图区域,然后在这些绘图区域上分别绘制图形。这样就实现了一张画布多张图形分区域展示的效果。

接下来几篇文章就主要介绍一些用于创建子图的函数,本次介绍的是subplot()函数。

01

函数语法


subplot()函数可以在图表窗口(Figure)内建立子图表(axes),有时候也可称此为子图或轴对象,函数语法如下(该函数会返回一个子图表对象axes):
plt.subplot(*args,**kwargs)
  • *args参数:数据形式包括int、(int, int, index)、SubplotSpec,用于描述的子图的位置,默认为(1, 1, 1),详细解释如下:

描述方式
说明
(nrows,ncols,index) 三个整数的形式,nrows、ncols代表将画布划分为nrows行和ncols列的网格,index代表子图的索引。
三个连续数字 可以解释为分开的数字,例如:subplot(231)相当于subplot(2,3,1),即subplot(nrows=1,ncols=1,index=1)。需要注意的是,该方式只能在不超过9个子图的情况下使用。
SubplotSpec对象 GridSpec中子图的位置
  • projection图表投影方式,可以是None(默认)、atioff、hammer、mollweide、polar、rectilinear

  • polar默认是False,如果是True,相当于projection=’polar’

  • sharexsharey:共享x轴或y轴,当轴共享时,有相同的大小、标记。

02

子图配置实例


  • 实例1——等分子图布局样式

索引index从图表左上角以编号1开始,并向右向下增加。例如,如果将一个Figure划分为上下2行、左右2列,一共4个子图区域,那么subplot()函数的应用如下:

代码如下所示:

x = np.linspace(0 , 10 , 100)

plt.figure(figsize=(8,8))

plt.subplot(2,2,1)
plt.title("子图1")
plt.plot(x,np.power(x,1))

plt.subplot(2,2,2)
plt.title("子图2")
plt.plot(x,np.power(x,2))

plt.subplot(2,2,3)
plt.title("子图3")
plt.plot(x,np.power(x,0.5))

plt.subplot(2,2,4)
plt.title("子图4")
plt.plot(x,np.power(x,8))

plt.show()

可视化效果如下图所示:

  • 实例2——非等分子图布局样式

索引index也可以是(first, last)这样元组形式,例如,以下子图布局方式:

代码如下所示:

x = np.linspace(0 , 10 , 100)

plt.figure(figsize=(8,8))

plt.subplot(3,3,(1,2))
plt.title("子图1")
plt.plot(x,np.power(x,1))

plt.subplot(3,3,3)
plt.title("子图2")
plt.plot(x,np.power(x,2))

plt.subplot(3,3,(4,6))
plt.title("子图3")
plt.plot(x,np.power(x,0.5))

plt.subplot(3,3,7)
plt.title("子图4")
plt.plot(x,np.power(x,4))

plt.subplot(3,3,(8,9))
plt.title("子图5")
plt.plot(x,np.power(x,8))

plt.show()

可视化效果如下图所示:

  • 实例3——非等分子图布局样式
也可以通过nrows,ncols的设置,完成非等分的子图布局样式,例如,以下子图布局方式:
代码如下所示:
x = np.linspace(0 , 10 , 100)

plt.figure(figsize=(8,8))

plt.subplot(2,2,1)
plt.title("子图1")
plt.plot(x,np.power(x,1))

plt.subplot(2,2,2)
plt.title("子图2")
plt.plot(x,np.power(x,2))

plt.subplot(2,1,2)
plt.title("子图3")
plt.plot(x,np.power(x,0.5))

plt.show()
可视化效果如下图所示:


更多内容可以前往官网查看

https://matplotlib.org/stable/


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments