如何理解subplot绘制不规则子图的参数设置

在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下

subplot(numRows, numCols, plotNum)
  • 图表的整个绘图区域被分成numRows行和numCols列
  • 然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1
  • plotNum 参数指定创建的 Axes 对象所在的区域

规则划分

先看一种2*2的规则划分

import matplotlib
import matplotlib.pyplot as plt

if __name__ == '__main__':
    for i,color in enumerate("rgby"):
        plt.subplot(221+i, axisbg=color)

    plt.show()

plt.subplot(221+i)等价于plt.subplot(221);plt.subplot(222);plt.subplot(223);plt.subplot(224)

结果如下:

3*3

这个很好理解。首先将figure分成2行2列,一共有4个子图,红色的子图标号为1,绿色的子图标号为2,蓝色的子图标号为3,黄色的子图标号为4。

不规则划分

那么再来看看两个不规则的示例:

1.

import numpy as np
import matplotlib.pyplot as plt
# 分成2x2,占用第一个,即第一行第一列的子图
plt.subplot(221)
# 分成2x2,占用第二个,即第一行第二列的子图
plt.subplot(222)
# 分成2x1,占用第二个,即第二行
plt.subplot(212)
plt.show()

结果如下:

不规则的

2. 

import numpy as np
import matplotlib.pyplot as plt

plt.subplot(211)

plt.subplot(234)

plt.subplot(235)
plt.subplot(236)
plt.show()

结果如下:

不规则的

 

如何理解这些不规则的划分呢???

以第二个不规则子图的绘制作为示例来讲解:

plt.subplot(211)

该语句表示将整个figure分成2行列,该子图占据第一列,因为总共才一列,也就是一整行。

plt.subplot(234)

这个语句将整个figure分成2行3列,但是前面不是已经分成两行一列了吗,这里怎么又说分成两行三列呢??看一下第三个参数就能明白了,第三个参数值为4,表示在第4个区域,那么这句就可以解释为,不管前面是将figure怎么分的,我们现在重新将整个figure分成两行三列,该子图占据第四个位置,第四个位置也就是第二行第一列了。由于重新将figure分成两行三列,那么第一行的子图就占据3列了。正好3+1=4。

plt.subplot(235)

该子图位于第二行第二列,3+2=5。

plt.subplot(236)

该子图位于第二行第三列,3+3=6。

 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`plt.subplot()` 是 Matplotlib 中用于创建子图的函数,它可以在一个绘图区域中创建多个子图,并且可以通过参数设置来调整子图之间的距离。 `plt.subplot()` 的常用参数如下: - `plt.subplot(nrows, ncols, index)`:创建一个 nrows 行,ncols 列的子图网格,并将当前活动的子图设置为指定的 index。index 的取值范围是从 1 到 nrows * ncols。 - `plt.subplots_adjust()`:调整子图之间的间距和位置。 下面是一个示例代码,演示了如何使用 `plt.subplot()` 和 `plt.subplots_adjust()` 来调整子图之间的距离: ```python import matplotlib.pyplot as plt import numpy as np # 创建一个 2x2 的子图网格 fig, axes = plt.subplots(nrows=2, ncols=2) # 在每个子图绘制随机数据 for ax in axes.flatten(): ax.plot(np.random.rand(10)) # 调整子图之间的距离和位置 plt.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9, wspace=0.2, hspace=0.3) # 显示图形 plt.show() ``` 在上述示例代码中,我们创建了一个 2x2 的子图网格,并在每个子图绘制了随机数据。然后,我们使用 `plt.subplots_adjust()` 函数来调整子图之间的距离和位置。通过设置 `left`、`right`、`bottom` 和 `top` 参数,我们可以调整子图网格的边界位置。通过设置 `wspace` 和 `hspace` 参数,我们可以调整子图之间的水平和垂直间距。 请注意,这只是示例代码,你可以根据自己的需求进行参数设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值