matplotlib之pyplot模块实现添加子图subplot的使用


Posted in Python onApril 25, 2021

概述

subplot()函数向当前图像(figure)添加一个子图(Axes),并将该子图设为当前子图。或者将某子图设为当前子图。

pyplot.subplot()其实是Figure.add_subplot()的一个封装。

函数的定义签名为:matplotlib.pyplot.subplot(*args, **kwargs)

函数的调用签名为:

  • subplot(nrows, ncols, index, **kwargs)
  • subplot(pos, **kwargs)
  • subplot(**kwargs)
  • subplot(ax)

函数的参数为:

*args:定义子图的位置。int(int, int, index)SubplotSpec, 默认值为(1, 1, 1)

*args由以下三种定义方式。

  • 三个整数构成的三元组(nrows, ncols, index):首先构成一个nrows行和ncols列的网格,然后将子图添加到对应index索引位置。 index从1开始累计,1为左上角,依次向右递增. index也可以是是一个二元组,例如fig.add_subplot(3, 1, (1, 2))。
  • 三位整数:每一位数字可以分解为单独的整数,因此,这种方法最好用于子图少于9个的情况(index最大只能为9)。比如plt.subplot(235)等价于plt.subplot(2, 3, 5)。
  • SubplotSpec对象:

函数的返回值为:axes.SubplotBase对象或 Axes的其他子类。

案例:规则布局

import matplotlib.pyplot as plt

# 添加3行3列子图中的第1个子图,并将其为当前子图
plt.subplot(331)
plt.bar(range(1,4),range(1,4))
# 添加3行3列子图中的第5个子图,并将其为当前子图
plt.subplot(335)
plt.pie([4,5,6])
# 添加3行3列子图中的第9个子图,并将其为当前子图
# 返回值为Axes对象
ax=plt.subplot(339)
# 使用Axes的方法(面向对象模式)绘制点
ax.plot([1],'o')

plt.show()

matplotlib之pyplot模块实现添加子图subplot的使用

pyplot.plot()源码如下,通过源码可知pyplot模块的函数底层调用的是Axes对象的对应方法。

def plot(*args, scalex=True, scaley=True, data=None, **kwargs):
    return gca().plot(
        *args, scalex=scalex, scaley=scaley,
        **({"data": data} if data is not None else {}), **kwargs)

不规则布局

通常子区函数subplot()用来完成等分画布的绘图展示的任务,如果在画布上需要进行非等分画布的图形展示时,我们可以多次调用函数subplot()来完成非等分画布的绘图准备任务。

matplotlib之pyplot模块实现添加子图subplot的使用

import matplotlib.pyplot as plt

# 绘制1行2列子图中的第1个子图
plt.subplot(121,facecolor='r')
# 绘制2行2列子图中的第2个子图
plt.subplot(222,facecolor='g')
# 绘制2行2列子图中的第4个子图
plt.subplot(224,facecolor='b')

plt.show()

matplotlib之pyplot模块实现添加子图subplot的使用

import matplotlib.pyplot as plt

# 绘制3行2列子图中的第1个子图
plt.subplot(321,facecolor='r')
# 绘制3行2列子图中的第2个子图
plt.subplot(322,facecolor='r')
# 绘制3行2列子图中的第3个子图
plt.subplot(323,facecolor='r')
# 绘制3行2列子图中的第4个子图
plt.subplot(324,facecolor='r')
# # 绘制3行1列子图中的第3个子图
plt.subplot(313,facecolor='b')

plt.show()

subplot()函数有一个非常重要的特性:
在创建新的子图时,如果新建子图与原有的子图存在重叠的情况,那么会删除原有重叠的子图。
例如:

import matplotlib.pyplot as plt
# 绘图时隐含创建subplot(111)
plt.plot([1, 2, 3])
# 创建一个新的子图,由于与原子图重叠,因此删除原有子图
plt.subplot(211)
plt.show()

到此这篇关于matplotlib之pyplot模块实现添加子图subplot的使用的文章就介绍到这了,更多相关matplotlib 添加子图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python和C语言混合编程实例
Jun 04 Python
python中xrange用法分析
Apr 15 Python
python3编码问题汇总
Sep 06 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
ipad上运行python的方法步骤
Oct 12 Python
python tornado修改log输出方式
Nov 18 Python
Python列表倒序输出及其效率详解
Mar 04 Python
Python检测端口IP字符串是否合法
Jun 05 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
django中ImageField的使用详解
Dec 21 Python
Python采集壁纸并实现炫轮播
Apr 30 Python
python实现简单区块链结构
python实现图片九宫格分割的示例
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 #Python
浅谈Python项目的服务器部署
Apr 25 #Python
Python Socket编程详解
Apr 25 #Python
Python Django 后台管理之后台模型属性详解
如何用python反转图片,视频
You might like
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
PHP可变函数学习小结
2015/11/29 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
Python中的闭包实例详解
2014/08/29 Python
python 处理string到hex脚本的方法
2018/10/26 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
python3.x实现base64加密和解密
2019/03/28 Python
Python3开发环境搭建详细教程
2020/06/18 Python
NET程序员上机面试题
2015/05/23 面试题
what is the difference between ext2 and ext3
2015/08/25 面试题
UNIX文件系统常用命令
2012/05/25 面试题
英文版区域经理求职信
2013/10/23 职场文书
五年级音乐教学反思
2014/02/06 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
村主任当选感言
2015/08/01 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
一文搞懂MySQL索引页结构
2022/02/28 MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL