Python matplotlib底层原理是什么

本篇内容介绍了“Python matplotlib底层原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. matplotlib 框架组成

matplotlib 模块在众多数据可视化库中可以可以实现复杂的底层操作。像gglotseabornplotnline 底层都是基于matplotlib 模块去封装不同风格的统计图表。

matplotlib 模块底层主要是由三部分组成脚本层、美工层和后端层。

  • 脚本层:为用户提供可视化编程的接口

  • 美工层:有大量绘制图表方法的接口

  • 后端:连接硬件,处理图像元素的接口

Python matplotlib底层原理是什么

PS:matplotlib框架说明

2. 脚本层(scripting)

脚本层属于matplotlib模块中最上层,主要为用户提供可视化编程的接口,代表pyplot模块。

对于普通用户,pyplot接口可以满足大多数文本的图像和坐标的生成,传给后端进行处理。

matplotlib.pyplot接口导入时,通常是import matplotlib.pyplot as plt

  • 导入pyplot 模块并重名为plt

  • pyplot 模块加载时,会对本地的配置文件进行分析

  • 同时会声明默认的后端,例如声明创建Figure对象

  • 将脚本深拷贝给后端后退出

pyplot 模块提调用matplotlib的方法

  • 供给用面向oo调用风格,显示创建图形和轴调用其方法

  • 依靠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()

Python matplotlib底层原理是什么

3. 美工层(artist)

在美工层位于matplotlib中间层,主要进行数据相关的绘制工作,绘制图表中的标题、直线、刻度等都是artist对象的实例。

artist 层特点

  • 脚本层创建的Figure对象是Artist对象实例

  • Artist的基类是matplotlib.artist.Artist,共享所有Artist属性包括从美工系统到画布坐标系统变化等

  • 提供处理用户交互动作的接口

matplotlib 图表对象

我们可以通过如下matplotlibe图表中可以看到一张图表由多个对象组合而成的。

Python matplotlib底层原理是什么

matplotlib 图表对象说明

对象 说明
Figure 图形,弹出框口即是figure
axes 子图
title 标题
legend 图例
Major tick 大标尺刻度
Minor tick 小标尺刻度
Line 线型图
axis label 坐标指标说明
Marker 数据标准说明

Artist 对象说明

ArtIst 对象包含FigureAxesAxis对象,是它们的基类,其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对象层级结构图如下

Python matplotlib底层原理是什么

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底层原理是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/230588.html

(0)
上一篇 2022年1月15日
下一篇 2022年1月15日

相关推荐

发表回复

登录后才能评论