我正以Python作为突破口,入门机器学习相关知识。出于机器学习实践过程中的需要,快速了解了一下matplotlib绘图库。下图是我学习过程中整理的一些概念。

本文将以该图为线索梳理相关概念。

简介

matplotlib是一个2D绘图库,通过它你可以绘制函数曲线、直方图、散点图等各种图像。

Python中使用matplotlib主要用到matplotlib.artist.Artist模块。这个模块定义了很多绘图时用到的类型。

Artists类型可分为两种:基础数据(primitives)代表了标准的我们想绘制的图形对象,比如Line2D、Rectangle、Text、Image等;容器(container)代表了储存以上对象的地方,比如Axis,Axes和Figure。

使用流程

matplotlib标准的使用流程如下:

  1. 创建一个画板(Figure)实例。
  2. 使用画板创建一个或多个轴区实例(Axes)。
  3. 使用轴区实例的相关方法,进行绘图。

例如下面代码:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-10, 10, 0.01)
y = x*x - 5*x + 1
fig = plt.figure() // 创建画板
ax = fig.add_subplot(111) // 创建轴区
ax.plot(x, y, 'r--') // 绘图
plt.show()

效果如下图:

上面例子中我们用了matplotlib.pyplot模块,来创建和展示画板。实际上为了让matplotlib使用起来更靠近类似MATLAB基于命令的形式,这个模块把许多Artist类型的方法进行了封装,组成所谓的The Pyplot API,参考文档。这套API可以让你直接使用pyplot模块进行绘图,而不是使用Artist实例。

下面例子使用The Pyplot API实现了同样的效果:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-10, 10, 0.01)
y = x*x - 5*x + 1
plt.plot(x, y, 'r--')
plt.show()

需要注意:这里直接使用plt.plot函数进行绘图,看起来好像并没有创建Figure和Axes对象。其实不是的,pyplot模块默认创建ID为1的画板,并且在画板中默认创建‘111’轴区实例。所以你就可直接进行绘图。

绘图过程是基于当前上下文进行的。也就是说当前选中的是哪一个画板和哪一个轴区,后续调用的绘图函数就是在这个画板和轴区中进行的。你可以通过给plt.figure()指定ID来创建或切换画板。可以通过plt.subplot()figure.add_subplot()来创建或切换轴区。

解释一下使用plt.subplot()figure.add_subplot()创建Axes时所使用的三位整数组成的参数。假设用xyz代表这三个个位数,则x表示行,y表示列,z为这个x行y列组成的格子中按书写顺序从1开始数下来的第z个。如果超过个位数,传递参数的时候分为独立的三个值进行传递。例如:plt.subplot(10,2,5)

其他

了解这些足够我在机器学习实践中使用了。

在实际应用中可能根据需求的不同选择使用不同的方法绘制图像,如:

  • plot:绘制曲线
  • scatter:绘制散点图
  • hist:绘制直方图
  • imshow:绘制图片
  • ...

作为扩展,可能还需要了解其他的matplotlib模块:

  • mpl_toolkits.mplot3d:3D绘图的扩展工具。
  • matplotlib.cm:定义颜色映射与相关处理函数。
  • matplotlib.mlab:Python数值函数模块,用于兼容MATLAB命令。
  • matplotlib.path:处理折线。
  • matplotlib.patches:用于生成图形元素。
  • ...

本文同步博客

