1. 程式人生 > >【pyqtgraph繪圖】如何使用pyqtgraph

【pyqtgraph繪圖】如何使用pyqtgraph

安裝 colspan rap 無需 格式 系統安裝 rtu svi title

解讀官方API-如何使用pyqtgraph

這裏有一些使用pyqtgraph的建議方法:

  • 從交互式shell(python -i,ipython等)
  • 從應用程序顯示彈出窗口
  • 在PyQt應用程序中嵌入小部件

命令行使用

PyQtGraph使得從命令行可視化數據變得非常容易。註意:

import pyqtgraph as pg
pg.plot(data)   # 數據可以是列表或numpy數組

上面的例子將打開一個窗口,顯示給定數據的線圖。調用 pg.plot返回創建plot widget句柄,允許將更多數據添加到同一窗口。

註意: python提示中的交互式繪圖僅適用於PyQt ;在交互式提示運行時,PySide不能運行Qt事件循環。

如果您希望使用pyqtgraph與PySide交互,請參閱“控制臺” 示例

更多例子:

pw = pg.plot(xVals, yVals, pen=r)  # 用紅色畫x-y圖像
pw.plot(xVals, yVals2, pen=b)

win = pg.GraphicsWindow()  # 自動生成多任務的網格
win.addPlot(data1, row=0, col=0)
win.addPlot(data2, row=0, col=1)
win.addPlot(data3, row=1, col=0, colspan=2)

pg.show(imageData)  # imageData 必須是2到4維的numpy數組

我們在這裏只是表面上看 - 這些函數接受許多不同的數據格式和選項來自定義數據的外觀。

在應用程序中顯示窗口

雖然我認為這種方法有些懶惰,但通常情況下“懶惰”與“高效”無法區分。這裏的方法只是使用與命令行中使用的功能完全相同的功能,但是在現有應用程序中。當我只是想在我的應用程序中獲得關於數據狀態的即時反饋而不花時間為它構建用戶界面時,我經常使用它。

在PyQt應用程序中嵌入小部件

對於嚴謹的應用程序開發人員,pyqtgraph中的所有功能都可以通過像其他任何Qt小部件一樣嵌入來使用

最重要的一些控件如:PlotWidgetImageViewGraphicsLayoutWidget

,和GraphicsView

PyQtGraph的小部件可以通過“Promote To ...”功能包含在Qt-Designer的ui文件中:

  • Designer中,創建一個QGraphicsView小部件(“Graphics View”類別下的“Display Widgets”)。
  • 用鼠標右鍵單擊QGraphicsView並選擇““Promote To...”。
  • 在“Promoted calss name”下,輸入您希望使用的類名稱(“PlotWidget”,“GraphicsLayoutWidget”等)。
  • 在“Header file”下,輸入“pyqtgraph”。
  • 點擊“Add”,然後點擊“Promote”。

有關提升窗口小部件的更多信息,請參閱設計器文檔。“VideoSpeedTest”和“ScatterPlotSpeedTest”示例都演示了如何使用pyuic4或pyside-uic編譯為.py模塊的.ui文件。“designerExample”示例演示了如何從.ui文件動態生成python類(不需要pyuic4 / pyside-uic)。

PyQt和PySide

PyQtGraph支持Qt庫的兩個流行的python包裝器:PyQt和PySide。兩個軟件包都提供幾乎相同的API和功能,但由於各種原因(在別處討論),您可能更喜歡使用一個軟件包或另一個軟件包。首次導入pyqtgraph時,它會通過進行填充檢查自動確定要使用的庫:

  1. 如果已導入PyQt5,請使用它
  2. 否則,如果已導入PySide,請使用它
  3. 否則,嘗試導入PyQt5
  4. 如果導入失敗,請嘗試導入PySide。

如果您的系統上安裝了兩個庫,並且您希望強制pyqtgraph使用其中一個,只需確保在pyqtgraph之前導入它:

import PySide  ## this will force pyqtgraph to use PySide instead of PyQt5
import pyqtgraph as pg

將PyQtGraph庫導入到大型項目中

在編寫使用pyqtgraph的應用程序或python包時,通常在系統範圍內(或在virtualenv中)安裝pyqtgraph,並在應用程序內調用import pyqtgraph。 這樣做的主要好處是pyqtgraph是獨立於應用程序進行配置的,因此您(或您的用戶)可以自由安裝較新版本的pyqtgraph,而無需在應用程序中更改任何內容。 這是用python開發時的標準做法。

然而,特別是對於科學應用來說,情況也是如此,即軟件是為特定目的而編寫的,然後進行存檔。如果我們想要確保軟件在十年後仍能正常工作,那麽最好將應用程序綁定到一個特定版本的pyqtgraph上,並避免導入系統安裝的pyqtgraph版本,這可能會更新(可能不兼容)。尤其當應用程序需要對主要版本中可能不存在的pyqtgraph軟件包進行特定的修改時,情況如此。

PyQtGraph通過兩種機制來促進這種用法。首先,pyqtgraph中的所有內部導入語句都是相對的,它允許將包重命名或用作子包,而不會與系統中其他版本的pyqtgraph產生任何命名沖突(即,pyqtgraph從未在內部將其自身稱為“pyqtgraph ”)。其次,可以在 https://github.com/pyqtgraph/pyqtgraph-core.git 找到一個git樹狀子目錄存儲庫,它只包含‘pyqtgraph /‘樹狀子目錄,允許將代碼直接克隆為使用它的應用程序的子目錄。

基本的方法是將存儲庫克隆到包中的適當位置。從包中導入pyqtgraph時,一定要使用全名來避免導入任何系統安裝的pyqtgraph包。例如,假設一個簡單的項目具有以下結構:

my_project/
    __init__.py
    plotting.py
        """Plotting functions used by this package"""
        import pyqtgraph as pg
        def my_plot_function(*data):
            pg.plot(*data)

要導入特定版本的pyqtgraph,我們將克隆在項目中的pyqtgraph-core 庫:

my_project$ git clone https://github.com/pyqtgraph/pyqtgraph-core.git

然後相應地調整導入語句:

my_project/
    __init__.py
    pyqtgraph/
    plotting.py
        """Plotting functions used by this package"""
        import my_project.pyqtgraph as pg  # 確保使用本地的子包,而不是使用全局安裝的版本
                                      
        def my_plot_function(*data):
            pg.plot(*data)

使用 git checkout pyqtgraph-core-x.x.x 選擇特定版本的存儲庫,或使用 git pull 從上遊拉取pyqtgraph更新(有關更多信息,請參閱git文檔)。

對於已經使用git進行代碼控制的項目,也可以在你自己的倉庫中包含pyqtgraph作為git樹狀子目錄。 這種方法的主要優點是,除了能夠從上遊存儲庫中獲取pyqtgraph更新之外,還可以將本地pyqtgraph更改提交到項目存儲庫並向上遊推送這些更改:

my_project$ git remote add pyqtgraph-core https://github.com/pyqtgraph/pyqtgraph-core.git
my_project$ git fetch pyqtgraph-core
my_project$ git merge -s ours --no-commit pyqtgraph-core/core
my_project$ mkdir pyqtgraph
my_project$ git read-tree -u --prefix=pyqtgraph/ pyqtgraph-core/core
my_project$ git commit -m "Added pyqtgraph to project repository"

【pyqtgraph繪圖】如何使用pyqtgraph