zoukankan      html  css  js  c++  java
  • opencv基础知识

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

    版权声明:本文为博主原创文章,转载请注明出处;如果博客中有错误之处抑或有可以改进的地方,欢迎在评论区留言。 https://blog.csdn.net/f156207495/article/details/81194184

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

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

    规则划分

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

    1.  
      import matplotlib
    2.  
      import matplotlib.pyplot as plt
    3.  
       
    4.  
      if __name__ == '__main__':
    5.  
      for i,color in enumerate("rgby"):
    6.  
      plt.subplot(221+i, axisbg=color)
    7.  
       
    8.  
      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.

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

    结果如下:

    不规则的

    2. 

    1.  
      import numpy as np
    2.  
      import matplotlib.pyplot as plt
    3.  
       
    4.  
      plt.subplot(211)
    5.  
       
    6.  
      plt.subplot(234)
    7.  
       
    8.  
      plt.subplot(235)
    9.  
      plt.subplot(236)
    10.  
      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。

  • 相关阅读:
    mailing list的原理
    关于结构体的使用
    c++ template
    IDA逆向
    重定向 301 302
    linux信号
    cmake编译选项
    mongodb超时
    普通java工程的resources目录寻址
    Vue基础---->VueJS的使用(二)
  • 原文地址:https://www.cnblogs.com/yqxg/p/10037639.html
Copyright © 2011-2022 走看看