Matplotlib快速入门笔记的更多相关文章

  1. C#快速入门笔记(1)——基础语法

    C#快速入门笔记(1)——基础语法 总体框架:

  2. keras搭建神经网络快速入门笔记

    之前学习了tensorflow2.0的小伙伴可能会遇到一些问题,就是在读论文中的代码和一些实战项目往往使用keras+tensorflow1.0搭建, 所以本次和大家一起分享keras如何搭建神经网络 ...

  3. C++ 快速入门笔记:进阶编程

    C++入门笔记:高级编程 文件和流 打开文件 void open (const char *filename, ios::openmode mode); ios::app 追加模式.所有写入都追加到文 ...

  4. Pandas快速入门笔记

    我正以Python作为突破口,入门机器学习相关知识.出于机器学习实践过程中的需要,我快速了解了一下提供了类似关系型或标签型数据结构的Pandas的使用方法.下面记录相关学习笔记. 数据结构 Panda ...

  5. NumPy快速入门笔记

    我正以Python作为突破口,入门机器学习相关知识.出于机器学习实践过程中的需要,我快速了解了一下NumPy这个科学计算库的使用方法.下面记录相关学习笔记. 简介 NumPy是一个科学计算库.结合Py ...

  6. Spring Boot 快速入门笔记

    Spirng boot笔记 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发 ...

  7. bootstrap快速入门笔记(八)-按钮,响应式图片

    一,默认样式:.btn-default , .btn-primary , .btn-success  ,.btn-info, btn-warning ,btn-link 二,尺寸:.btn-lg, . ...

  8. bootstrap快速入门笔记(四)-less用法指南, mixin和变量

    一,less变量,less文件 1.bootstrap.less 这是主要的 Less 文件.该文件中导入了一些其他的 less 文件.该文件中没有任何代码. 2.forms.less 这个 Less ...

  9. 阿里云RDS for MySQL 快速入门——笔记

    1初始化配置 1.1设置白名单 创建RDS实例后,需要设置RDS实例的白名单,以允许外部设备访问该RDS实例.默认的白名单只包含默认IP地址127.0.0.1,表示任何设备均无法访问该RDS实例. 设 ...

随机推荐

  1. Gym 100952G&&2015 HIAST Collegiate Programming Contest G. The jar of divisors【简单博弈】

    G. The jar of divisors time limit per test:2 seconds memory limit per test:64 megabytes input:standa ...

  2. UVALive3882-And Then There Was One-约瑟夫问题-递推

    And Then There Was One Time limit: 3.000 seconds Let's play a stone removing game. Initially, n ston ...

  3. HDU2824-The Euler function-筛选法求欧拉函数+求和

    欧拉函数: φ(n)=n*(1-1/p1)(1-1/p2)....(1-1/pk),其中p1.p2-pk为n的所有素因子.比如:φ(12)=12*(1-1/2)(1-1/3)=4.可以用类似求素数的筛 ...

  4. 将电脑文件复制到vm虚拟机中,然后安装步骤

    [root@lixiaohu 桌面]# cp openssl-1.0.1f.tar.gz /usr/src     /usr/src  这是复制到的路径[root@lixiaohu 桌面]# cd / ...

  5. java 三大框架

    SSH即:Spring.Struts.HibernateSpring:功能强大的组件粘合济,能够将你的所有的java功能模块用配置文件的方式组合起来(还让你感觉不到spring的存在)成为一个完成的应 ...

  6. [知了堂学习笔记]_css3特效第二篇--行走的线条&&置顶导航栏

    一.行走的线条. 效果图(加载可能会慢一点儿,请稍等...): html代码: <div class="movingLines"> <img src=" ...

  7. Hyperledger Fabric Transaction Flow——事务处理流程

    Transaction Flow 本文概述了在标准资产交换过程中发生的事务机制.这个场景包括两个客户,A和B,他们在购买和销售萝卜(产品).他们每个人在网络上都有一个peer,通过这个网络,他们发送自 ...

  8. 2017-07-10(lastlog rpm yum)

    lastlog 查看所有用户最后一次登录的时间 rpm www.rpmfind.net   用来确认函数库需要安装哪个依赖程序的的网站 rpm -ivh  包全名 (安装) rpm -Uvh 包全名( ...

  9. Hystrix-异常处理

    异常的传播和捕获 传播:在HystrixCommand实现的run()方法中跑出异常时,除了HystrixBadRequestException之外,其他异常均会被Hystrix认为命令执行失败并处罚 ...

  10. phpstorm修改创建文件时的默认注释

    之前也修改过,过了一段时间又忘了,记个笔记.下次好找 工具版本 工具设置里,File>>Settings...如下