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

本文将以该图为线索梳理相关概念。
简介
matplotlib是一个2D绘图库,通过它你可以绘制函数曲线、直方图、散点图等各种图像。
在Python中使用matplotlib主要用到matplotlib.artist.Artist模块。这个模块定义了很多绘图时用到的类型。

Artists类型可分为两种:基础数据(primitives)代表了标准的我们想绘制的图形对象,比如Line2D、Rectangle、Text、Image等;容器(container)代表了储存以上对象的地方,比如Axis,Axes和Figure。
使用流程
matplotlib标准的使用流程如下:
- 创建一个画板(Figure)实例。
- 使用画板创建一个或多个轴区实例(Axes)。
- 使用轴区实例的相关方法,进行绘图。
例如下面代码:
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快速入门笔记的更多相关文章
- C#快速入门笔记(1)——基础语法
C#快速入门笔记(1)——基础语法 总体框架:
- keras搭建神经网络快速入门笔记
之前学习了tensorflow2.0的小伙伴可能会遇到一些问题,就是在读论文中的代码和一些实战项目往往使用keras+tensorflow1.0搭建, 所以本次和大家一起分享keras如何搭建神经网络 ...
- C++ 快速入门笔记:进阶编程
C++入门笔记:高级编程 文件和流 打开文件 void open (const char *filename, ios::openmode mode); ios::app 追加模式.所有写入都追加到文 ...
- Pandas快速入门笔记
我正以Python作为突破口,入门机器学习相关知识.出于机器学习实践过程中的需要,我快速了解了一下提供了类似关系型或标签型数据结构的Pandas的使用方法.下面记录相关学习笔记. 数据结构 Panda ...
- NumPy快速入门笔记
我正以Python作为突破口,入门机器学习相关知识.出于机器学习实践过程中的需要,我快速了解了一下NumPy这个科学计算库的使用方法.下面记录相关学习笔记. 简介 NumPy是一个科学计算库.结合Py ...
- Spring Boot 快速入门笔记
Spirng boot笔记 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发 ...
- bootstrap快速入门笔记(八)-按钮,响应式图片
一,默认样式:.btn-default , .btn-primary , .btn-success ,.btn-info, btn-warning ,btn-link 二,尺寸:.btn-lg, . ...
- bootstrap快速入门笔记(四)-less用法指南, mixin和变量
一,less变量,less文件 1.bootstrap.less 这是主要的 Less 文件.该文件中导入了一些其他的 less 文件.该文件中没有任何代码. 2.forms.less 这个 Less ...
- 阿里云RDS for MySQL 快速入门——笔记
1初始化配置 1.1设置白名单 创建RDS实例后,需要设置RDS实例的白名单,以允许外部设备访问该RDS实例.默认的白名单只包含默认IP地址127.0.0.1,表示任何设备均无法访问该RDS实例. 设 ...
随机推荐
- bzoj:1687;poj 2434:[Usaco2005 Open]Navigating the City 城市交通
Description A dip in the milk market has forced the cows to move to the city. The only employment av ...
- JAVA经典算法面试40题及答案
现在是3月份,也是每年开年企业公司招聘的高峰期,同时有许多的朋友也出来找工作.现在的招聘他们有时会给你出一套面试题或者智力测试题,也有的直接让你上机操作,写一段程序.算法的计算不乏出现,基于这个原因我 ...
- 打造自己的 JavaScript 武器库(转自SegmentFault公众号)
2017-11-14 SlaneYang SegmentFault 自己打造一把趁手的武器,高效率完成前端业务代码. 前言 作为战斗在业务一线的前端,要想少加班,就要想办法提高工作效率.这里提一个小点 ...
- 【C#附源码】数据库文档生成工具支持(Excel+Htm)
数据库文档生成工具是用C#开发的基于NPOI组件的小工具.软件源码大小不到10MB.支持生成Excel 和Html 两种文档形式.了解更多,请访问:http://www.oschina.net/cod ...
- 【老司机经验】CC2530&STM8S105二合一嵌入式学习板设计思路与经验分享
CC2530&STM8S105二合一嵌入式学习板设计思路与经验分享 1.缘起 这些年来一直在其他公司的实验箱和别人的开发板上进行教学与开发工作,总是觉得功能设计不那么合意.心里突然冒出个 ...
- 整理关于web项目如何防止CSRF和XSS攻击的方法
1 了解CSRF的定义 CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Session Riding, ...
- YUM常用命令介绍
http://www.cnblogs.com/lostyue/archive/2012/05/06/2485653.html 1.列出所有可更新的软件清单 命令:yum check-update 2. ...
- mysql索引使用注意事项
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
- Appium移动自动化测试之—基于java的iOS环境搭建
本文仅供参考,同时感谢帮助我搭建环境的同事 操作系统的名称:Mac OS X操作系统的版本:10.12.6 接下来我们开始踏上搭建Appium+java+ios之路,本文只说个大概,毕竟本机已经装过了 ...
- JavaScript return 最简单解释
一.return 返回值 1)函数名字 +括号 :fun() ==> retrun 后面的值 2)所以函数的模范返回值是为未定义 3)return; 后面的任何代码都不会执行了 二.arguem ...