Python語言中使用pyqtgraph庫實現數據可視化

2021-01-10 編碼那些事

背景

在Python程式語言中,matplotlib是一種常用的用於數據可視化的繪圖庫,它提供了一套和matlab相似的命令API,開發者可以僅需幾行代碼,便可生成如直方圖,功率譜,條形圖,錯誤圖,散點圖等圖形,適用於交互式繪圖,而且也可以方便地將它作為繪圖控制項嵌入到GUI應用程式中,並能夠生成出版質量級別的圖形,為程序開發者提供了便利。應該說,matplotlib庫在靜態圖形的表現方面非常強大,但其缺點也比較明顯,如在動態圖形的繪製上,其刷新速度不盡人意。如在實時數據採集場合,要求高速實時繪圖,這時候很難滿足我們的要求,當然,可以通過其它方式如調用其提供的底層API自己編程優化,可以提高其繪圖速度,但難度相對較大。

這兒介紹另一種功能強大的2D/3D繪圖庫——pyqtgraph,它是一種建立在PyQt4/PySide和numpy庫基礎之上的純Python圖形GUI庫,在數學、科學和工程領域都有著廣泛的應用。儘管該庫完全用python編寫,但內部由於使用了高速計算的numpy信號處理庫以及Qt的GraphicsView框架,因此,它在大數據量的數字處理和快速顯示方面有著巨大的優勢,它適合於需要快速繪圖更新、視頻或實時交互性的操作場合。另外,它不僅為各種數據提供了快速可交互式的圖形顯示,同時也提供了用於快速開發應用程式的各種小工具,如屬性樹、流程圖等小部件。

下面通過例子說明該庫的使用方法。

最簡單的編程例子

先看一個最簡單的例子,代碼如下圖所示:

代碼中,導入了numpy庫用於產生要畫的波形數據,繪圖部分只有第16行一行代碼,使用了pyqtgraph的plot()函數就簡單的繪製了一個圖形。另外,第13行使用pyqtgraph庫中的函數mkQApp()創建一個應用程式實例,第17行app.exec_()函數運行實例,進入消息循環。運行結果如下所示:

實時刷新波形的例子

下面舉一個複雜一點的例子,這個例子在一個波形圖上實時連續刷新兩條曲線,分別為正弦曲線和餘弦曲線,運行結果的動態圖如下:

主要實現代碼如下:

代碼分析如下:

1、第13行,創建應用程式實例app

2、第15-17行,創建一個圖形顯示窗口win,設置窗口屬性,如窗口標題、窗口大小等

3、第19-24行,在win上添加一個畫圖對象p,設置各種屬性,如網格,X、Y軸標題、圖形標題、添加圖例等

4、第26-27行,在p上創建兩條曲線curve1、curve2,可通過參數設置曲線顏色、名稱等屬性

5、第29-33行,設置正弦、餘弦兩條曲線的參數信息

6、第35-39行,定時器超時函數plotData,內部使用setData函數更新curve1、curve2的數據並刷新繪圖

7、第41-43行,定義一個定時器timer,並連接超時函數plotData,每隔50ms刷新一次波形

8、第45行,使用app.exec_()函數運行實例,進入消息循環

備註

上面的例子給出了使用pyqtgraph庫繪製圖形的一般步驟,相對來說比較簡單。另外,使用pyqtgraph創建的圖形顯示窗口也可以方便嵌入到其它應用程式界面中,以便實現更複雜的圖形顯示類的界面程序。

歡迎加關注,共同交流。

相關焦點

  • Python數據可視化之高速繪圖神器PyQtGraph庫,強烈建議收藏
    01為什麼使用PyQtGraph庫我們知道,在Python中,已經有了很多可供選擇的數據可視化庫。再比如在matplotlib庫基礎上衍生的其它繪圖庫,如seaborn、ggplot、plotnine等等,甚至還有其它的一些庫如底層使用JavaScript 實現的開源可視化庫pyecharts等,這些庫都比較容易使用,幾行代碼就可畫出來漂亮的圖形。
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    詳細細節請參考:python使用ctypes模塊調用DLL函數之傳遞數值、指針與字符串參數、Python使用ctypes模塊調用DLL函數之傳遞結構體參數這次講一下在Python中使用ctypes模塊調用DLL中的庫函數傳遞數組參數的情況。
  • 數據工程師需要掌握的 18 個 Python 庫
    作者 | 劉早起早起責編 | 屠敏本文對Python中在數據分析中需要掌握的庫進行了整理,一起來看看吧!Doc對象包含Token的序列和Token的注釋,Vocab對象是spaCy使用的詞彙表,用於存儲語言中共享的數據,spaCy通過集中存儲字符串,單詞向量和詞彙屬性等,避免存儲數據的多個副本。
  • 2019年必知的10大頂級Python庫
    是最流行和使用最廣泛的程式語言之一,它已經取代了業界許多程式語言。python 在開發人員中流行的原因有很多。然而,最重要的一點是它有大量的庫供用戶使用。python 的簡單性吸引了許多開發人員為機器學習創建新的庫。由於有大量的庫,python 在機器學習專家中變得非常流行。所以,這裡要介紹的第一個庫是 TensorFlow。
  • 一文總結數據科學家常用的Python庫(下)
    /* Scikit-learn */就像用於數據操作的Pandas和用於可視化的matplotlib一樣,scikit-learn是構建模型的Python庫領導者。沒有什麼比得上它了。事實上,scikit-learn建立在NumPy,SciPy和matplotlib之上。它是開源的,每個人都可以訪問,並且可以在各種環境中重用。
  • 數據科學的Python軟體包
    Python是使用最廣泛的程式語言之一。儘管標準Python並沒有提供太多功能,但其數量眾多的開放原始碼和第三方庫在開發人員中頗受歡迎。您只需命名域,Python就會為您提供最佳的軟體包和庫。數據科學和機器學習是這個時代的兩項苛刻技術,而Python在這兩個領域的表現要好於優。除Python之外,R是數據科學項目中經常使用的另一種程式語言。
  • Agora新增支持Python:視頻通話中也可做圖像識別了
    近兩年來,Python在眾多程式語言中的熱度一直穩居前五,熱門程度可見一斑。Python 擁有很活躍的社區和豐富的第三方庫,Web 框架、爬蟲框架、數據分析框架、機器學習框架等,開發者無需重複造輪子,可以用 Python 進行 Web 編程、網絡編程,開發多媒體應用,進行數據分析,或實現圖像識別等應用。
  • 使用TF2與Keras實現經典GNN的開源庫——Spektral
    Spektral 是一個基於 Keras API 和 TensorFlow 2,用於圖深度學習的開源 Python 庫。該項目的主要目的是提供一個簡單但又不失靈活性的圖神經網絡(graph neural networks,GNNs) 框架。
  • 超硬核的 Python 數據可視化教程!
    Python實現可視化的三個步驟:確定問題,選擇圖形 轉換數據,應用函數 參數設置,一目了然 1、首先,要知道我們用哪些庫來畫圖?matplotlibpython中最基本的作圖庫就是matplotlib,是一個最基礎的Python可視化庫,一般都是從matplotlib上手Python數據可視化,然後開始做縱向與橫向拓展。
  • 學習筆記,從NumPy到Scrapy,學習Python不能錯過這些庫
    在網絡上看到幾位前輩寫了關於python深度學習庫的文章,對於小小白來說,因為我剛開始學python,我得承認自己看完後依然覺得雲裡霧裡的,不知道這些庫到底對我有什麼用處。所以我到網絡上搜集補充關於這些庫的說明內容,感覺在這個整理資料的過程中,對於這些python程序庫了解了更多,以下是我整理的學習筆記。
  • 廣州Python測試培訓
    課程簡介 廣州python培訓,在信盈達教育的python課程中,學員能夠學習到Python核心技術、網絡編程技術、多種網絡協議及數據格式,該課程以全新的形式出現,直接面向網際網路企業的核心需求如:
  • 可視化工具不知道怎麼選?深度評測5大Python數據可視化工具
    作者 | 劉早起來源 | 早起Python(ID: zaoqi-python)相信很多讀者學習Python就是希望作出各種酷炫的可視化圖表,當然你一定會聽說過Matplotlib、Pyecharts、Seaborn、Plotly、Bokeh這五大工具,本文就將通過真實繪圖來深度評測這五個Python數據可視化的庫,看看到底這幾種工具各有什麼優缺點
  • 38個常用Python庫:數值計算、可視化、機器學習等8大領域都有了
    SciPy在NumPy庫的基礎上增加了眾多的數學、科學及工程計算中常用的庫函數,如線性代數、常微分方程數值求解、信號處理、圖像處理、稀疏矩陣等,可進行插值處理、信號濾波,以及使用C語言加速計算。3. Pandas基於NumPy的一種工具,為解決數據分析任務而生。
  • Python可視化工具推薦:圖片交互性行極佳的Plotly
    1、 簡單介紹一般大家在學習python機器學習的時候,用的最多的可視化的包就是matplot和seaborn, 這2個可視化的優點在於門檻低,代碼容易理解,並且容易上手。唯一的可能的缺點就是畫出來的圖不能交互,簡單來說就是matplot和seaborn給出的就是一個圖片,當將滑鼠放到圖上的時候,不會顯示出圖中具體的數字是多少,而使用plotly之後,可以將圖片放大縮小,可以顯示與不顯示不同類別數據,等等。並且更加方便的是,這個圖可以嵌入到html裡面,可以直接放到網頁上面。我們話不多說,用matplot和plotly來展示相同的數據。
  • 數據科學和機器學習的最佳Python庫
    為什麼要使用Python?Python在用於實現機器學習和數據科學的最流行的程式語言中排名第一。讓我們了解為什麼。在下一節中,我們將討論以下任務的庫:統計分析數據可視化數據建模與機器學習深度學習自然語言處理(NLP)
  • 使用Python從頭開始實現深度學習庫
    為了支持這種快速擴展,在此過程中開發了許多不同的深度學習平臺和庫。這些庫的主要目標之一是提供用於構建和訓練深度學習模型的易於使用的界面,使用戶可以將更多的精力放在手頭的任務上。為此,可能需要將核心實現單元隱藏在幾個抽象層後面,這使得難以理解深度學習庫所基於的基本底層原理。因此,本文的目的是提供有關深度學習庫構建塊的見解。
  • 這幾個常用的python庫你需要知道
    3.PlotlyPlotly是一個流行的庫,它可以讓你輕鬆構建複雜的圖形。該軟體包適用於交互式Web應用程,可實現輪廓圖、三元圖和三維圖等視覺效果4.BokehBokeh庫使用JavaScript小部件在瀏覽器中創建交互式和可縮放的可視化。
  • 掌握了這24個頂級Python庫,你就是大神!
    因此,本文介紹了24種涵蓋端到端數據科學生命周期的Python庫。文中提及了用於數據清理、數據操作、可視化、構建模型甚至模型部署(以及其他用途)的庫。這是一個相當全面的列表,有助於你使用Python開啟數據科學之旅。
  • 大數據分析Python NumPy庫使用教程
    NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。
  • 普通人學Python有意義嗎?學Python有前途嗎?-開課吧Python
    Pythonpython憑藉著第三方庫數量的龐大,其幾乎可以說是萬能的,對於普通人來說,數據表格excel基本上都有需要製作,而有一些編程基礎的,就可以使用庫openpyxl來實現excel表格的自動處理和生成,同時除了excel之外,針對word,ppt等python都有對應的庫。