PythonとQtを使用してリアルタイムプロットを作成する方法について説明します。この記事では、特にmatplotlibとPyQt5を使用した方法と、pyqtgraphを使用した方法に焦点を当てます。
matplotlibとPyQt5を使用した方法
matplotlibとPyQt5を使用してリアルタイムプロットを作成する一つの方法は、公式のmatplotlibウェブサイトに掲載されている例を参考にすることです。この例では、matplotlibの図をPyQt5ウィンドウに埋め込む方法が説明されています。以下に、その例の一部を示します。
from __future__ import annotations
from typing import *
import sys
import os
from matplotlib.backends.qt_compat import QtCore, QtWidgets
from matplotlib.backends.backend_qt5agg import FigureCanvas
import matplotlib as mpl
import numpy as np
class ApplicationWindow(QtWidgets.QMainWindow):
''' The PyQt5 main window. '''
def __init__(self):
super().__init__()
# 1. Window settings
self.setGeometry(300, 300, 800, 400)
self.setWindowTitle("Matplotlib live plot in PyQt - example 1")
self.frm = QtWidgets.QFrame(self)
self.frm.setStyleSheet("QWidget { background-color: #eeeeec; }")
self.lyt = QtWidgets.QVBoxLayout()
self.frm.setLayout(self.lyt)
self.setCentralWidget(self.frm)
# 2. Place the matplotlib figure
self.myFig = MyFigureCanvas(x_len=200, y_range=[0, 100], interval=20)
self.lyt.addWidget(self.myFig)
# 3. Show
self.show()
return
pyqtgraphを使用した方法
pyqtgraphを使用してリアルタイムプロットを作成する方法もあります。以下に、その例の一部を示します。
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
# Set graphical window, its title and size
win = pg.GraphicsWindow(title="Sample process")
win.resize(1000,600)
win.setWindowTitle('pyqtgraph example')
# Enable antialiasing for prettier plots
pg.setConfigOptions(antialias=True)
# Random data process
p6 = win.addPlot(title="Updating plot")
curve = p6.plot(pen='y')
data = np.random.normal(size=(10,1000))
# plot counter
ptr = 0
# Function for updating data display
def update():
global curve, data, ptr, p6
curve.setData(data[ptr%10])
if ptr == 0:
p6.enableAutoRange('xy', False)
ptr += 1
# Update data display
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(50)
## Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
これらの例を参考に、PythonとQtを使用してリアルタイムプロットを作成する方法を探求してみてください。さまざまなデータストリームを視覚化するための強力なツールを手に入れることができます。.