Matplotlib库基础-子图的绘制

主要内容:Matplotlib库的绘图区域,以及3种子图的选取方式。

1.subplot()函数

import numpy as np

arr = np.arange(4)

plt.subplot(221)

plt.plot([1,2,3,4])

plt.subplot(224)

plt.plot(arr*arr)

plt.show()

输出:

plt.subplot(2,2,4)表示讲绘图区域分成两行两列,按照从左到右的顺序排列,选取第四块。

横向跨区域情况

我们在实际中会遇到一张图跨几个子图的情况,我们还是用行列来分。

import numpy as np

arr = np.arange(4)

plt.subplot(221)

plt.plot([1,2,3,4],color='r')

plt.subplot(222)

plt.plot(arr*arr,color='g')

plt.subplot(212)

plt.plot(arr*arr*arr,color='b')

plt.show()

输出:

从上面的两个子图的角度看,整个图被分成两行两列,他们呢分别是1,2的位置,所以选取他们用plt.subplot(221)和plt.subplot(222),从下面的跨区域子图来看,整个图被分成了两行1列,位于下面的是2,所以选取的是plt.subplot(212)。

纵向跨区域同样理解:

#纵跨区域情况

import numpy as np

arr = np.arange(4)

plt.subplot(221)

plt.plot([1,2,3,4],color='r')

plt.subplot(223)

plt.plot(arr*arr,color='g')

plt.subplot(122)

plt.plot(arr*arr*arr,color='b')

plt.show()

输出:

注意:subplot()函数与先创建画布fig = plt.figure() 然后使用ax = fig.add_subplot() 在画布里面添加子图是一样的效果。

2.subplot2gird()函数

当我们碰到更为复杂的绘图区域,使用subplot()函数会比较麻烦,这时候有一个更好用的subplot2grid()函数可以帮我们完成子图布局。

plt.subplot2gird(GridSpec,CurSpec,colspan=1,rowspan=1)

理念:设定网格,选中网格,确定选中的区域或数量,下标从0开始索引。

#复杂选取布局

plt.subplot2grid((3,3),(0,0),colspan=3)

plt.subplot2grid((3,3),(1,0),colspan=2)

plt.subplot2grid((3,3),(1,2),rowspan=2)

plt.subplot2grid((3,3),(2,0))

plt.subplot2grid((3,3),(2,1))

输出:

plt.subplot2grid((3,3),(0,0),colspan=3):可以(3,3)表示将整个图分成3行3列,每一个子图可以用坐标的形式选取(这里就是(0,0)),colspan和rowspan可以给定跨行或是跨列的数量默认是1。

3.GridSpec类

在matplotlib 中,存在一个模块gridspec。模块gridspec 是一个可以指定画布中子区位置或者说是布局的“分区”模块。在模块gridspec 中,有一个类GridSpec。类GridSpec 可以指定网格的几何形状,也就是说,可以划定一个子区的网格状的几何结构。

#使用GridSpec类创建子图

from matplotlib.gridspec import GridSpec

gs = GridSpec(3,3)

ax1 = plt.subplot(gs[0,:])

ax2 = plt.subplot(gs[1,0:2])

ax3 = plt.subplot(gs[1:,2])

ax4 = plt.subplot(gs[2,0])

ax5 = plt.subplot(gs[2,1])

输出:

GridSpec(3,3)可以将画图区域分成3*3的格子,我们可以将这些子区域看作3*3的二维数组,使用二维数组的切片来取子图的对应的跨行或是跨列的区域。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容