本系列文章配套代码获取有以下两种途径:
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1jG-rGG4QMuZu0t0kEEl7SA?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Data_Visualization
子图其实就是将画布分成若干子画布,每一个子画布就构成一个绘图区域,然后在这些绘图区域上分别绘制图形。这样就实现了一张画布多张图形分区域展示的效果。
接下来几篇文章就主要介绍一些用于创建子图的函数,本次介绍的是subplot()函数。
函数语法:
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’。
-
sharex或sharey:共享x轴或y轴,当轴共享时,有相同的大小、标记。
子图配置实例:
-
实例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——非等分的子图布局样式:
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/
本篇文章来源于微信公众号: 码农设计师