资讯专栏INFORMATION COLUMN

详解Python中matplotlib模块的绘图方式

89542767 / 552人阅读

  matplotlib作为常见的可视化绘图工具,在工作当中,应用还是比较的广泛的,那么,我们要怎么使用python这门语言去进行绘图呢?下面就给大家详细解答下。


  1、matplotlib之父简介


  matplotlib之父John D.Hunter已经去世,他的一生辉煌而短暂,但是他开发的的该开源库还在继续着辉煌。国内介绍的资料太少了,查阅了一番整理如下:


  1968出身于美国的田纳西州代尔斯堡。


  之后求学于普林斯顿大学。


  2003年发布Matplotlib 0.1版,初衷是博士研究期间为可视化癫痫患者的脑电图(ECoG)数据;


  之后,美国国家航空航天局(NASA)太空望远镜科学研究所的哈勃望远镜背后团队(Hubble Space Telescope),选择Matplotlib作为了画图程序包,并一直为Matplotlib开发团队提供资金支持,从而大大促进了Matplotlib的发展。


  2004年于芝加哥大学获得神经生物学方向博士学位。


  2005年供职于芝加哥的一家投资公司,从事量化分析(真是生物人遍布各行各业)。


  之后以董事的身份创立了专为数据科学赞助的非盈利组织NumFOCUS Foundation。


  2007年美国凤凰号探测器(Phoenix spacecraft)登录火星,NASA使用Matplotlib可视化了第一张黑洞的图片。


  2012年因John D.Hunter个人对Python和数据科学方向的杰出贡献,被Python社区授予第一届PSF Distinguished Service Awards奖项。


  2012.08因患恶性结肠癌英年早逝,享年44岁。


  虽然Matplotlib之父已经去世,但是,大量开源爱好者在fork着这个可视化包,延续着辉煌https://github.com/matplotlib。


  NumFOCUS组织每年夏天会赞助1到2个学生,在高级贡献者的带领下,为Matplolib全职工作10周左右(2018年奖金多达$6,000):https://numfocus.org/programs/john-hunter-technology-fellowship。


  2013年起,SciPy每年举行可视化比赛:John Hunter Excellence in Plotting Competition,一是为了为了纪念John Hunter的贡献,二是为了强调数据可视化对科学进步的重要性,并展示开源软件力量。;2020年报名截止日期为06月01号,奖金优渥(1st prize:$1000;2nd prize:$750;3rd prize:$500):https://jhepc.github.io/index.html。


  2、matplotlib图形结构


  figure层


  指整张图,可设置整张图的分辨率(dpi),长宽(figsize)、标题(title)等特征;


  可包含多个axes,可简单理解为多个子图(下图为两个axes);


  figure置于canvas系统层之上,用户不可见。

01.png

  axes层


  每个子图,可以绘制各种图形,例如柱状图(bar),饼图(pie函数),箱图(boxplot)等;


  设置每个图的外观网格线(grid)的开关、坐标轴(axis)开关等;


  设置每个坐标轴(axis)的名字(label)、子图标题(title)、图例(legend)等;


  设置坐标轴范围(scale)、坐标轴刻度(tricks)等;


  下图中具有两个axes:

02.png

  一张matplotlib图的组成

03.png

  下面这张matplotlib图包含一张图的常见元素,例如标题、坐标轴、轴标签、刻度、文本注释、图例等。


  3、matplotlib两种画绘图方法


  方法一:使用matplotlib.pyplot


  matplotlib.pyplot简介


  这种绘图主要使用pyplot模块,pyplot.py代码量有3000多行(windows下存储于xxxsite-packagesmatplotlibpyplot.py),该脚本里面有大量def定义的函数,绘图时就是调用pyplot.py中的函数。


  pyplot方法绘图举例


  #matplotlib.pyplot接口
  import numpy as np
  import matplotlib.pyplot as plt#导入pyplot,matplotlib.pyplot简写为plt
  def f(t):
  return np.exp(-t)*np.cos(2*np.pi*t)
  t1=np.arange(0.0,5.0,0.1)
  t2=np.arange(0.0,5.0,0.02)
  plt.figure(dpi=100)
  plt.subplot(211)
  plt.plot(t1,f(t1),color='tab:blue',marker='o')
  plt.plot(t2,f(t2),color='black')
  plt.title('demo')
  plt.subplot(212)
  plt.plot(t2,np.cos(2*np.pi*t2),color='tab:orange',linestyle='--')
  plt.suptitle('matplotlib.pyplot api')
  plt.show()

  

