欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?matplotlib底層原理解析

 更新時(shí)間:2021年12月01日 09:16:09   作者:盆友圈的小可愛  
這篇文章主要介紹了Python?matplotlib底層原理,下面文章圍繞Python?matplotlib底層原理的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考價(jià)值,需要的朋友可以參考下

復(fù)習(xí)回顧:
前期,我們已經(jīng)學(xué)習(xí)了matplotlib模塊相關(guān)的基礎(chǔ)知識(shí),對(duì) matplotlib 模塊折線圖、餅圖、柱狀圖進(jìn)行操作。

我們都知道matplotlib 是偏向底層用于可視化數(shù)據(jù)處理的庫,我們?cè)诶L制圖表的時(shí)候主要步驟主要有四大步驟:

  • 導(dǎo)入 matplotlib.pplot
  • 使用pandas/numpy模塊對(duì)數(shù)據(jù)進(jìn)行整分析理
  • 調(diào)用pyplot中繪制方法繪制折線圖、餅圖等
  • 調(diào)用pyplot.show展示出來

matplotlib官網(wǎng)上,可以看到豐富多樣的圖表教程

?

以上是我們上一期學(xué)習(xí)的內(nèi)容,對(duì)于matplotlib模塊來說它的底層是怎么工作的?

俗話說,學(xué)習(xí)要做到知其然,也要知其所以然,這樣才能更好使用matplotlib模塊相關(guān)方法。

1. matplotlib 框架組成

matplotlib 模塊在眾多數(shù)據(jù)可視化庫中可以可以實(shí)現(xiàn)復(fù)雜的底層操作。像gglot、seaborn、plotnline 底層都是基于matplotlib 模塊去封裝不同風(fēng)格的統(tǒng)計(jì)圖表。

matplotlib 模塊底層主要是由三部分組成腳本層、美工層和后端層。

  • 腳本層:為用戶提供可視化編程的接口
  • 美工層:有大量繪制圖表方法的接口
  • 后端:連接硬件,處理圖像元素的接口

PS:matplotlib框架說明

2. 腳本層(scripting)

腳本層屬于matplotlib模塊中最上層,主要為用戶提供可視化編程的接口,代表pyplot模塊。

對(duì)于普通用戶,pyplot接口可以滿足大多數(shù)文本的圖像和坐標(biāo)的生成,傳給后端進(jìn)行處理。

matplotlib.pyplot接口導(dǎo)入時(shí),通常是import matplotlib.pyplot as plt

  • 導(dǎo)入pyplot 模塊并重名為plt
  • pyplot 模塊加載時(shí),會(huì)對(duì)本地的配置文件進(jìn)行分析
  • 同時(shí)會(huì)聲明默認(rèn)的后端,例如聲明創(chuàng)建Figure對(duì)象
  • 將腳本深拷貝給后端后退出

pyplot 模塊提調(diào)用matplotlib的方法

  • 供給用面向oo調(diào)用風(fēng)格,顯示創(chuàng)建圖形和軸調(diào)用其方法
  • 依靠pyplot 自動(dòng)創(chuàng)建和管理圖形和軸,并使用pyplot函數(shù)進(jìn)行繪圖

用戶只需調(diào)用pyplot模塊相關(guān)的方法,就可以繪制漂亮的圖表啦

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()

3. 美工層(artist)

在美工層位于matplotlib中間層,主要進(jìn)行數(shù)據(jù)相關(guān)的繪制工作,繪制圖表中的標(biāo)題、直線、刻度等都是artist對(duì)象的實(shí)例。

artist 層特點(diǎn)

  • 腳本層創(chuàng)建的Figure對(duì)象是Artist對(duì)象實(shí)例
  • Artist的基類是matplotlib.artist.Artist,共享所有Artist屬性包括從美工系統(tǒng)到畫布坐標(biāo)系統(tǒng)變化等
  • 提供處理用戶交互動(dòng)作的接口

matplotlib 圖表對(duì)象

我們可以通過如下matplotlibe圖表中可以看到一張圖表由多個(gè)對(duì)象組合而成的。

matplotlib 圖表對(duì)象說明

對(duì)象 說明
Figure 圖形,彈出框口即是figure
axes 子圖
title 標(biāo)題
legend 圖例
Major tick 大標(biāo)尺刻度
Minor tick 小標(biāo)尺刻度
Line 線型圖
axis label 坐標(biāo)指標(biāo)說明
Marker 數(shù)據(jù)標(biāo)準(zhǔn)說明

Artist 對(duì)象說明

ArtIst 對(duì)象包含Figure、Axes、Axis對(duì)象,是它們的基類,其Artist對(duì)象都全部位于后端提供的canvas畫布上。

Figure

  • 一個(gè)圖表窗口即是一個(gè)figure對(duì)象
  • figure對(duì)象中至少要包含一個(gè)Axes對(duì)象子圖
  • figure對(duì)象中可以包含title、label等Artist對(duì)象
  • figure對(duì)象中包含的不可見對(duì)象canvas。繪制圖像時(shí)會(huì)進(jìn)行調(diào)用

Axes

  • axes 是子圖對(duì)象,子圖對(duì)象指的是x和y軸.
  • axes 常用有set_xlabel()、set_ylabel()設(shè)置x和y軸坐標(biāo)名字

Axis

  • axis 是代表數(shù)據(jù)軸的對(duì)象,主要用于表示刻度位置和顯示數(shù)值
  • axis 包含用于控制刻度位置的Locator和顯示刻度Formatter兩個(gè)子對(duì)象

Artist對(duì)象層級(jí)結(jié)構(gòu)圖如下

4. 后端層(backend)

后端層主要是matplotlib 模塊底層實(shí)現(xiàn),主要實(shí)現(xiàn)了三方面的抽象接口 4.

FigureCanvas:對(duì)Artist對(duì)象繪制提供畫布功能進(jìn)行封裝

matplotlib 模塊底層是基于硬的用戶畫面,F(xiàn)igureCaves接口主要完成前期初始化工作

  • 將自身嵌入到原生的QT視覺窗口(QtGui.QMainWindow)
  • 將matplotlib的繪制命令Render轉(zhuǎn)換到canvas上(QtGui.QPainter)
  • 將原生Qt事件轉(zhuǎn)成matplotlib的Event接口,Event接口接收到信息后進(jìn)行處理

Renderer: 相當(dāng)于畫筆,執(zhí)行繪制動(dòng)作

Render 主要提供硬件底層的繪圖接口,能對(duì)Artist繪制命令進(jìn)行執(zhí)行。

  • Render 接口最初源于GDK的Drawable接口,后來轉(zhuǎn)換成獨(dú)立后端的原生繪圖命令。
  • matplotlib 是支持C++模塊庫基于像素點(diǎn)核心渲染器agg
  • 可以進(jìn)行2d反鋸齒渲染、PNG圖片生成

Event: 處理用戶鍵盤和鼠標(biāo)輸入事件

Event 框架是將key-press-event或者mouse-motion-event等UI事件映射到鍵盤或者鼠標(biāo)事件類中。

  • 用戶可以連接事件,使用函數(shù)進(jìn)行回調(diào)
  • 圖形與數(shù)據(jù)交互

總結(jié):

本文對(duì)matplotlib模塊底層實(shí)現(xiàn)進(jìn)行深入地認(rèn)識(shí)和學(xué)習(xí)。在matplotlib模塊中底層是基于C++模板庫Agg來渲染圖片效果的,同時(shí)提高腳本層pyplot讓非專業(yè)的人也能輕松處理數(shù)據(jù)展示數(shù)據(jù)。

到此這篇關(guān)于Python matplotlib底層原理解析的文章就介紹到這了,更多相關(guān)Python matplotlib底層原理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論