文章目录

  • 1、如何创建多个子图
  • 2、subplots()函数
  • 3、subplot2grid()函数
  • 4、grids函数
  • 5、tight_layout()

本章主要介绍画布中的子图涉及的相关内容。

1、如何创建多个子图

matplotlib中创建多个子图所用到的函数为:

plt.subplot(subplot(nrows, ncols, index)

解释: 在当前的图中,函数创建并返回一个Axes对象,其位置索引为nrows乘ncolsaxes的网格。如果nrows、ncols和index都小于10,则索引从1到nrows*ncols,按行大顺序递增。索引也可以是单数、连数、三位数。比如说:例如,subplot(2,3,3)和subplot(233)都在当前图的右上角创建了一个Axes,占据了图高的一半和图宽的三分之一,即是2x3网格的右上角区域。

注意: 创建子图将删除任何与它重叠的、超出共享边界的已有子图。
举例:

import matplotlib.pyplot as plt
# plot画图时,当只有一个列表或者数组的时候,这个列表会被当做Y轴,X轴由索引自动生成
# 创建第一个默认背景的子图
plt.subplot(211)
plt.plot(range(12))
# 创建第二个有着黄色背景的子图
plt.subplot(212, facecolor='y') # creates 2nd subplot with yellow background
plt.plot([4,6,8])
plt.show()

显示结果如下:

画布中的add_subplot()函数不会覆盖现有的图,看下面实例:

import matplotlib.pyplot as plt
fig = plt.figure()
# 在这个画布中用ax添加第一个子块
ax1 = fig.add_subplot(111)
ax1.plot([1,2,3])
#在这个画布分成2x2的区域,取第一个区域进行 画图
ax2 = fig.add_subplot(221, facecolor='y')
ax2.plot([1,2,3])

显示结果如下,我们可以看出,第二个子块添加的时候,第一个子块不会消失。

同时,您可以通过在同一图形画布中添加另一个轴对象,在同一图形中添加插入图。示例如下:

import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
# 通过fig.add_axes给设定的axes调整位置和大小
# 主要的axes
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
# 插入的axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # inset axes
y = np.sin(x)
# 分别在axes1区域和axes2区域作图
axes1.plot(x, y, 'b')
axes2.plot(x,np.cos(x),'r')
# 分别给axes1区域和axes2区域设置标题
axes1.set_title('sin')
axes2.set_title("cos")
plt.show()

2、subplots()函数

Matplotlib的spyplot API有一个名为subplots()的函数,它作为一个实用的包装器,有助于在一次调用中创建常见的子图布局,包括包围图对象。该函数如下:

plt.subplots(nrows, ncols)

该函数的两个整数参数指定了子图网格的行数和列数。该函数返回一个图形对象和一个包含等于nrows*ncols的坐标轴对象的元组。每个坐标轴对象都可以通过它的索引来访问。这里我们创建一个2行2列的子图,并在每个子图中显示4个不同的图,示例如下:

import matplotlib.pyplot as plt
import numpy as np
# 创建一个画布,并将这个画布分成2x2个的子区域
fig,a =  plt.subplots(2,2)
x = np.arange(1,5)
# 在第一个axes区域画图并设置标题
a[0][0].plot(x,x*x)
a[0][0].set_title('square')
# 在第一行第二列的axes区域画图并设置标题
a[0][1].plot(x,np.sqrt(x))
a[0][1].set_title('square root')
# 在第二行第一列的axes区域画图并设置标题
a[1][0].plot(x,np.exp(x))
a[1][0].set_title('exp')
# 在第二行第二列的axes区域画图并设置标题
a[1][1].plot(x,np.log10(x))
a[1][1].set_title('log')
plt.show()

显示结果如下:

3、subplot2grid()函数

这个函数在网格的特定位置创建轴对象时提供了更多的灵活性。它还允许轴对象跨越多行或多列。函数如下:

plt.subplot2grid(shape, location, rowspan, colspan)

在下面的例子中,画布对象的3X3网格中填充了大小不一的行跨度和列跨度的axes对象,每个axes对象都绘制了不同的图。

import matplotlib.pyplot as plt
import numpy as np
axes1 = plt.subplot2grid((3,3),(0,0),colspan = 2)
axes2 = plt.subplot2grid((3,3),(0,2), rowspan = 3)
axes3 = plt.subplot2grid((3,3),(1,0),rowspan = 2, colspan = 2)
x = np.arange(1,10)
axes2.plot(x, x*x)
axes2.set_title('square')
axes1.plot(x, np.exp(x))
axes1.set_title('exp')
axes3.plot(x, np.log(x))
axes3.set_title('log')
# tight_layout会自动调整子图参数,使之填充整个图像区域,减少排版出错。
plt.tight_layout()
plt.show()

‘’’
shape为3x3,画布共分成了9个网格,location为(0,0)时,代表第一个网格,为(0,2)时代表第一行第三个网格,,依次类推。对于axes1来说,colspan=3的意思是这个axes区域从网格的起始点(0,0)开始,又在此基础上占据了两列。同理,对于axes2来说,rowspan=3,是在(0,2)这个起始网格点的基础上,又增加了三行。对于axes3来说,rowspan=2,colspan=2,是在(1,0)这个网格点做起始点的基础上又增加了两行两列。

实际占据的区域如下图所示:

颜色相同的代表一个axes区域,第一行前两列为axes1占据的位置,第二、三行前两列为axes3占据的位置,右边最后一列是axes2占据的区域。

‘’’
上面代码的结果如下:

4、grids函数

axes对象的grid()函数可以设置网格在图中的可见性为开启或关闭。你也可以显示网格的主要/次要(或两者)刻度。此外,在grid()函数中还可以设置颜色、线型和线宽属性。
示例如下:

import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(1,3, figsize = (12,4))
x = np.arange(1,11)
axes[0].plot(x, x**3, 'g',lw=2)
# plt.grid()为显示网格线,1=True=默认显示;0=False=不显示
axes[0].grid(True)
axes[0].set_title('default grid')
axes[1].plot(x, np.exp(x), 'r')
axes[1].grid(color='b', ls = '-.', lw = 0.25)
axes[1].set_title('custom grid')
axes[2].plot(x,x)
axes[2].set_title('no grid')
# fig.tight_layout用于自动调整子图参数
fig.tight_layout()
plt.show()

显示结果如下:

5、tight_layout()

在matplotlib中,轴Axes的位置以标准化图形坐标指定,可能发生的情况是轴标签、标题、刻度标签等等会超出图形区域,导致显示不全。Matplotlib v1.1 引入了一个新的命令tight_layout(),作用是自动调整子图参数,使之填充整个图像区域。

4、matplotlib中的子图相关subplot相关推荐

  1. 【科研分享】Matplotlib 绘制多子图(subplot)进行实验结果分析

    Matplotlib 绘制多子图(subplot)进行实验结果分析   本文主要总结于本人近期的科研经历,在最后撰写论文试验分析的时候曾经被导师要求绘制一幅2*8的16子图的超参数分析结果图.所以踩了 ...

  2. 【绘图】3D点图 及绘图关系matplotlib中plt系列

    文章目录 1. 报错及解决方案: 2. matplotlib中plt绘图关系描述 2.1 plt.figure() 2.2 plt.subplot() 2.3 plt.subplots() 2.4 a ...

  3. matplotlib中关于画布的相关知识总结

    [前言]: 1.在上一篇文章中,我们讲述了如果画一些简单的图表,比如:柱状图.条形图.饼图等等. 2.这篇文章就来一些干货,总结一下关于画布的相关知识,以及如何创建多个子图. fihure() 函数 ...

  4. python中subplot是什么意思_python matplotlib中的subplot函数使用详解

    python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包.基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数.于是,为了节省时间,可以一劳 ...

  5. python中mat函数_python matplotlib中的subplot函数使用详解

    python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包.基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数.于是,为了节省时间,可以一劳 ...

  6. matplotlib中cla/clf/close用法及相关清除效果

    在使用matplotlib画图时,画完图之后需要进行一定的清理工作,否则后续画图的结果中可能混入前一幅图的数据,或者造成频繁创建绘图对象.下面解释一下matplotlib中的相关清理操作和效果.主要包 ...

  7. pythonsubplot_python matplotlib中的subplot函数使用详解

    python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包.基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数.于是,为了节省时间,可以一劳 ...

  8. matplotlib中subplot的用法

    subplot概述 一个figure对象可以包含了多个子图,可以使用subplot()函数来绘制子图. subplot(numRow , numCol ,plotNum ) subplot(numRo ...

  9. Py之matplotlib:matplotlib绘图中与颜色相关的参数(color颜色参数、linestyle线型参数、marker标记参数)可选列表集合(建议收藏)

    Py之matplotlib:matplotlib绘图中与颜色相关的参数(color颜色参数.linestyle线型参数.marker标记参数)可选列表集合(建议收藏) 目录 matplotlib绘图中 ...

  10. matplotlib中绘图常用函数

    matplotlib中常用函数 散点图 柱状图 等高线 matplotlib绘制3D图 子图像 动态图 常见设置 一.设置坐标轴 # x轴和y轴的值域 plt.xlim((-1,2)) plt.yli ...

最新文章

  1. leetcode 207课程表
  2. 了解播放过滤器API
  3. centos 使用mysql_Centos下MySQL使用总结
  4. wps的流程图怎么导出_WPS如何绘制流程图? WPS绘制流程图的详细教程
  5. 主板声卡坏了会不会有电流声_不同领域适使用不同类型声卡,千万别选错了~~~...
  6. mysql ipk 编译_OpenWrt的ipk包安装
  7. Win10系统怎么安装cab文件?
  8. matlab 计算一元函数解,遗传算法简单一元函数优化实例
  9. 面试乐融集团Python开发工程师助理有感
  10. php如何获取百度快照,php代码获取 百度收录和百度快照时间
  11. rust键位失灵_switch手柄按键失灵不响应怎么办 NS手柄按键没反应解决办法
  12. Js 中null 和underfined的区别
  13. 怎样在vs2010中添加图片资源呢?
  14. 哪个一键重装电脑系统工具好用些?
  15. 百思不得姐之广告界面(三)
  16. 《玩不够的数学:算术与几何的妙趣》:第一章 平面上的几何艺术
  17. 使用小爱同学语音控制电脑关机 - Winform C#
  18. netty之微信-Netty 是什么?(三)
  19. Linux的sz和rz命令讲解
  20. ESMT功放,AD52050B,2*15W,模拟功放

热门文章

  1. 多项式曲线,分段曲线,曲线参数化,平面曲线,插值方法的样条曲线
  2. C语言volatile关键字
  3. 第四季-专题10-字符设备驱动模型
  4. 凸优化第五章对偶 5.3 几何解释
  5. IIS中启用ASP并连接Access数据库的解决办法
  6. python 反弹shell,加了UDP
  7. 关于hibernate插入数据时的乱码问题
  8. mybatis官方文档知识点梳理
  9. Windows Phone 7一周年生日
  10. Android重力感应实现方式简介