04.png

      方法二:面向对象方法


  画比较复杂的图形时,面向对象方法会更方便。这种绘图方式主要使用matplotlib的两个子类:matplotlib.figure.Figure和matplotlib.axes.Axes,画每张图时,画布为matplotlib.figure.Figure的一个实例,每个子图为matplotlib.axes.Axes的一个实例,分别可以继承父类的所有方法,也就是说你绘图时,你想设置的元素(网格线啊,坐标刻度啊等)都可以在二者的属性中找出来使用。


  matplotlib.figure.Figure


  该对象主要用于figure的调整


  matplotlib.axes.Axes


  面向对象方法绘图举例


  import numpy as np
  import matplotlib.pyplot as plt
  def f(t):
  return np.exp(-t)*np.cos(2*np.pi*t)
  t1=np.arange(0.0,5.0,0.1)
  t2=np.arange(0.0,5.0,0.02)
  fig,axs=plt.subplots(2,dpi=100)
  #fig为matplotlib.figure.Figure对象的实例figure
  #axs为matplotlib.axes.Axes对象实例(每个子图)组成的numpy.ndarray
  axs[0].plot(t1,f(t1),color='tab:blue',marker='o')
  axs[0].plot(t2,f(t2),color='black')
  #两种设置标题的方法
  #axs[0].set_title('haha')#使用matplotlib.axes.Axes的set_title方法设置小标题
  axs[0].set(title='demo1')
  axs[1].plot(t2,np.cos(2*np.pi*t2),color='tab:orange',linestyle='--')
  fig.suptitle('matplotlib object-oriented')#使用matplotlib.figure.Figure中的suptitle方法设置Figure标题
  plt.show()

05.png

  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128333.html

相关文章

  • PyCharm调用matplotlib绘图时图像弹出问题详解

      小编写这篇文章的主要目的,主要是来给大家解答关于Python Pycharm的一些相关问题,包括涉及到如何调用其maplotlib的相关绘图问题,另外还涉及到图像弹出问题等的一些相关介绍。那么,具体问题怎么解答呢?下面就给大家详细解答下。  问题描述  在PyCharm中调用matplotlib绘制图像时,默认图像会在控制台输出(如图),当绘制图像较多时,控制台输出方式很不直观。  问题解决 ...

    89542767 评论0 收藏0
  • Python--matplotlib绘图可视化知识点整理

    摘要:本文作为学习过程中对一些常用知识点的整理,方便查找。所有绘图操作仅对当前图和当前坐标有效。表示把图标分割成的网格。每个对象都是一个拥有自己坐标系统的绘图区域。避免比例压缩为椭圆数据可视化入门教程绘图核心剖析如何调整子图的大小 本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找。 强烈推荐ipython无论你工作在什么项目上,IPython都是值得推荐的。利用ipyt...

    nifhlheimr 评论0 收藏0
  • 快速入门 Matplotlib 绘图

    摘要:概述是使用开发的一个绘图库,是界进行数据可视化的首选库。可以通过图形示例来快速浏览所有支持的图形。最后,调用把绘制好的图形显示出来。对应于三个参数,表示行,表示列,表示位置。因此,表示在图表中总共有个图形,当前新增的图形添加到位置。 showImg(https://segmentfault.com/img/bV6EPD?w=542&h=130); 概述 Matplotlib 是使用 P...

    Hujiawei 评论0 收藏0
  • 【数据科学系统学习】Python # 数据分析基本操作[三] matplotlib

    摘要:有一些表示常见图形的对象称为块,完整的集合位于。中的绘图函数在中,有行标签列标签分组信息。密度图通过计算可能会产生观测数据的连续概率分布的估计而产生的。在探索式数据分析工作中,同时观察一组变量的散布图是很有意义的。 我们在上一篇介绍了 pandas,本篇介绍 matplotlib。 绘图和可视化 一个用于创建出版质量图表的桌面绘图包。 Matplotlib API入门 Figure ...

    BDEEFE 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<