一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python matplotlib底層原理解析

Python matplotlib底層原理解析

2022-03-10 13:22盆友圈的小可愛 Python

這篇文章主要介紹了Python matplotlib底層原理,下面文章圍繞Python matplotlib底層原理的相關資料展開詳細內容,具有一定的參考價值,需要的朋友可以參考下

Python matplotlib底層原理解析

我們都知道matplotlib 是偏向底層用于可視化數據處理的庫,我們在繪制圖表的時候主要步驟主要有四大步驟:

  • 導入 matplotlib.pplot庫
  • 使用pandas/numpy模塊對數據進行整分析理
  • 調用pyplot中繪制方法繪制折線圖、餅圖等
  • 調用pyplot.show展示出來

在matplotlib官網上,可以看到豐富多樣的圖表教程

 

Python matplotlib底層原理解析

以上是我們上一期學習的內容,對于matplotlib模塊來說它的底層是怎么工作的?

俗話說,學習要做到知其然,也要知其所以然,這樣才能更好使用matplotlib模塊相關方法。

 

1. matplotlib 框架組成

matplotlib 模塊在眾多數據可視化庫中可以可以實現復雜的底層操作。像gglot、seaborn、plotnline 底層都是基于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 對象包含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對象層級結構圖如下

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事件映射到鍵盤或者鼠標事件類中。

  • 用戶可以連接事件,使用函數進行回調
  • 圖形與數據交互

總結:

本文對matplotlib模塊底層實現進行深入地認識和學習。在matplotlib模塊中底層是基于C++模板庫Agg來渲染圖片效果的,同時提高腳本層pyplot讓非專業的人也能輕松處理數據展示數據。

到此這篇關于Python matplotlib底層原理解析的文章就介紹到這了,更多相關Python matplotlib底層原理內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/7029297425575575560

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女被狂揉下部羞羞动漫 | 好大用力深一点女公交车 | 成人亚洲欧美日韩在线观看 | 摸咪网在线影院在线观看 | 精品一区二区三区五区六区 | 免费一级毛片在线播放 | 欧美高清一级 | 国产伦精品一区二区三区免费迷 | 任我行视频在线观看国语 | 女人叉开腿让男人捅 | 欧美久久影院 | zoofilivideo杂交3d | 欧美一级片观看 | 消息称老熟妇乱视频一区二区 | 2022国产麻豆剧果冻传媒入口 | 女人和男人搞鸡 | 男人操女人免费视频 | 情侣宾馆愉拍自拍视频 | 成年女人免费 | 日本熟hdx| 国产成+人+综合+欧美 亚洲 | 亚洲va欧美va国产va天堂影 | gogo人体模特啪啪季玥图片 | 亚洲AV无码专区国产乱码网站 | 欧美最猛性xxxxx短视频 | 国产一卡二卡3卡4卡四卡在线视频 | 日韩一区二区三区四区区区 | 青青青手机在线观看 | t66y地址一地址二地址三 | 亚洲zooz人禽交xxxx | 情欲综合网| 大片毛片女女女女女女女 | 日本动漫黄网站在线观看 | 天海翼最新作品 | 校服下的白嫩小乳尖h1v1 | 92精品国产成人观看免费 | 国产区最新 | 免费视频亚洲 | 亚洲精品www久久久久久久软件 | 骚虎最新网址 | 精品午夜久久福利大片免费 |