1 问题描述


matploglib 能够绘制出精美的图表, 有些时候, 我们希望把一组图放在一起进行比较, 有没有什么好的方法呢?

matplotlib 中提供的 subplot 可以很好的解决这个问题

2 subplot函数介绍


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

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

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

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

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

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

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

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

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

3 示例程序


3.1 规则划分成3*3的


#!/usr/bin/env python
#!encoding=utf-8 import matplotlib
import matplotlib.pyplot as plt if __name__ == '__main__':
for i,color in enumerate("rgby"):
plt.subplot(221+i, axisbg=color) plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.2 不规则划分


但是有时候我们的划分并不是规则的, 比如如下的形式

这种应该怎么划分呢?

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

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

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

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

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

代码如下, 参照matplotlib绘制多个子图——subplot

#!/usr/bin/env python
#!encoding=utf-8 import matplotlib.pyplot as plt
import numpy as np def 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()

python使用matplotlib:subplot绘制多个子图的更多相关文章

  1. python使用matplotlib:subplot绘制多个子图 不规则画图

    https://www.cnblogs.com/xiaoboge/p/9683056.html

  2. Python数据分析-Matplotlib图标绘制

    Matplotlib介绍 Matplotlib是一个强大的Python绘图和数据可视化的工具包. Matplotlib的主要功能 Matplotlib是python中的一个包,主要用于绘制2D图形(当 ...

  3. Python使用matplotlib模块绘制多条折线图、散点图

    用matplotlib模块 #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:折线图.散点图测试 ''' import rando ...

  4. python的matplotlib.pyplot绘制甘特图

    博主本来就想简单地找一下代码,画一幅甘特图,结果百度之后发现甘特图的代码基本都不是用matplotlib库,但是像柱状图等统计图通常都是用这个库进行绘制的,所以博主就花了一些时间,自己敲了一份代码,简 ...

  5. python中matplotlib所绘制的图包含了很多的对象

    上图中的top=‘off’意思是说顶部的grid lines 看不见. 去除frame,意思就是将这个矩形给去除掉,spine意思是脊柱 bars = plt.bar(pos, popularity, ...

  6. python使用matplotlib绘制折线图教程

    Matplotlib是一个Python工具箱,用于科学计算的数据可视化.借助它,Python可以绘制如Matlab和Octave多种多样的数据图形.下面这篇文章主要介绍了python使用matplot ...

  7. python使用matplotlib在一个图形中绘制多个子图以及一个子图中绘制多条动态折线问题

    在讲解绘制多个子图之前先简单了解一下使用matplotlib绘制一个图,导入绘图所需库matplotlib并创建一个等间隔的列表x,将[0,2*pi]等分为50等份,绘制函数sin(x).当没有给定x ...

  8. Python的工具包[2] -> matplotlib图像绘制 -> matplotlib 库及使用总结

    matplotlib图像绘制 / matplotlib image description  目录 关于matplotlib matplotlib库 补充内容 Figure和AxesSubplot的生 ...

  9. 用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码)

    在用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)一文里,我讲述了通过爬虫接口得到股票数据并绘制出K线均线图形的方式,在本文里,将 ...

随机推荐

  1. crontab中反引号和$()无效的解决

    问题描述 1.增加了一条crontab,删除本月中2天以前的日志 10 02  * * * /bin/find /data/logs/php/$(date  +%Y%m)/ -mtime +2 | x ...

  2. spring基于xml的IOC环境搭建和入门

    配置pom.xml的依赖 <packaging>jar</packaging> <dependencies> <dependency> <grou ...

  3. logger----->模块级别的函数

    #_author:star#date:2019/11/6#logger----->模块级别的函数#文件与屏幕同时显示日志信息import logginglogger=logging.getLog ...

  4. 完全卸载之前8.0的Mysql,安装5.5mysql

    完全卸载: https://blog.csdn.net/sxingming/article/details/52601250 安装mysql5.5: https://blog.csdn.net/fly ...

  5. 数论GCD——cf1055C

    被一道数论题卡了半天 网上的题解说只要匹配l或者r就行,想了下还真是.. 能让r1和r2对其就让他们对其,不能对其就讨论一下两种情况就可以了 #include <bits/stdc++.h> ...

  6. Ubuntu GitHub操作——使用仓库

    若你想更新github代码 在正式更新github仓库时,可以先 git status 查看一下分支master的状态 1.因为是更新代码,所以不用前面那么多步骤,直接添加所更新的文件到 分支mast ...

  7. MFC 使程序不在任务栏显示

    在OnInitDialog()中直接修改窗口风格: // 让本程序不在任务栏显示(创建一个工具条窗口) ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);

  8. React中的this.props.children

    React this.props.children this.props对象的属性与组件的属性一一对应,但是有一个例外,就是this.props.children属性.它表示组件的所有子节点. var ...

  9. opencv-VS2010配置opencv2.4.8

    详细教程可参考:http://blog.csdn.net/huang9012/article/details/21811129/ 原文在这里:[OpenCV入门教程之一] 安装OpenCV:OpenC ...

  10. Android基础控件EditText

    1.常用属性 <!--selectAllOnFocus 获得焦点后全选组件内所有文本内容--> <!--inputType 限制输入方式--> <!--singleLin ...