본문 바로가기

PYQT5/QtChart

[파이썬, PYQT5 - QtChart] LineChart 생성, 데이터 삽입, 타이틀 설정, 색상 변경

  • 전체 소스
더보기
import sys

from PyQt5.QtChart import QLineSeries, QChart, QChartView
from PyQt5.QtCore import QSize, Qt
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QGridLayout,



class MainScreen(QMainWindow):

    def __init__(self, wid, hei):
        super().__init__()

        self.setWindowTitle("TEST SCREEN")  # 프로젝트 타이틀 설정
        self.setGeometry(0, 0, int(wid * .5), int(hei * .5))  # 화면 사이즈 설정

        self.mainWidget = QWidget()                     # 메인 위젯 생성
        self.mainLayout = QGridLayout(self.mainWidget)  # 메인 레이아웃 생성 및 메인 위젯 연결
        self.mainLayout.setSpacing(100)
        self.setCentralWidget(self.mainWidget)          # 메인윈도우 센트럴위젯에 메인 위젯 연결

        # 라인 차트 생성 (타이틀)
        self.sample1(0, 0)

        # 라인 차트 (라인 데이터 삽입)
        self.sample2(0, 1)

        # 라인 차트 (라인 색상 변경)
        self.sample3(1, 0)

        # 라인 차트 (두개 라인 삽입)
        self.sample4(1, 1)

        self.showMaximized()

    def sample1(self, row, col):

        # 시리즈 생성
        series = QLineSeries()

        # 차트 생성
        chart = QChart()
        chart.legend().hide()
        chart.addSeries(series)
        chart.createDefaultAxes()       # 기본 좌표 생성
        chart.setTitle("Line Chart")    #  타이틀

        # 차트 뷰 생성
        chart_view = QChartView(chart)
        chart_view.setRenderHint(QPainter.Antialiasing)     # 안티알리아싱 설정

        self.mainLayout.addWidget(chart_view, row, col)  # 메인 레이아웃에 라인에디트 위젯 추가

    def sample2(self, row, col):

        # 시리즈 생성
        series = QLineSeries()

        # 좌표 추가
        series.append(1, 1)
        series.append(2, 2)
        series.append(3, 3)
        series.append(4, 3)
        series.append(5, 4)
        series.append(6, 3)
        series.append(7, 7)
        series.append(8, 5)
        series.append(9, 4)

        # 차트 생성
        chart = QChart()
        chart.legend().hide()
        chart.addSeries(series)         # 차트에 시리즈 추가
        chart.createDefaultAxes()       # 기본 좌표 생성
        chart.setTitle("Line Chart")  # 타이틀

        # 차트 뷰 생성
        chart_view = QChartView(chart)
        chart_view.setRenderHint(QPainter.Antialiasing)     # 안티알리아싱 설정

        self.mainLayout.addWidget(chart_view, row, col)  # 메인 레이아웃에 라인에디트 위젯 추가

    def sample3(self, row, col):
        # 시리즈 생성
        series = QLineSeries()
        series.setColor(QColor(Qt.red))

        # 좌표 추가
        series.append(1, 1)
        series.append(2, 2)
        series.append(3, 3)
        series.append(4, 3)
        series.append(5, 4)
        series.append(6, 3)
        series.append(7, 7)
        series.append(8, 5)
        series.append(9, 4)

        # 차트 생성
        chart = QChart()
        chart.legend().hide()
        chart.addSeries(series)  # 차트에 시리즈 추가
        chart.createDefaultAxes()  # 기본 좌표 생성
        chart.setTitle("Line Chart")  # 타이틀

        # 차트 뷰 생성
        chart_view = QChartView(chart)
        chart_view.setRenderHint(QPainter.Antialiasing)  # 안티알리아싱 설정

        self.mainLayout.addWidget(chart_view, row, col)  # 메인 레이아웃에 라인에디트 위젯 추가

    def sample4(self, row, col):
        # 시리즈1 생성
        series1 = QLineSeries()
        series1.setColor(QColor(Qt.red))

        # 좌표 추가
        series1.append(1, 1)
        series1.append(2, 2)
        series1.append(3, 3)
        series1.append(4, 3)
        series1.append(5, 4)
        series1.append(6, 3)
        series1.append(7, 7)
        series1.append(8, 5)
        series1.append(9, 4)

        # 시리즈1 생성
        series2 = QLineSeries()
        series2.setColor(QColor(Qt.green))

        # 좌표 추가
        series2.append(1, 6)
        series2.append(2, 5)
        series2.append(3, 3)
        series2.append(4, 2)
        series2.append(5, 1)
        series2.append(6, 2)
        series2.append(7, 4)
        series2.append(8, 7)
        series2.append(9, 10)

        # 차트 생성
        chart = QChart()
        chart.legend().hide()
        chart.addSeries(series1)  # 차트에 시리즈1 추가
        chart.addSeries(series2)  # 차트에 시리즈2 추가
        chart.createDefaultAxes()  # 기본 좌표 생성
        chart.setTitle("Line Chart")  # 타이틀

        # 차트 뷰 생성
        chart_view = QChartView(chart)
        chart_view.setRenderHint(QPainter.Antialiasing)  # 안티알리아싱 설정

        self.mainLayout.addWidget(chart_view, row, col)  # 메인 레이아웃에 라인에디트 위젯 추가

