有个需求就是利用Matplotlib画几个像模像样的统计图然后合并在一张图中,因为此前很少用这方面的东西,所以折腾了不少时间,今天介绍一下。

1、subplot多合一

其实,利用python 的matplotlib包下的subplot函数可以将多个子图放在同一个画板上。在此之前,我们先来看一个案例:

import  matplotlib.pyplot as plt
import numpy as np plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号t=np.arange(0.0,2.0,0.1)
s=np.sin(t*np.pi)plt.figure(figsize=(8,8), dpi=80)
plt.figure(1)
ax1 = plt.subplot(221)
ax1.plot(t,s, color="r",linestyle = "--")
ax2 = plt.subplot(222)
ax2.plot(t,s,color="y",linestyle = "-")
ax3 = plt.subplot(223)
ax3.plot(t,s,color="g",linestyle = "-.")
ax4 = plt.subplot(224)
ax4.plot(t,s,color="b",linestyle = ":")

效果如下:


可以看到,一个画板上放了4个子图。达到了我们想要的效果。好了我们现在来解析一下刚刚的部分代码:

plt.figure(1):表示取第一块画板,通俗地讲,一个画板就是一张图,如果你有多个画板,那么最后就会弹出多张图。

plt.subplot(221):221表示将画板划分为2行2列,然后取第1个区域。那么第几个区域是怎么界定的呢?这个规则遵循行优先数数规则!比如说4个区域:


优先从行开始数,从左到右按顺序1234……然后再下一行。那么下面这几行代码大家都懂了吧:

ax1 = plt.subplot(221)
ax1.plot(t,s, color="r",linestyle = "--")
ax2 = plt.subplot(222)
ax2.plot(t,s,color="y",linestyle = "-")
ax3 = plt.subplot(223)
ax3.plot(t,s,color="g",linestyle = "-.")
ax4 = plt.subplot(224)
ax4.plot(t,s,color="b",linestyle = ":")

一共划分了2X2=4个区域,然后1234分别开始绘图。so easy!比如我们想达到下面的效果:

那么只需要:

import  matplotlib.pyplot as plt
import numpy as np plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号t=np.arange(0.0,2.0,0.1)
s=np.sin(t*np.pi)plt.figure(figsize=(8,8), dpi=80)
plt.figure(1)
ax1 = plt.subplot(221)
plt.plot([1,2,3,4],[4,5,7,8], color="r",linestyle = "--")
ax2 = plt.subplot(222)
plt.plot([1,2,3,5],[2,3,5,7],color="y",linestyle = "-")
ax3 = plt.subplot(212)
plt.plot([1,2,3,4],[11,22,33,44],color="g",linestyle = "-.")

子图1和子图2与上面的一样,主要是子图3,plt.subplot(212)表示将整个画板分成两部分后取第2块,即下面的部分。

2、subplot2grid分格显示

这种方式和上一种实现的效果一样,只不过更加容易理解罢了,先来看一个案例代码:

import  matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号#method1: subplot2grid
###########################
plt.figure(figsize=(12, 10), dpi=80)
ax1=plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)#相当于格子分成3行3列,列跨度为3,行跨度为1
ax1.plot([1,2],[1,2]) #轴的范围,x轴,y轴。
ax1.set_title('ax1_title')
ax2=plt.subplot2grid((3,3),(1,0),colspan=2,rowspan=1)
ax2.plot([2,4,6],[7,9,15])
ax3=plt.subplot2grid((3,3),(1,2),colspan=1,rowspan=1)
x = np.arange(4)
y = np.array([15,20,18,25])
ax3.bar(x,y)
ax4=plt.subplot2grid((3,3),(2,0),colspan=1,rowspan=1)
ax5=plt.subplot2grid((3,3),(2,1),colspan=2,rowspan=1)

效果如下:

结合图可能更好理解一点,其中代码:

plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)

第一个参数(3,3)相当于格子分成3行3列,第二个参数(0,0)表示该子图的开始位置,colspan=3表示子图的列跨度为3,rowspan=1表示子图的行跨度为1。

好了,以上就是Matplotlib绘制多图的内容,是不是很简单呢!喜欢的小伙伴可以收藏一下,万一哪天就用得上了呢。

