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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 卫生间被教官做好爽HH视频 | 国产精品福利一区二区亚瑟 | avtt一区| 大奶老太 | 91看片淫黄大片欧美看国产片 | 久久国产影院 | 乳 好大h | 亚洲欧美精品一区天堂久久 | 色亚| 牛人国产偷窥女洗浴在线观看 | 按摩师他揉我奶好爽捏我奶 | 91在线免费播放 | 国产一区二区三区在线观看视频 | 日韩中文字幕在线不卡 | 千金肉奴隶免费观看 | 91香蕉小视频 | 白丝憋尿 | 女人张开腿 让男人桶个爽 免费观看 | 日韩色图区 | 色综合视频在线观看 | 水多多www视频在线观看高清 | 国产亚洲欧美在线中文bt天堂网 | 传说之下羊妈挤羊奶网站 | 欧美亚洲国产另类在线观看 | 美女扒开腿让男人桶爽动态图片 | sss在线观看免费视频 | 国产成人精品免费视频软件 | 欧美高清在线精品一区二区不卡 | 男男18视频免费网站 | 2021日产国产麻豆 | 视频一区二区三区在线观看 | 国产首页精品 | 99年水嫩漂亮粉嫩在线播放 | 亚洲精品一二三四 | 亚洲美女人黄网成人女 | 好吊色网站 | 亚洲精品福利在线 | 欧美日韩一区二区三区在线观看 | 国产精品视频第一区二区三区 | 成人免费草草视频 | www.av免费 |