引言
pyqtgraph是Python平臺上一種功能強大的2D/3D繪圖庫,相對於matplotlib庫,由於內部實現方式上,使用了高速計算的numpy信號處理庫以及Qt的GraphicsView框架,因此,它在大數據量的數字處理和快速顯示方面有著巨大的優勢,它適合於需要快速繪圖更新、視頻或實時交互性的操作場合。另外,它不僅為各種數據提供了快速可交互式的圖形顯示,同時也提供了用於快速開發應用程式的各種小工具,如屬性樹、流程圖等小部件,在數學、科學和工程領域都有著廣泛的應用。
目的
在畫二維數據波形圖時,有時在橫坐標刻度信息上顯示的是一些說明性的字符信息,而非原始的橫坐標數值,如下圖所示:
圖中顯示的橫、縱坐標的實際值分別為[[0,1,2,3,4,5],[1,2,6,3,5,2]],而在圖形的橫坐標軸刻度上顯示的是字符信息[『a』,『b』,『c』,『d』,『e』,『f』],這些字符分別對應了數值[0,1,2,3,4,5]。這兒介紹Python語言中使用pyqtgraph庫實現這種功能的兩種方法。
方法1
其原則是,直接使用pyqtgraph庫提供的軸項類AxisItem,定義它的一個實例對象,調用該類的setTicks函數設置橫坐標軸的字符信息,代碼如下:
代碼簡要說明如下:
第14-16行,產生波形的x、y數據及對應的x軸的字符信息列表第20行,將x數值及字對應字符組成一個元組的列表第25-26行,創建軸項類AxisItem的實例對象strAxis,並調用setTicks函數設置橫坐標的字符信息第29-30行,使用strAxis創建繪圖對象並繪製波形圖
方法2
其原則是,以pyqtgraph庫提供的軸項類AxisItem作為基類,在程序中創建一個自定義的軸項類,類中重定義函數tickStrings來實現橫坐標刻度的的字符信息顯示,代碼如下:
代碼簡要說明如下:
第13-29行,以pyqtgraph庫提供的AxisItem作為基類自定義了一個軸項類MyStringAxis,在類中重定義tickStrings函數,實現橫坐標刻度的的字符信息顯示第33-35行,產生波形的x、y數據及對應的x軸的字符信息列表第39行,將x數值及字對應字符組成一個元組的列表第42-44行,創建自定義類MyStringAxis的實例對象strAxis,用其創建繪圖對象並繪製波形圖
歡迎加關注,共同交流。