ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PYSIDE6 Matplotlib을 사용한 데이터 시각화
    PYTHON(파이썬)/PYSIDE6(GUI) 2024. 10. 25. 08:52
    728x90
    반응형

    데이터 시각화는 데이터 분석 및 프레젠테이션의 중요한 부분입니다. PySide6 Matplotlib을 함께 사용하면 애플리케이션에서 복잡한 그래프와 차트를 쉽게 표시할 수 있습니다. 이 장에서는 Matplotlib PySide6 애플리케이션에 통합하는 방법을 알아보겠습니다.

     

    #### Matplotlib 설치

    Matplotlib을 사용하려면 먼저 설치해야 합니다. 다음 명령어를 사용하여 Matplotlib을 설치할 수 있습니다.

     

    ```bash

    pip install matplotlib

    ```

     

    #### Matplotlib 기본 사용법

    Matplotlib을 사용하여 간단한 플롯을 생성하는 방법을 알아봅시다.

     

    **기본 플롯 예제**

    ```python

    import matplotlib.pyplot as plt

     

    plt.plot([1, 2, 3, 4], [10, 20, 25, 30])

    plt.xlabel('X-axis')

    plt.ylabel('Y-axis')

    plt.title('Simple Plot')

    plt.show()

    ```

    이 예제에서는 Matplotlib을 사용하여 간단한 선 그래프를 생성하고 표시합니다.

     

    #### PySide6 Matplotlib 통합

    PySide6 애플리케이션에서 Matplotlib 플롯을 표시하려면 Matplotlib의 백엔드를 PySide6에 맞게 설정해야 합니다. 이를 위해 `FigureCanvas` 클래스를 사용합니다.

     

    **PySide6 Matplotlib 통합 예제**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget

    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas

    from matplotlib.figure import Figure

     

    class MplCanvas(FigureCanvas):

        def __init__(self, parent=None, width=5, height=4, dpi=100):

            fig = Figure(figsize=(width, height), dpi=dpi)

            self.axes = fig.add_subplot(111)

            super(MplCanvas, self).__init__(fig)

     

    class MainWindow(QMainWindow):

        def __init__(self):

            super(MainWindow, self).__init__()

            self.setWindowTitle("Matplotlib Integration Example")

     

            self.canvas = MplCanvas(self, width=5, height=4, dpi=100)

            self.canvas.axes.plot([0, 1, 2, 3, 4], [10, 1, 20, 3, 40])

     

            layout = QVBoxLayout()

            layout.addWidget(self.canvas)

     

            container = QWidget()

            container.setLayout(layout)

            self.setCentralWidget(container)

     

    app = QApplication(sys.argv)

    window = MainWindow()

    window.show()

    app.exec()

    ```

    이 예제에서는 `MplCanvas` 클래스를 생성하여 Matplotlib 플롯을 표시하는 캔버스를 정의합니다. `MainWindow` 클래스에서 이 캔버스를 사용하여 플롯을 표시합니다.

     

    #### 실시간 데이터 업데이트

    실시간으로 데이터를 업데이트하여 플롯을 동적으로 변경할 수 있습니다. 이를 위해 타이머를 사용할 수 있습니다.

     

    **실시간 데이터 업데이트 예제**

    ```python

    import sys

    import random

    from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget

    from PySide6.QtCore import QTimer

    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas

    from matplotlib.figure import Figure

     

    class MplCanvas(FigureCanvas):

        def __init__(self, parent=None, width=5, height=4, dpi=100):

            fig = Figure(figsize=(width, height), dpi=dpi)

            self.axes = fig.add_subplot(111)

            super(MplCanvas, self).__init__(fig)

     

    class MainWindow(QMainWindow):

        def __init__(self):

            super(MainWindow, self).__init__()

            self.setWindowTitle("Real-Time Data Update Example")

     

            self.canvas = MplCanvas(self, width=5, height=4, dpi=100)

            self.xdata = list(range(10))

            self.ydata = [random.randint(0, 10) for _ in range(10)]

            self.update_plot()

     

            layout = QVBoxLayout()

            layout.addWidget(self.canvas)

     

            container = QWidget()

            container.setLayout(layout)

            self.setCentralWidget(container)

     

            self.timer = QTimer()

            self.timer.setInterval(1000)

            self.timer.timeout.connect(self.update_data)

            self.timer.start()

     

        def update_data(self):

            self.xdata = self.xdata[1:] + [self.xdata[-1] + 1]

            self.ydata = self.ydata[1:] + [random.randint(0, 10)]

            self.update_plot()

     

        def update_plot(self):

            self.canvas.axes.cla()

            self.canvas.axes.plot(self.xdata, self.ydata, 'r')

            self.canvas.draw()

     

    app = QApplication(sys.argv)

    window = MainWindow()

    window.show()

    app.exec()

    ```

    이 예제에서는 타이머를 사용하여 1초마다 새로운 데이터를 생성하고 플롯을 업데이트합니다.

     

    ### 결론

    이 장에서는 Matplotlib을 사용하여 PySide6 애플리케이션에서 데이터를 시각화하는 방법을 알아보았습니다. Matplotlib을 설치하고, 기본 플롯을 생성하고, PySide6 애플리케이션에 통합하는 방법을 배웠습니다. 또한, 실시간 데이터 업데이트를 통해 동적으로 플롯을 변경하는 방법도 살펴보았습니다. 다음 장에서는 애플리케이션 배포에 대해 알아보겠습니다

    728x90

    'PYTHON(파이썬) > PYSIDE6(GUI)' 카테고리의 다른 글

    PySide를 안드로이드 앱으로 전환  (2) 2024.10.29
    PYSIDE6 배포  (0) 2024.10.25
    PYSIDE6 멀티스레딩  (0) 2024.10.24
    PYSIDE6 데이터베이스 작업  (0) 2024.10.24
    PYSIDE6 고급 모델 뷰 프로그래밍  (2) 2024.10.24
Designed by Tistory.