opencv基础知识

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

2018年07月24日 23:23:37 chen_you_Nick 阅读数:300更多

个人分类: PyQt

版权声明:本文为博主原创文章,转载请注明出处;如果博客中有错误之处抑或有可以改进的地方,欢迎在评论区留言。 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。

原文地址:https://www.cnblogs.com/yqxg/p/10037639.html

时间: 2024-12-16 12:29:41

opencv基础知识的相关文章

opencv基础知识------IplImage, CvMat, Mat 的关系和相互转换

Mat,cvMat和IplImage这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化.而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放.单通道提取.图像阈值操作等)进行了优化.在opencv2.0之前,opencv是完全用C实现的,但是,IplImage类型与CvMat类型的关系类似于面向对象中的继承关系.实际上,CvMat之上还有一个更抽象的基类----CvArr,这在源代码中会常见. 一.

OpenCV 基础知识------图像创建、访问、转换

cvCreateImage函数-- Cxcore数组操作 创建头并分配数据 IplImage* cvCreateImage( CvSize size, int depth, int channels ); size 图像宽.高. depth 图像元素的位深度,可以是下面的其中之一: IPL_DEPTH_8U - 无符号8位整型 IPL_DEPTH_8S - 有符号8位整型 IPL_DEPTH_16U - 无符号16位整型 IPL_DEPTH_16S - 有符号16位整型 IPL_DEPTH_32

《OpenCV:基础知识》

一.基础操作1. 数据类型 数据结构了解   图像相关:cvArr  cvMat IplImage      数据数组的维数, 与数据的通道数 见P46 (76) 2. 常见的矩阵操作熟悉   3. 数据的保存和读取 4. 图像的加载和显示 5. 视频的操作 6. 内存与序列   a. 内存存储器      CvMemStorage 双向链表  动态对象(cvSeq  cvSet)的内存      cvCreateMemStorage      cvReleaseMemStorage      

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

什么是图像 -- opencv基础

opencv基础篇--到底什么是图像 什么是图像?英语中有两个单词来形容图像,一个是picture,一个是image.这两者虽然是形容同一个东西,但却又有着区别.picture代表实而有物的真实图像:而image代表着计算机中存储的图像,也代表想象中的图像. 而我们更多研究的便是image,计算机图像从广义地可分为矢量图和像素图(位图).矢量图,是由一系列计算机指令描述和记录的一幅图,一幅图可以解为一系列由点.线.面等组成的子图.像素图,则是由很多个点组成的,每个点都是由二进制数据来描述和存储其

BroadcastReceive基础知识总结

BroadcastReceive基础知识总结 1.BroadcastReceive简介 BroadcastReceive也就是"广播接收者"的意思,顾名思义,就是用来接收来自系统和应用中的广播 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能,当网络状态改变时,系统会产生一条广播,接收到这条广播,就能及时的做出提示和保存数据等操作,当电池的电量改变的时候,系统会产生一条广播,接收到这条广播就能在电量低的时候告知用户

基础知识--:before伪元素和:after伪元素

http://book.51cto.com/art/201108/285688.htm 3.7  替换指定位置 大家都知道before和after是前.后的意思.但是奇怪的是,CSS中的:before伪元素和:after伪元素是为源文档中不存在的内容设置样式的. 没有内容怎么设置样式呢?别急!它们有一个content属性,一起使用就可以为某个选择器前.后的内容设置样式了. 下面就来了解一下:before伪元素和:after伪元素的用法. 视频教学:光盘/视频/3/3.7  替换指定位置.avi 

20_Shell语言———VIM编辑器基础知识三之窗口属性定制、配置文件及查找替换功能

Vim编辑器可以让用户按照需求来定制一些使用属性. 一.窗口属性定义 1)显示行号 行号不是内容,只是用来帮助用户确认文本所在的行.在vim编辑器中,如果要显示行号,可以在末行模式下输入: set number 如果想关闭,则可以在功能名称前面加上no,即: set nonumber 命令可以被简写,如set number 可以简写为 set nu:set nonumber 可以简写为 set nonu. 注意,上述设定仅对当前vim的进程有效,一旦当前进程关闭,这些设定就会失效,如果要使设定永