亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

《Python Qt GUI與數據可視化編程》第14章 Matplotlib

系統 1991 0

第14章 Matplotlib數據可視化

Matplotlib是Python中做數據繪圖最常用的一個包,它提供了二維和三維繪圖功能,能繪制曲線、直方圖、柱狀圖、餅圖、偽色圖、等高線圖、極坐標圖、三維曲面、三維等高線等各種圖,具有豐富的繪圖定制功能,能在圖中使用LaTeX標記輸出數學符號和公式,生成具有出版品質的圖。

Matplotlib最初是仿照MATLAB的繪圖功能開發的,matplotlib.pyplot模塊提供了類似于MATLAB的指令式繪圖功能,一般介紹Matplotlib繪圖功能的書也以介紹這種指令式繪圖為主。但是這種方式適合于腳本化的程序中進行數據可視化,不適合于在GUI應用程序中繪圖。實際上Matplotlib是完全采用面向對象的方式設計的,圖的各個組成元素都有相應的類,通過類的接口可以完全控制Matplotlib的繪圖功能,適合于在GUI應用程序中嵌入數據可視化功能。

本章主要介紹Matplotlib的面向對象的繪圖功能,介紹Matplotlib繪圖涉及的各個主要類的使用,特別是在GUI應用程序中的使用。

14.1 Matplotlib的基本用法

?

14.2 圖的主要元素的面向對象操作

要對一個圖(Figure)的各個組成元素進行編程操作,首先要搞清楚圖的組成元素的名稱及其對應的類,然后才可以使用類的屬性和接口函數進行操作。

Matplotlib官方例子程序anatomy.py繪制的一個圖完整地演示了一個圖的各個組成元素,圖14-3是anatomy.py運行時顯示的圖,實例Demo14_1目錄下有這個文件,讀者也可以從Matplotlib官網下載此程序的最新版本運行,并解讀其中的代碼。

《Python Qt GUI與數據可視化編程》第14章 Matplotlib數據可視化_第1張圖片

圖14-3 Matplotlib官方例子程序anatomy.py繪制的圖

本節通過實例程序Demo14_2演示和介紹Matplotlib繪圖的主要對象的操作方法。實例Demo14_2是基于模板mainWindowApp的項目,只有一個主窗口,程序運行時的界面如圖14-4所示。

《Python Qt GUI與數據可視化編程》第14章 Matplotlib數據可視化_第2張圖片

圖14-4 示例Demo14_2運行時界面

14.3 交互操作

使用Matplotlib繪圖還可以進行一些交互操作,最簡單的就是使用與FigureCanvas類對象關聯的NavigationToolbar類工具欄對圖表進行交互操作。此外,還可以使用FigureCanvas類提供的事件處理功能對鼠標和鍵盤事件進行響應,從而實現一些交互操作。

《Python Qt GUI與數據可視化編程》第14章 Matplotlib數據可視化_第3張圖片

圖14-9? 示例Demo14_3運行時界面

實例Demo14_3演示Matplotlib繪圖的一些交互功能的實現,程序運行時界面如圖14-9所示。這個程序實現了如下的一些功能:

  • 對NavigationToolbar工具欄對象做了一些改造,使其顯示中文標題和提示信息,并且在工具欄上插入了幾個由自定義Actions創建的工具欄按鈕。
  • 當鼠標在子圖上移動時,在狀態欄里顯示鼠標光標處的坐標數值。
  • 當鼠標移動到一個子圖上時,設置顯示綠色背景顏色,鼠標離開子圖時背景顏色恢復為白色,其功能類似于PyQt5中的hover()事件。
  • 鼠標在曲線序列或散點序列上點擊時,可以拾取序列上的數據點,并在狀態欄上顯示拾取的信息。
  • 使用鼠標滾輪可以對子圖進行縮放。NavigationToolbar工具欄提供的縮放功能只有矩形框選擇區域放大,或鼠標右鍵拖動縮放。

14.4 典型二維圖的繪制

在UI界面比較復雜時,希望在UI可視化設計時就放置一個類似于FigureCanvas的組件,而不是用代碼生成界面組件。為此,我們設計了一個從QWidget繼承的繪圖組件類QmyFigureCanvas,在這個類里創建一個FigureCanvas對象、一個Figure對象和一個NavigationToolbar工具欄,構成一個繪圖組件。在UI窗體可視化設計時,就可以放置一個QWidget組件然后提升為QmyFigureCanvas類,這樣方便界面可視化設計。

基于自定義的類QmyFigureCanvas設計的示例Demo14_4,演示了幾種常見的二維圖的繪制。

《Python Qt GUI與數據可視化編程》第14章 Matplotlib數據可視化_第4張圖片

圖14-16 “火柴桿圖”頁面

14.5 三維數據繪圖

Matplotlib可以繪制一些三維圖形,如三維曲面圖、三維線網圖、三維散點圖等。

本節通過實例Demo14_5簡單介紹Matplotlib中繪制三維曲面、三維線網圖和散點圖的方法。三維數據也可以用二維圖表現出來,例如一個三維曲面可以投影到X-Y平面上,用顏色表示一個點的Z軸的數值,這就是Axes類中的pcolormesh()、pcolor()等函數繪制的偽色圖。

《Python Qt GUI與數據可視化編程》第14章 Matplotlib數據可視化_第5張圖片

圖14-18 示例Demo14_5運行時界面

?

<上一章>?????????????? <回主頁>?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 五月婷婷久 | 亚洲国产天堂在线mv网站 | 深夜色 | 欧美色大成网站www永久男同 | 天天拍夜夜添久久精品中文 | 国产成+人+亚洲+欧美综合 | 亚洲高清美女一区二区三区 | av中文字幕在线 | 国产精品偷伦视频免费观看的 | 国产精品自在线拍国产 | 国产伦精品一区二区三区高清 | 亚洲精品亚洲人成毛片不卡 | 亚洲欧美日韩国产综合高清 | 男人的天堂视频在线 | 久久免费视频7 | 91尤物在线 | 97成人免费视频 | 久久99热只有频精品6不卡 | 最新中文字幕日本 | 青草福利 | 国产成人a毛片在线 | 亚洲欧洲一区二区三区在线 | 国产萝控精品福利视频免费 | 91精品视频在线播放 | 亚洲乱码中文字幕久久 | 婷婷综合五月中文字幕欧美 | 大伊香蕉精品视频在线天堂 | 国产精品免费观看网站 | 日日干狠狠操 | 亚洲欧美日韩成人网 | 在线亚洲激情 | 91福利国产在线观看 | 久久综合九色婷婷97 | 日本中文字幕一区二区有码在线 | 香蕉视频在线观看国产 | 96精品国产高清在线看入口 | 四虎影视成人永久在线观看 | 精品久久中文字幕有码 | 伊人网站 | 日韩视频一区二区三区 | 久爱www成人网免费视频 |