本篇内容介绍了“Python matplotlib底层原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1. matplotlib 框架组成
matplotlib
模块在众多数据可视化库中可以可以实现复杂的底层操作。像gglot
、seaborn
、plotnline
底层都是基于matplotlib
模块去封装不同风格的统计图表。
matplotlib
模块底层主要是由三部分组成脚本层、美工层和后端层。
脚本层:为用户提供可视化编程的接口
美工层:有大量绘制图表方法的接口
后端:连接硬件,处理图像元素的接口
PS:matplotlib框架说明
2. 脚本层(scripting)
脚本层属于matplotlib
模块中最上层,主要为用户提供可视化编程的接口,代表pyplot
模块。
对于普通用户,pyplot接口可以满足大多数文本的图像和坐标的生成,传给后端进行处理。
matplotlib.pyplot接口导入时,通常是import matplotlib.pyplot as plt
导入
pyplot
模块并重名为pltpyplot 模块加载时,会对本地的配置文件进行分析
同时会声明默认的后端,例如声明创建Figure对象
将脚本深拷贝给后端后退出
pyplot 模块提调用matplotlib的方法
供给用面向oo调用风格,显示创建图形和轴调用其方法
依靠
pyplot
自动创建和管理图形和轴,并使用pyplot函数进行绘图
用户只需调用pyplot模块相关的方法,就可以绘制漂亮的图表啦
from matplotlib import pyplotimport pandaspyplot.rcParams["font.sans-serif"]=['SimHei']pyplot.rcParams["axes.unicode_minus"]=Falsepyplot.bar([1,2,3,4,5,6],[45,20,19,56,35,69])pyplot.title("data analyze")pyplot.xlabel("元素 a")pyplot.ylabel("元素 b")pyplot.show()
3. 美工层(artist)
在美工层位于matplotlib
中间层,主要进行数据相关的绘制工作,绘制图表中的、直线、刻度等都是artist
对象的实例。
artist 层特点
脚本层创建的
Figure
对象是Artist对象实例Artist的基类是
matplotlib.artist.Artist
,共享所有Artist
属性包括从美工系统到画布坐标系统变化等提供处理用户交互动作的接口
matplotlib 图表对象
我们可以通过如下matplotlibe
图表中可以看到一张图表由多个对象组合而成的。
matplotlib 图表对象说明
对象 | 说明 |
---|---|
Figure | 图形,弹出框口即是figure |
axes | 子图 |
title | |
legend | 图例 |
Major tick | 大标尺刻度 |
Minor tick | 小标尺刻度 |
Line | 线型图 |
axis label | 坐标指标说明 |
Marker | 数据标准说明 |
Artist 对象说明
ArtIst 对象包含Figure
、Axes
、Axis
对象,是它们的基类,其Artist对象都全部位于后端提供的canvas画布上。
Figure
一个图表窗口即是一个figure对象
figure对象中至少要包含一个Axes对象子图
figure对象中可以包含title、label等Artist对象
figure对象中包含的不可见对象canvas。绘制图像时会进行调用
Axes
axes 是子图对象,子图对象指的是x和y轴.
axes 常用有set_xlabel()、set_ylabel()设置x和y轴坐标名字
Axis
axis 是代表数据轴的对象,主要用于表示刻度位置和显示数值
axis 包含用于控制刻度位置的Locator和显示刻度Formatter两个子对象
Artist对象层级结构图如下
4. 后端层(backend)
后端层主要是matplotlib
模块底层实现,主要实现了三方面的抽象接口 4.
FigureCanvas:对Artist对象绘制提供画布功能进行封装
matplotlib 模块底层是基于硬的用户画面,FigureCaves接口主要完成前期初始化工作
将自身嵌入到原生的QT视觉窗口(QtGui.QMainWindow)
将matplotlib的绘制命令
Render
转换到canvas上(QtGui.QPainter)将原生Qt事件转成
matplotlib
的Event接口,Event接口接收到信息后进行处理
Renderer: 相当于画笔,执行绘制动作
Render 主要提供硬件底层的绘图接口,能对Artist绘制命令进行执行。
Render 接口最初源于GDK的
Drawable
接口,后来转换成独立后端的原生绘图命令。matplotlib 是支持C++模块库基于像素点核心渲染器agg
可以进行2d反锯齿渲染、PNG图片生成
Event: 处理用户键盘和鼠标输入事件
Event 框架是将key-press-event或者mouse-motion-event等UI事件映射到键盘或者鼠标事件类中。
用户可以连接事件,使用函数进行回调
图形与数据交互
“Python matplotlib底层原理是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!