时间:2022-11-12 10:12:01 | 栏目:Python代码 | 点击:次

复习回顾:
前期,我们已经学习了matplotlib模块相关的基础知识,对 matplotlib 模块折线图、饼图、柱状图进行操作。
我们都知道matplotlib 是偏向底层用于可视化数据处理的库,我们在绘制图表的时候主要步骤主要有四大步骤:
matplotlib.pplot库pandas/numpy模块对数据进行整分析理pyplot中绘制方法绘制折线图、饼图等pyplot.show展示出来在matplotlib官网上,可以看到丰富多样的图表教程

以上是我们上一期学习的内容,对于matplotlib模块来说它的底层是怎么工作的?
俗话说,学习要做到知其然,也要知其所以然,这样才能更好使用matplotlib模块相关方法。
matplotlib 模块在众多数据可视化库中可以可以实现复杂的底层操作。像gglot、seaborn、plotnline 底层都是基于matplotlib 模块去封装不同风格的统计图表。
matplotlib 模块底层主要是由三部分组成脚本层、美工层和后端层。

脚本层属于matplotlib模块中最上层,主要为用户提供可视化编程的接口,代表pyplot模块。
对于普通用户,pyplot接口可以满足大多数文本的图像和坐标的生成,传给后端进行处理。
matplotlib.pyplot接口导入时,通常是import matplotlib.pyplot as plt
pyplot 模块并重名为pltpyplot 模块提调用matplotlib的方法
pyplot 自动创建和管理图形和轴,并使用pyplot函数进行绘图用户只需调用pyplot模块相关的方法,就可以绘制漂亮的图表啦
from matplotlib import pyplot
import pandas
pyplot.rcParams["font.sans-serif"]=['SimHei']
pyplot.rcParams["axes.unicode_minus"]=False
pyplot.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()

在美工层位于matplotlib中间层,主要进行数据相关的绘制工作,绘制图表中的标题、直线、刻度等都是artist对象的实例。
artist 层特点
Figure对象是Artist对象实例matplotlib.artist.Artist,共享所有Artist属性包括从美工系统到画布坐标系统变化等matplotlib 图表对象
我们可以通过如下matplotlibe图表中可以看到一张图表由多个对象组合而成的。

matplotlib 图表对象说明
| 对象 | 说明 |
|---|---|
| Figure | 图形,弹出框口即是figure |
| axes | 子图 |
| title | 标题 |
| legend | 图例 |
| Major tick | 大标尺刻度 |
| Minor tick | 小标尺刻度 |
| Line | 线型图 |
| axis label | 坐标指标说明 |
| Marker | 数据标准说明 |
ArtIst 对象包含Figure、Axes、Axis对象,是它们的基类,其Artist对象都全部位于后端提供的canvas画布上。
Figure
Axes
Axis
Artist对象层级结构图如下

后端层主要是matplotlib 模块底层实现,主要实现了三方面的抽象接口 4.
FigureCanvas:对Artist对象绘制提供画布功能进行封装
matplotlib 模块底层是基于硬的用户画面,FigureCaves接口主要完成前期初始化工作
Render转换到canvas上(QtGui.QPainter)matplotlib的Event接口,Event接口接收到信息后进行处理Renderer: 相当于画笔,执行绘制动作
Render 主要提供硬件底层的绘图接口,能对Artist绘制命令进行执行。
Drawable接口,后来转换成独立后端的原生绘图命令。Event: 处理用户键盘和鼠标输入事件
Event 框架是将key-press-event或者mouse-motion-event等UI事件映射到键盘或者鼠标事件类中。
总结:
本文对matplotlib模块底层实现进行深入地认识和学习。在matplotlib模块中底层是基于C++模板库Agg来渲染图片效果的,同时提高脚本层pyplot让非专业的人也能轻松处理数据展示数据。