01為什麼使用PyQtGraph庫
我們知道,在Python中,已經有了很多可供選擇的數據可視化庫。
比如最經典、使用人數最多的matplotlib庫,其有著十多年的歷史積累,可生成高質量出版級別的圖形,它幾乎已經成了事實上的Python繪圖標準庫。再比如在matplotlib庫基礎上衍生的其它繪圖庫,如seaborn、ggplot、plotnine等等,甚至還有其它的一些庫如底層使用JavaScript 實現的開源可視化庫pyecharts等,這些庫都比較容易使用,幾行代碼就可畫出來漂亮的圖形。
但是這些繪圖庫也存在著不足,即在圖形繪製速度上有所欠缺,特別是對於科研算法方面的數據可視化,很多情況需要實時繪圖,要求能夠提供儘可能快的繪製刷新速度,那這些庫顯的有些力不從心了。
而我們下面要介紹的繪圖庫-PyQtGraph庫,則在繪圖速度方面表現尤其突出,在不失繪圖美觀、功能強大的前提下,在繪圖速度方面作了極大的優化,特別適合於實時數據採集的動態圖形繪製場合。
02什麼是PyQtGraph庫
先上個2D繪製效果圖:
再來個3D繪製效果圖:
PyQtGraph是一個純python的圖形和GUI庫,構建於PyQt4/PySide和numpy之上,它主要用於數學/科學/工程應用方面。雖然該庫完全用python編寫,但其內部使用了Qt的GraphicsView框架及numpy計算庫,因此其在圖形繪製及數據處理速度方面有著極其優異的表現。同時,PyQtGraph是在MIT開源許可下發布的。
該庫可運行於Python2和Python3上,其兩個主要特色為:
為數據(繪圖,視頻等)提供了快速可交互式的圖形(2D和3D)顯示。提供了幫助快速開發應用程式的小工具/部件,如屬性樹、顏色選擇框按鈕等。大家有興趣可去官網看下。
03PyQtGraph庫的主要特點
這兒僅列舉部分功能,詳細的可直接查看官方文檔。
1、可交互式的2D/3D繪圖功能
折線圖、散點圖、三維曲面基於等值面生成的網格繪製豐富的屬性設置支持顯示大多數數據類型(int或float;任意位深度;RGB、RGBA或亮度)在任意角度對多維圖像進行切片的功能(非常適合MRI數據)交互式滑鼠平移/旋轉/縮放實時數據顯示與交互的快速繪圖2、數據選擇/標記和關注區域控制
在繪圖中可交互標記垂直/水平位置和區域在圖像中可選擇任意區域並自動切片數據以匹配的小部件3、科學/工程應用程式有用的小部件和模塊庫
參數樹、顏色漸變編輯器及帶SI單位顯示和對數步進的SpinBox小部件等類似於Qt的Dock系統,但更加靈活和可編程,允許用戶重新排列圖形用戶界面組件怎麼樣,這裡面有沒有你感興趣的呢?心動了麼?
04PyQtGraph庫的安裝
以Windows系統為例,對於Python2或Python3,以下兩種方法都可以安裝:
pip命令行安裝:pip install pyqtgraph官網下載exe程序安裝:32位和64位的分別為pyqtgraph-0.10.0.win32.exe,pyqtgraph-0.10.0.win-amd64.exe文件
05PyQtGraph庫的使用
PyQtGraph庫提供了如下幾種使用方式:
在交互式shell如ipython裡顯示數據在應用程式中直接彈出彈出窗口顯示數據以小部件窗口的方式嵌入到在PyQt應用程式中顯示數據下面是一個超簡單直接彈出窗口的例子,代碼如下:
運行結果如下圖所示:
是不是比較簡單啊。
另外,這個庫比較好的地方是自帶了很多很多的例子,如果你想看更多更複雜的效果,就從它的例子開始學習吧,打開例子的方法只需要下面兩行代碼:
import pyqtgraph.examples
pyqtgraph.examples.run()
例子界面如下圖所示,每一個都可以單獨運行:
GraphicsView框架及numpy計算庫的有機結合,造就了PyQtGraph庫的高速繪製性能,小夥伴們,快試下吧。
本文由編碼那些事原創,請關注+轉發+收藏+點讚,帶你一起長知識!