Python3 matplotlib的绘图函数subplot()简介

Python3 matplotlib的绘图函数subplot()简介

一、简介

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

subplot(numRows, numCols, plotNum)
  • 图表的整个绘图区域被分成 numRows 行和 numCols 列

  • 然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1

  • plotNum 参数指定创建的 Axes 对象所在的区域

如果 numRows = 2, numCols = 3, 那整个绘制图表样式为 2X3 的图片区域, 用坐标表示为:

(1, 1), (1, 2), (1, 3)
(2, 1), (2, 2), (2, 3)

这时, 当 plotNum = 3 时, 表示的坐标为(1, 3), 即第一行第三列的子图

  • 如果 numRowsnumCols 和 plotNum 这三个数都小于 10 的话, 可以把它们缩写为一个整数, 例如 subplot(323) 和 subplot(3,2,3) 是相同的.

  • subplot在 plotNum 指定的区域中创建一个轴对象. 如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除.

二、参数说明

1,subplots()参数

matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)

创建一个画像(figure)和一组子图(subplots)。
这个实用程序包装器可以方便地在单个调用中创建子图的公共布局,包括封闭的图形对象。

输入参数说明:
  nrows,ncols:整型,可选参数,默认为1。表示子图网格(grid)的行数与列数。
  sharex,sharey:布尔值或者{'none','all','row','col'},默认:False
       控制x(sharex)或y(sharey)轴之间的属性共享:
          1.True或者'all':x或y轴属性将在所有子图(subplots)中共享.
          2.False或'none':每个子图的x或y轴都是独立的部分
             3.'row':每个子图在一个x或y轴共享行(row)
                4.'col':每个子图在一个x或y轴共享列(column)
  当子图在x轴有一个共享列时('col'),只有底部子图的x tick标记是可视的。
  同理,当子图在y轴有一个共享行时('row'),只有第一列子图的y tick标记是可视的。
  squeeze:布尔类型,可选参数,默认:True。
                * 如果是True,额外的维度从返回的Axes(轴)对象中挤出。
                    》如果只有一个子图被构建(nrows=ncols=1),结果是单个Axes对象作为标量被返回。
                    》对于N*1或1*N个子图,返回一个1维数组。
                    》对于N*M,N>1和M>1返回一个2维数组。
                *如果是False,不进行挤压操作:返回一个元素为Axes实例的2维数组,即使它最终是1x1。
  subplot_kw:字典类型,可选参数。把字典的关键字传递给add_subplot()来创建每个子图。
  gridspec_kw字典类型,可选参数。把字典的关键字传递给GridSpec构造函数创建子图放在网格里(grid)。
  **fig_kw:把所有详细的关键字参数传给figure()函数

返回结果:
  fig:matplotlib.figure.Figure对象
  ax:Axes(轴)对象或Axes(轴)对象数组。

2,figure()参数

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)

创建一个新的画布(figure)。
输入参数:
  num:整型或者字符串,可选参数,默认:None。
       如果不提供该参数,一个新的画布(figure)将被创建而且画布数量将会增加。
          如果提供该参数,带有id的画布是已经存在的,激活该画布并返回该画布的引用。
               如果这个画布不存在,创建并返回画布实例。
               如果num是字符串,窗口标题将被设置为该图的数字。
  figsize:整型元组,可选参数 ,默认:None。
              每英寸的宽度和高度。如果不提供,默认值是figure.figsize。
  dpi:整型,可选参数,默认:None。每英寸像素点。如果不提供,默认是figure.dpi。
  facecolor:背景色。如果不提供,默认值:figure.facecolor。
  edgecolor:边界颜色。如果不提供,默认值:figure.edgecolor。
  framemon:布尔类型,可选参数,默认值:True。如果是False,禁止绘制画图框。
  FigureClass:源于matplotlib.figure.Figure的类。(可选)使用自定义图实例。
  clear:布尔类型,可选参数,默认值:False。如果为True和figure已经存在时,这是清理掉改图。
返回值:
  figure:Figure。返回的Figure实例也将被传递给后端的new_figure_manager,这允许将自定义的图类挂接到pylab接口中。 

       附加的kwarg将被传递给图形init函数。

三、示例

1,规则划分成3*3

代码:

import matplotlib
import matplotlib.pyplot as pltif __name__ == '__main__':for i,color in enumerate("rgby"):plt.subplot(221+i, facecolor=color) #背景色设置facecolorplt.show()

