《Python数据分析实战》
matplotlib优点:
- 使用起来极其简单
- 以渐进、交互式方式实现数据可视化
- 表达式和文本使用LaTeX排版
- 对图像元素控制力更强
- 可输出PNG、PDF、SVG和EPS等多种格式
1.matplotlib架构
matplotlib的主要任务之一,就是提供一套表示和操作图形对象(主要对象)以及它的内部对象的函数和工具。
然而,matplotlib不仅可以处理图形,还提供事件处理工具,具有为图形添加动画效果的能力。有了这些附加功能,matplotlib就能够生成以键盘按键或鼠标移动的事件的交互式图表。
从逻辑上来讲,matplotlib的整体架构由位于三个不同层级的三层组成。各层之间单向通信,即每一层只能与它的下一层通信,而下层无法与上层通信。
matplotlib的架构分为以下三层:
- Scripting(脚本)层
- Artist(表现)层
- Backend(后端)层
Backend(后端)层:
最下面一层为Backend层。matplotlib API即位于该层,这些API是用来再底层实现图形元素的一个个类。
- FigureCanvas对象实现了绘图区域这一概念。
- Renderer对象再FigureCanvas上绘图。
- Event对象处理用户输入(键盘和鼠标事件)
Artists(表现)层:
中间层为Artist层。图形中所有能看到的元素都属于Artist对象,即标题、轴标签、刻度等组成图形的所有元素都是Artist对象的实例。图形中的每个元素的实例再层级结构中有着自己的位置。
图表的各元素分别对应一个Artist实例,所有实例形成层级结构。
Artist类分为两种:原始(primitive)和复合(composite)。
绘制Line2D或矩形、圆形等几何图形,甚至文本等图形时,形成图形表示的基础元素由primitive artist单个对象组成。
由多个基础元素—primitive artist—组成的图表中的图像元素叫作composite artist,例如Axis(单条轴)、Ticks(刻度)、Axes(轴)和Figure(图形)。
一般而言,在中国阶段(Artist),你通常需要处理Figure、Axes和Axis等位于高层级的对象。因此,透彻理解这些对象和它们在图形表示中所扮演的角色很重要。
Figure对象在Artist层的最上面,对应整个图形表示,通常可包含多条轴(Axes)。
Axes对象通常表示图形或图表是对什么内容进行作图的。每个Axes对象只属于一个Figure对象,由两个(三维就有三个)Artist Axis对象组成。标题、x标签和y标签等对象都属于Axes这个composite artist类型的对象。
Axis对象负责展示在Axes对象上面的数值,定义数值分为,管理刻度(轴上的标记)和刻度值标签(代表每个刻度大小的文本标签)。刻度的位置用Locator对象调整,刻度标签的格式用Formatter对象调整。
Scripting(脚本)层:
Artist类和相关函数(matplotlib API)非常适合开发人员,尤其时Web应用服务器或GUI开发者使用。但是对于计算,尤其是数据分析和可视化,Scripting层最适合。该层包含pyplot接口。
pylab和pyplot:
pylab在同一命名空间整合了pyplot和Numpy的功能,因此无需再单独导入Numpy。更进一步来说,导入pylab后,pyplot和Numpy的函数就可以直接调用,而不用再指定其所属模块(命名空间),从而使得matplotlib开发环境更像是Matlab。
#1.pylab
from pylab import *
plot(x,y)
array([1,2,3,4])
#2.pyplot
import matplotlib.pyplot as plt
import numpy as np
plt.plot()
np.array([1,2,3,4])
2.pyplot
pyplot具有状态性特征,它能跟踪当前图形和绘图区域得状态。调用函数时,函数只对当前图形起作用。
生成