最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?matplotlib底層原理解析

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

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

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

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

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

?

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

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

1. matplotlib 框架組成

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

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

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

PS:matplotlib框架說(shuō)明

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)到畫(huà)布坐標(biāo)系統(tǒng)變化等
  • 提供處理用戶交互動(dòng)作的接口

matplotlib 圖表對(duì)象

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

matplotlib 圖表對(duì)象說(shuō)明

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

Artist 對(duì)象說(shuō)明

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

Figure

  • 一個(gè)圖表窗口即是一個(gè)figure對(duì)象
  • figure對(duì)象中至少要包含一個(gè)Axes對(duì)象子圖
  • figure對(duì)象中可以包含title、label等Artist對(duì)象
  • figure對(duì)象中包含的不可見(jiàn)對(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ì)象繪制提供畫(huà)布功能進(jìn)行封裝

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

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

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

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

  • Render 接口最初源于GDK的Drawable接口,后來(lái)轉(zhuǎn)換成獨(dú)立后端的原生繪圖命令。
  • matplotlib 是支持C++模塊庫(kù)基于像素點(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++模板庫(kù)Agg來(lái)渲染圖片效果的,同時(shí)提高腳本層pyplot讓非專業(yè)的人也能輕松處理數(shù)據(jù)展示數(shù)據(jù)。

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

相關(guān)文章

  • django rest framework 實(shí)現(xiàn)用戶登錄認(rèn)證詳解

    django rest framework 實(shí)現(xiàn)用戶登錄認(rèn)證詳解

    這篇文章主要介紹了django rest framework 實(shí)現(xiàn)用戶登錄認(rèn)證詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python+Pygame實(shí)戰(zhàn)之詩(shī)詞填空游戲的實(shí)現(xiàn)

    Python+Pygame實(shí)戰(zhàn)之詩(shī)詞填空游戲的實(shí)現(xiàn)

    成語(yǔ)接龍大家都玩過(guò),但詩(shī)詞填空大家玩過(guò)嗎?把成語(yǔ)接龍變成填空題。難度可上漲了不止一個(gè)檔次呢!本文就來(lái)用Python和Pygame實(shí)現(xiàn)詩(shī)詞填空游戲,需要的可以參考一下
    2022-12-12
  • Python 文件和輸入輸出小結(jié)

    Python 文件和輸入輸出小結(jié)

    Python 是面向?qū)ο缶幊陶Z(yǔ)言,文件也是一種類,下面簡(jiǎn)單介紹下,方便需要的朋友
    2013-10-10
  • Pycharm設(shè)置界面全黑的方法

    Pycharm設(shè)置界面全黑的方法

    今天小編就為大家分享一篇Pycharm設(shè)置界面全黑的方法,具有很好的參考價(jià)值。希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 淺談django 重載str 方法

    淺談django 重載str 方法

    這篇文章主要介紹了淺談django 重載str 方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • pytorch之torch.flatten()和torch.nn.Flatten()的用法

    pytorch之torch.flatten()和torch.nn.Flatten()的用法

    這篇文章主要介紹了pytorch之torch.flatten()和torch.nn.Flatten()的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 在PyCharm中遇到pip安裝 失敗問(wèn)題及解決方案(pip失效時(shí)的解決方案)

    在PyCharm中遇到pip安裝 失敗問(wèn)題及解決方案(pip失效時(shí)的解決方案)

    這篇文章主要介紹了在PyCharm中遇到pip安裝失敗問(wèn)題及解決方案(pip失效時(shí)的解決方案),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python發(fā)送郵件測(cè)試報(bào)告操作實(shí)例詳解

    Python發(fā)送郵件測(cè)試報(bào)告操作實(shí)例詳解

    這篇文章主要介紹了Python發(fā)送郵件測(cè)試報(bào)告操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python郵件發(fā)送相關(guān)模塊使用及操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • 淺析Python的對(duì)象拷貝和內(nèi)存布局

    淺析Python的對(duì)象拷貝和內(nèi)存布局

    這篇文章主要為大家詳細(xì)介紹了Python中的對(duì)象拷貝和內(nèi)存布局的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2022-12-12
  • Python JSON模塊的使用詳情

    Python JSON模塊的使用詳情

    這篇文章主要介紹了Python JSON模塊的使用詳情,JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,易于人閱讀和編寫(xiě)下面文章圍繞Python JSON模塊的相關(guān)資料展開(kāi)內(nèi)容,需要的小伙伴可以參考一下,希望 對(duì)你有所幫助
    2021-12-12

最新評(píng)論

永福县| 资兴市| 格尔木市| 浏阳市| 永平县| 清水县| 桃源县| 肇州县| 大荔县| 黄山市| 临城县| 聊城市| 行唐县| 武清区| 宁南县| 乌海市| 柳江县| 太保市| 漳州市| 拉孜县| 长岛县| 萨嘎县| 正安县| 怀安县| 德兴市| 庆云县| 油尖旺区| 遂溪县| 富民县| 横山县| 南华县| 宜兰县| 安泽县| 息烽县| 伊川县| 涟源市| 江川县| 天长市| 唐山市| 富宁县| 黔江区|