效果:

2,不规则划分

不规则划分

将整个表按照 2*2 划分 
前两个简单, 分别是 (2, 2, 1) 和 (2, 2, 2)

但是第三个图呢, 他占用了 (2, 2, 3) 和 (2, 2, 4)

显示需要对其重新划分, 按照 2 * 1 划分

前两个图占用了 (2, 1, 1) 的位置

因此第三个图占用了 (2, 1, 2) 的位置

代码:

import matplotlib.pyplot as plt
import numpy as npdef f(t):return np.exp(-t) * np.cos(2 * np.pi * t)if __name__ == '__main__' :t1 = np.arange(0, 5, 0.1)t2 = np.arange(0, 5, 0.02)plt.figure(12)plt.subplot(221)plt.plot(t1, f(t1), 'bo', t2, f(t2), 'r--')plt.subplot(222)plt.plot(t2, np.cos(2 * np.pi * t2), 'r--')plt.subplot(212)plt.plot([1, 2, 3, 4], [1, 4, 9, 16])plt.show()

效果:

 

转载于:https://www.cnblogs.com/lizm166/p/9667923.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

signal(SIGHUP, SIG_IGN);

signal(SIGHUP, SIG_IGN); 的理解转载于:https://www.cnblogs.com/lanjiangzhou/p/10505653.html

spring钩子

Spring钩子方法和钩子接口的使用详解 前言 SpringFramework其实具有很高的扩展性&#xff0c;只是很少人喜欢挖掘那些扩展点&#xff0c;而且官方的Refrence也很少提到那些Hook类或Hook接口&#xff0c;至于是不是Spring官方有意为之就不得而知。本文浅析一下笔者目前看到的S…

day 012 生成器 与 列表推导式

生成器的本质就是迭代器&#xff0c;写法和迭代器不一样&#xff0c;用法一样。 获取方法&#xff1a; 1、通过生成器函数 2、通过各种推导式来实现生成器 3、通过数据的转换也可以获取生成器 例如&#xff1a; 更改return 为 yield 即成为生成器 该函数就成为了一个生成器函数…

20172325 2018-2019-1 《Java程序设计》第二周学习总结

20172325 2018-2019-1 《Java程序设计》第二周学习总结 教材学习内容总结 3.1集合 集合是一种聚集、组织了其他对象的对象。集合可以分为两大类&#xff1a;线性集合和非线性集合。线性集合&#xff1a;一种其元素按照直线方式组织的集合。非线性集合&#xff1a;一种其元素按某…

题解 luogu P2568 GCD

题解 luogu P2568 GCD 时间&#xff1a;2019.3.11 欧拉函数前缀和 题目描述 给定整数\(N\)&#xff0c;求\(1\le x,y \le N\)且\(\gcd(x,y)\)为素数的数对\((x,y)\)有多少对. 分析 枚举素数\(p\), 先求出\(1\le x,y \le \left \lfloor \dfrac n p \right \rfloor\)且\(\gcd(x, …

解决前后台发送请求或者接口之间发送请求乱码的问题

前后台传中文乱码&#xff1a; 前台使用encodeURI 进行编码 后台使用decode进行解码 如果接口之间调用出现乱码.接收方是&#xff1f;&#xff1f;&#xff1f;&#xff1f;这种。传送方式明文的处理方式&#xff1a; 发送方使用decode 进行编码&#xff1a; 接收方使用的ecod…

.net Core发布至IIS完全手册带各种踩坑

服务器环境配置 和各位大爷报告一下我的服务器环境 : Windows Server 2012 iis 8 小插曲开始: 运维大哥在昨天给了我一台新的server 0环境开始搭建 。 并且没有安装任何的系统补丁。 第一件事情请开始打 补丁 打完补丁之后有时补丁会不完全 ,所以需要去官网获取补丁: KB2919355…

Unity --- MeshRenderer之网格合并

创建如图所示的对象结构,parent为空对象&#xff0c;然后将下面的代码挂载到parent对象上运行即可。 1 using UnityEngine;2 using System.Collections;3 4 public class CombineMeshAndMaterials : MonoBehaviour5 {6 void Start()7 {8 CombineMesh();9 }…

Win10还原被Windows Defender隔离的文件