Python中利用Matplotlib绘制多图并合并展示相关推荐

  1. 10分钟教你用Python中的Matplotlib绘制多图并合并展示

    前言 大家好,最近在研究在搞Python的大作业,有个需求就是利用Matplotlib画几个像模像样的统计图然后合并在一张图中,因为此前很少用这方面的东西,所以折腾了不少时间,今天介绍一下. subp ...

  2. 【适合Python语言小白的股价图】利用Python中的matplotlib绘制股价图(非k线图)

    [适合Python语言小白的股价图]利用Python中的matplotlib绘制股价图(非k线图) 代码小白,最近做一家公司的股价复盘用到了matplotlib,在此做个小小的记录.代码的逻辑比较笨, ...

  3. Python中使用matplotlib绘制雷达图

    示例代码: # encoding: utf-8 import pandas as pd import numpy as np import matplotlib.pyplot as pltplt.rc ...

  4. python绘制折线图保存_Python利用matplotlib绘制折线图的新手教程

    前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip i ...

  5. python绘制三维曲面图-Python中使用Matplotlib绘制3D图形示例

    原标题:Python中使用Matplotlib绘制3D图形示例 3D图形能给我们对数据带来更加深入地理解.python的matplotlib库就包含了丰富的3D绘图工具.3D图形在数据分析.数据建模. ...

  6. 霍兰德人格分析:利用Python第三方库matplotlib绘制雷达图

    美国约翰霍普金斯大学霍兰德教授认为,个人职业兴趣特性与职业之间应有一种内在的对应关系.根据兴趣的不同,人格可分为研究型(I).艺术型(A).社会型(S).企业型(E).传统型(C).现实型(R)六个维 ...

  7. python教程-数据分析-matplotlib绘制折线图2 +总结(搭建网格,加上图例,修改图片的颜色和线条,脑图总结)

    上一篇博客我们展示到了如何将matplotlib里面的中文正确输出 链接上一篇:python教程-数据分析-matplotlib绘制折线图1 matplotlib 今天这一篇我们继续学习matplot ...

  8. Python数据可视化——matplotlib绘制的图里面不能正常显示中文,提示警告的解决方法

    运行下列代码: import matplotlib.pyplot as pltedu = [0.2515,0.3724,0.3336,0.0368,0.0057] labels = ['中专','大专 ...

  9. [转载] 在Python中使用Matplotlib绘制常见图表

    参考链接: Python | 使用openpyxl模块在Excel工作表中绘制图表 3 Matplotlib 是一个非常强大的 Python 画图工具,通过绘制线图.散点图.等高线图.条形图.柱状图. ...

最新文章

  1. 2016-8-9更新日志
  2. 使用Async对Angular异步代码进行单元测试
  3. JavaScript从入门到放弃 - (一)构造函数和原型
  4. php分页类示例下载,PHP 通用分页类的简单示例
  5. win10新版本被移除的旧特性
  6. 搜索引擎蜘蛛及网站robots.txt文件详解[转载]
  7. 杭电1181--变形课(Dfs)
  8. 南京邮电大学网络信息安全——软件漏洞分析与防范(实验一——栈溢出和gs保护机制)
  9. 结对-人机对战象棋游戏-结对项目总结
  10. org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates
  11. 跨域单点登录解决方案
  12. 玩转树莓派之ZigBee网关
  13. Cannot run program jad
  14. 跨专业保研浙大计算机,保研经验:排名第一,论文两篇,七项专利,两个国家级大创,夏令营斩获多个offer,成功上岸985!...
  15. Python解决:当文件夹存在时清空文件夹,文件夹不存在时新建文件夹
  16. 以梦为马,越骑越傻。诗和远方,越走越慌
  17. kinhdown引擎(lua)
  18. OpenLayers实现小车的轨迹查询的功能
  19. 精心挑选10款基于 jQuery 的图片360度旋转插件
  20. C++结构体中定义虚拟函数

热门文章

  1. 黄金票据(Golden Ticket)的原理与实践
  2. linux函数的阻塞与非阻塞IO及错误处理
  3. jetty 通过配置文件嵌入式启动web服务
  4. 提示JS错误:WebForm_PostBackOptions 未定义
  5. [小才能]防备误删文件
  6. ASP.NET自带的散列加密口令【转】
  7. 设计一个简单的缓存容器
  8. java 在线答疑系统_基于java 在线答疑系统-需求分析与概念原型
  9. Java黑皮书课后题第5章:5.5(千克与磅之间的互换)编写一个程序,并排显示下面两个表格
  10. 操作系统lab2实验总结——Part1