# coding:utf-8
# 作者:州的先生
# 博客:https://zmister.com
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
# 實例化一個繪圖窗口
win = pg.GraphicsWindow()
win.resize(1000,600)
win.setWindowTitle('PyQtGraph基礎繪圖示例 - zmister.com')
# 啟用抗鋸齒選項
pg.setConfigOptions(antialias=True)
# 使用addPlot()方法直接添加一個數組以繪製圖形
p1 = win.addPlot(title="基礎數組繪圖", y=np.random.normal(size=100))
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
運行上述代碼,會得到如下動圖所示的圖形界面:
一個圖形中繪製多條折線# coding:utf-8
# 作者:州的先生
# 博客:https://zmister.com
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
# 實例化一個繪圖窗口
win = pg.GraphicsWindow()
win.resize(1000,600)
win.setWindowTitle('PyQtGraph基礎繪圖示例 - zmister.com')
# 啟用抗鋸齒選項
pg.setConfigOptions(antialias=True)
# 添加一個圖形
p2 = win.addPlot(title="多條折線")
# 在圖形中繪製3條折線
p2.plot(np.random.normal(size=100), pen=(255,0,0), name="紅色線條")
p2.plot(np.random.normal(size=110)+5, pen=(0,255,0), name="綠色線條")
p2.plot(np.random.normal(size=120)+10, pen=(0,0,255), name="藍色線條")
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
運行上述代碼,會得到如下動圖所示的圖形界面:
在圖形中繪製點# coding:utf-8
# 作者:州的先生
# 博客:https://zmister.com
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
# 實例化一個繪圖窗口
win = pg.GraphicsWindow()
win.resize(1000,600)
win.setWindowTitle('PyQtGraph基礎繪圖示例 - zmister.com')
# 啟用抗鋸齒選項
pg.setConfigOptions(antialias=True)
# 添加一個圖形
p3 = win.addPlot(title="在圖形中繪製點")
p3.plot(
np.random.normal(size=100), # 隨機數組曲線
pen=(200,200,200), # 畫筆顏色
symbolBrush=(0,255,0), # 符號畫筆顏色
symbolPen='w', # 符號外圈顏色
)
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
運行上述代碼,會得到如下動圖所示的圖形界面:
使用圖形參數# coding:utf-8
# 作者:州的先生
# 博客:https://zmister.com
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
# 實例化一個繪圖窗口
win = pg.GraphicsWindow()
win.resize(1000,600)
win.setWindowTitle('PyQtGraph基礎繪圖示例 - zmister.com')
# 啟用抗鋸齒選項
pg.setConfigOptions(antialias=True)
# 添加一個圖形
p4 = win.addPlot(title="使用參數來顯示網格")
x = np.cos(np.linspace(0, 2*np.pi, 1000)) # 生成X軸數據
y = np.sin(np.linspace(0, 4*np.pi, 1000)) # 生成Y軸數據
p4.plot(x, y) # 繪製圖形
p4.showGrid(x=True, y=True) # 啟用X、Y軸網格
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
運行上述代碼,會得到如下動圖所示的圖形界面:
散點圖、坐標軸標籤和刻度# coding:utf-8
# 作者:州的先生
# 博客:https://zmister.com
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
# 實例化一個繪圖窗口
win = pg.GraphicsWindow()
win.resize(1000,600)
win.setWindowTitle('PyQtGraph基礎繪圖示例 - zmister.com')
# 啟用抗鋸齒選項
pg.setConfigOptions(antialias=True)
# 添加一個圖形
p5 = win.addPlot(title="散點圖、坐標軸標籤、坐標軸刻度")
x = np.random.normal(size=1000) * 1e-5 # 生成X軸數據
y = x*1000 + 0.005 * np.random.normal(size=1000) # 生成Y軸數據
y -= y.min()-1.0
mask = x > 1e-15
x = x[mask]
y = y[mask]
p5.plot(x, y, pen=None, symbol='t', symbolPen=None, symbolSize=10, symbolBrush=(100, 100, 255, 50))
p5.setLabel('left', "Y Axis", units='A') # 設置橫坐標軸標籤文本
p5.setLabel('bottom', "Y Axis", units='s') #設置縱坐標軸標籤文本
p5.setLogMode(x=True, y=False) # 設置坐標軸刻度模式
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
運行上述代碼,會得到如下動圖所示的圖形界面:
實時數據更新繪圖# coding:utf-8
# 作者:州的先生
# 博客:https://zmister.com
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
# 實例化一個繪圖窗口
win = pg.GraphicsWindow()
win.resize(1000,600)
win.setWindowTitle('PyQtGraph基礎繪圖示例 - zmister.com')
# 啟用抗鋸齒選項
pg.setConfigOptions(antialias=True)
# 添加一個圖形
p6 = win.addPlot(title="繪圖數據更新")
curve = p6.plot(pen='y') # 圖形使用黃色畫筆進行繪製
data = np.random.normal(size=(10,1000)) # 生成隨機數據
ptr = 0 # 初始為0
# 定義一個更新函數
def update():
global curve, data, ptr, p6
curve.setData(data[ptr%10]) # 設置圖形的數據值
if ptr == 0:
p6.enableAutoRange('xy', False) ## 在第一個圖形繪製的時候停止自動縮放
ptr += 1
timer = QtCore.QTimer() # 實例化一個計時器
timer.timeout.connect(update) # 計時器信號連接到update()函數
timer.start(200) # 計時器間隔200毫秒
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
運行上述代碼,會得到如下動圖所示的圖形界面:
填充圖形、禁用坐標軸# coding:utf-8
# 作者:州的先生
# 博客:https://zmister.com
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
# 實例化一個繪圖窗口
win = pg.GraphicsWindow()
win.resize(1000,600)
win.setWindowTitle('PyQtGraph基礎繪圖示例 - zmister.com')
# 啟用抗鋸齒選項
pg.setConfigOptions(antialias=True)
# 添加一個圖形
p7 = win.addPlot(title="填充圖形,禁用坐標軸")
y = np.sin(np.linspace(0, 10, 1000)) + np.random.normal(size=1000, scale=0.1) # 生成圖形數據
p7.plot(y,
fillLevel=0,
brush=(50,50,200,100)
)
p7.showAxis('bottom', False) # 底部坐標軸不顯示
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
運行上述代碼,會得到如下動圖所示的圖形界面:
區域選擇# coding:utf-8
# 作者:州的先生
# 博客:https://zmister.com
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
# 實例化一個繪圖窗口
win = pg.GraphicsWindow()
win.resize(1000,600)
win.setWindowTitle('PyQtGraph基礎繪圖示例 - zmister.com')
# 啟用抗鋸齒選項
pg.setConfigOptions(antialias=True)
# 添加一個圖形
x2 = np.linspace(-100, 100, 1000)
data2 = np.sin(x2) / x2
p8 = win.addPlot(title="區域選擇")
p8.plot(data2, pen=(255,255,255,200))
# 添加一個線區域選擇項目,起始區間在400到700
lr = pg.LinearRegionItem([400,700])
p8.addItem(lr)
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
運行上述代碼,會得到如下動圖所示的圖形界面:
放大區域選擇# coding:utf-8
# 作者:州的先生
# 博客:https://zmister.com
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
# 實例化一個繪圖窗口
win = pg.GraphicsWindow()
win.resize(1000,600)
win.setWindowTitle('PyQtGraph基礎繪圖示例 - zmister.com')
# 啟用抗鋸齒選項
pg.setConfigOptions(antialias=True)
# 添加一個圖形
x2 = np.linspace(-100, 100, 1000)
data2 = np.sin(x2) / x2
p8 = win.addPlot(title="區域選擇")
p8.plot(data2, pen=(255,255,255,200))
# 添加一個線區域選擇項目,起始區間在400到700
lr = pg.LinearRegionItem([400,700])
p8.addItem(lr)
p9 = win.addPlot(title="放大區域選擇")
p9.plot(data2)
# 更新繪圖
def updatePlot():
p9.setXRange(*lr.getRegion(), padding=0)
# 更新區域選擇
def updateRegion():
lr.setRegion(p9.getViewBox().viewRange()[0])
lr.sigRegionChanged.connect(updatePlot)
p9.sigXRangeChanged.connect(updateRegion)
updatePlot()
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
運行上述代碼,會得到如下動圖所示的圖形界面:
全家福最後,來一個全家福: