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 第一步 hello world
Sep 25 Python
详解Python nose单元测试框架的安装与使用
Dec 20 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
Apr 17 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
python实现音乐播放器 python实现花框音乐盒子
Feb 25 Python
Python实现UDP程序通信过程图解
May 15 Python
python代码区分大小写吗
Jun 17 Python
Python 防止死锁的方法
Jul 29 Python
通过实例了解python__slots__使用方法
Sep 14 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 16 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将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
Js+XML 操作
2006/09/20 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
vue input 输入校验字母数字组合且长度小于30的实现代码
2018/05/16 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
python简单商城购物车实例代码
2018/03/15 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
python队列原理及实现方法示例
2019/11/27 Python
如何基于python操作json文件获取内容
2019/12/24 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
英国网上花店:Bunches
2016/11/29 全球购物
初二政治教学反思
2014/01/12 职场文书
机器人瓦力观后感
2015/06/12 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书