Win10最新版本的Windows Defender隔离/删除的文件没有还原的选项&#xff0c;导致很多破解文件或是注册机直接隔离&#xff0c;到威胁历史记录中去却无法恢复。经过各个尝试&#xff0c;到微软官方论坛中也尝试了很多方法&#xff0c;后来发现竟然恢复啦。各位小伙伴可以试试这…

(Review cs231n) Backpropagation and Neural Network

损失由两部分组成&#xff1a; 数据损失正则化损失&#xff08;data loss regularization&#xff09; 想得到损失函数关于权值矩阵W的梯度表达式&#xff0c;然后进性优化操作&#xff08;损失相当于海拔&#xff0c;你在山上的位置相当于W&#xff0c;你进行移动&#xff0c…

【计算机算法设计与分析】——排序

一.排序 二.插入排序 &#xff08;1&#xff09;算法描述 &#xff08;2&#xff09;性能分析 &#xff08;3&#xff09;寻求优化 三.归并排序 &#xff08;1&#xff09;算法思想 &#xff08;2&#xff09;性能分析 &#xff08;2&#xff09;示例 &#xff08;3&#xff09…

QT 随机数生成

下面总结了QT中随机生成的方法&#xff08;仅供学习参考&#xff09;&#xff0c;分为旧方法和新方法&#xff0c;一般来说&#xff0c;旧的方法已经被抛弃&#xff0c;在开发新的应用中推荐使用新方法。 C Code 123456789101112131415161718192021222324#include <QCoreApp…

Activiti中的关于子流程中的并发节点标记处理

最近在研究一个轻量级的工作流引擎Activiti&#xff0c;就遇到了子流程中无法标记其并发节点的问题&#xff0c;经过几天的研究&#xff0c;想到了一个简单易懂的方法&#xff0c;总结如下&#xff0c;希望对你们能有所帮助&#xff0c;有写的不对的地方&#xff0c;还希望大家…

[WPF 基础知识系列] —— 绑定中的数据校验Vaildation

[WPF 基础知识系列] —— 绑定中的数据校验Vaildation 原文:[WPF 基础知识系列] —— 绑定中的数据校验Vaildation前言&#xff1a; 只要是有表单存在&#xff0c;那么就有可能有对数据的校验需求。如&#xff1a;判断是否为整数、判断电子邮件格式等等。 WPF采用一种全新的方式…

搜索(题目)

A.POJ_1321考查DFS的一个循环中递归调用 1 #include<iostream>2 #include<cstring>3 4 using namespace std;5 char a[10][10]; //记录棋盘位置6 int book[10]; //记录一列是否已经放过棋子7 int n, k; // k 为 需要放入的棋子数8 int t…

rest_framework中的url注册器,分页器,响应器

url注册器&#xff1a; 对于authors表&#xff0c;有两个url显得麻烦&#xff1a; rest_framework将我们的url进行了处理&#xff1a; 这样写了之后&#xff0c;就可以像原来一样访问author表了。 故意写错路径&#xff0c;看看它为我们做了哪些配置&#xff1a; 在有关author的…

网页排版与布局

一 网站的层次结构 制作便于浏览页面的一个大敌就是视觉干扰,它包含两类: a,混乱页面主次不清,所有东西都引人注目 b,背景干扰 1.把页面分割成清晰明确的不同区域很重要,因为可以使用户迅速判断出哪些区域应重点看,哪些可以放心地忽略. 2.创建清晰直观的页面层次结构;越重要越要…

Bash的循环结构(for和while)

在bash有三中类型的循环结构表达方法&#xff1a;for&#xff0c;while&#xff0c;until。这里介绍常用的两种&#xff1a;for和while。 for bash的for循环表达式和python的for循环表达式风格很像&#xff1a; for var in $(ls) doecho "$var"done 取值列表有很多种…

MVVM模式下实现拖拽

MVVM模式下实现拖拽 原文:MVVM模式下实现拖拽在文章开始之前先看一看效果图 我们可以拖拽一个"游戏"给ListBox,并且ListBox也能接受拖拽过来的数据&#xff0c; 但是我们不能拖拽一个"游戏类型"给它。 所以当拖拽开始发生的时候我们必须添加一些限制条件&a…

jenkins+Docker持续化部署(笔记)

参考资料&#xff1a;https://www.cnblogs.com/leolztang/p/6934694.html &#xff08;Jenkins&#xff08;Docker容器内&#xff09;使用宿主机的docker命令&#xff09; https://container-solutions.com/running-docker-in-jenkins-in-docker/ &#xff08;Running Docker i…