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

《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條評論
主站蜘蛛池模板: 亚洲一区二区三区在线播放 | 国产自愉怕一区二区三区 | 国产伦乱 | 久久91视频| 天堂va | 欧美啪啪毛片一区二区 | 久久久国产成人精品 | 亚洲三级天堂 | 欧美 国产 日本 | 久久69精品久久久久久hb | 麻豆成人久久精品二区三 | 国产视频欧美 | 夜夜做夜夜爽 | 亚洲 欧美 自拍 卡通 综合 | 97视频观看 | 日日射日日干 | 日韩综合nv一区二区在线观看 | 香蕉网站在线 | 天天热天天干 | 美女精品久久久久久国产潘金莲 | 香蕉亚洲欧洲在线一区 | 国产日韩欧美一区二区三区综合 | 中国精品久久精品三级 | 性生生活网站免费 | 91福利视频免费观看 | 国产自产视频 | 欧美日韩视频一区二区 | 一级毛片免费在线观看网站 | 免费精品国产福利片 | 香蕉精品高清在线观看视频 | 久久久久青草线蕉亚洲麻豆 | 精久久 | 一级毛片免费看 | 国产精品a人片在线观看 | 我要看免费的毛片 | 亚洲精品免费在线视频 | 日本久久久久久久中文字幕 | 成人欧美视频免费看黄黄 | 日日天干夜夜人人添 | 狠狠色综合网 | 男人影院在线 |