if __name__ == '__main__':

    app = QApplication(sys.argv)
    size: QSize = app.primaryScreen().size()    # 모니터 사이즈

    main = MainScreen(size.width()/2, size.height())
    sys.exit(app.exec_())

 


 

1. 라인 차트 생성 (차트 타이틀)

# 시리즈 생성
series = QLineSeries()

# 차트 생성
chart = QChart()
chart.legend().hide()
chart.addSeries(series)
chart.createDefaultAxes()       # 기본 좌표 생성
chart.setTitle("Line Chart")    #  타이틀 설정

# 차트 뷰 생성
chart_view = QChartView(chart)
chart_view.setRenderHint(QPainter.Antialiasing)     # 안티알리아싱 설정

self.mainLayout.addWidget(chart_view, row, col)  # 메인 레이아웃에 라인에디트 위젯 추가

 

타이틀 - Line Chart

 

 


 

 

 

2. 차트 데이터 삽입

# 시리즈 생성
series = QLineSeries()

# 좌표 추가
series.append(1, 1)
series.append(2, 2)
series.append(3, 3)
series.append(4, 3)
series.append(5, 4)
series.append(6, 3)
series.append(7, 7)
series.append(8, 5)
series.append(9, 4)

# 차트 생성
chart = QChart()
chart.legend().hide()
chart.addSeries(series)         # 차트에 시리즈 추가
chart.createDefaultAxes()       # 기본 좌표 생성
chart.setTitle("Line Chart")  # 타이틀

# 차트 뷰 생성
chart_view = QChartView(chart)
chart_view.setRenderHint(QPainter.Antialiasing)     # 안티알리아싱 설정

self.mainLayout.addWidget(chart_view, row, col)  # 메인 레이아웃에 라인에디트 위젯 추가

데이터 삽입

 

 


 

 

 

 

 

 

3. 라인 색상 변경

# 시리즈 생성
series = QLineSeries()
series.setColor(QColor(Qt.red))

# 좌표 추가
series.append(1, 1)
series.append(2, 2)
series.append(3, 3)
series.append(4, 3)
series.append(5, 4)
series.append(6, 3)
series.append(7, 7)
series.append(8, 5)
series.append(9, 4)

# 차트 생성
chart = QChart()
chart.legend().hide()
chart.addSeries(series)  # 차트에 시리즈 추가
chart.createDefaultAxes()  # 기본 좌표 생성
chart.setTitle("Line Chart")  # 타이틀

# 차트 뷰 생성
chart_view = QChartView(chart)
chart_view.setRenderHint(QPainter.Antialiasing)  # 안티알리아싱 설정

self.mainLayout.addWidget(chart_view, row, col)  # 메인 레이아웃에 라인에디트 위젯 추가

 

색상 - RED

 

 


 

 

 

4. 라인 두개 생성

# 시리즈1 생성
series1 = QLineSeries()
series1.setColor(QColor(Qt.red))

# 좌표 추가
series1.append(1, 1)
series1.append(2, 2)
series1.append(3, 3)
series1.append(4, 3)
series1.append(5, 4)
series1.append(6, 3)
series1.append(7, 7)
series1.append(8, 5)
series1.append(9, 4)

# 시리즈2 생성
series2 = QLineSeries()
series2.setColor(QColor(Qt.green))

# 좌표 추가
series2.append(1, 6)
series2.append(2, 5)
series2.append(3, 3)
series2.append(4, 2)
series2.append(5, 1)
series2.append(6, 2)
series2.append(7, 4)
series2.append(8, 7)
series2.append(9, 10)

# 차트 생성
chart = QChart()
chart.legend().hide()
chart.addSeries(series1)  # 차트에 시리즈1 추가
chart.addSeries(series2)  # 차트에 시리즈2 추가
chart.createDefaultAxes()  # 기본 좌표 생성
chart.setTitle("Line Chart")  # 타이틀

# 차트 뷰 생성
chart_view = QChartView(chart)
chart_view.setRenderHint(QPainter.Antialiasing)  # 안티알리아싱 설정

self.mainLayout.addWidget(chart_view, row, col)  # 메인 레이아웃에 라인에디트 위젯 추가

라인 두개 생성