[PyQt] QtChart를 통해 여러 축의 차트 표시
입문
지금까지 Python의 차트 표시 및 제작 사용pyqtgraph.하지만 최근 3년 정도 업데이트가 되지 않아 어차피 Qt가 지원하는 것으로 갈아타고 싶어서 사용해 보았다QtChart.
환경
설치 $ pip install PyQt5
$ pip install PyQtChart
생성된 예
X축은 시간, Y축은 전류, 전압으로 제작되었다.
소스는 다음과 같습니다.
qchart_example.pyimport random
import sys
from PyQt5.QtChart import (QChart,
QChartView,
QLineSeries,
QValueAxis,
QDateTimeAxis)
from PyQt5.QtCore import (QDateTime,
Qt)
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
cur_series = QLineSeries()
vol_series = QLineSeries()
now = QDateTime.currentDateTime()
# 適当なデータを作成
for i in range(100):
cur = 5 * random.random()
vol = 20 * random.random()
time = now.addSecs(i).toMSecsSinceEpoch() # QLineSeriesにappendするための処理
cur_series.append(time, cur)
vol_series.append(time, vol)
chart = QChart()
chart.legend().hide()
chart.addSeries(cur_series)
chart.addSeries(vol_series)
# X軸を作成
time_axis_x = QDateTimeAxis()
time_axis_x.setFormat("hh:mm:ss")
chart.addAxis(time_axis_x, Qt.AlignBottom)
cur_series.attachAxis(time_axis_x)
vol_series.attachAxis(time_axis_x)
# Y1軸を作成
cur_axis_y = QValueAxis()
cur_axis_y.setTitleText("Current[A]")
cur_axis_y.setLinePenColor(cur_series.pen().color()) # 軸とチャートの色を同じにする
cur_axis_y.setRange(0, 5)
chart.addAxis(cur_axis_y, Qt.AlignLeft)
cur_series.attachAxis(cur_axis_y)
# Y2軸を作成
vol_axis_y = QValueAxis()
vol_axis_y.setTitleText("Voltage[V]")
vol_axis_y.setLinePenColor(vol_series.pen().color()) # 軸とチャートの色を同じにする
vol_axis_y.setRange(0, 20)
chart.addAxis(vol_axis_y, Qt.AlignRight)
vol_series.attachAxis(vol_axis_y)
cur_vol_chart_view = QChartView()
cur_vol_chart_view.setChart(chart)
cur_vol_chart_view.setRenderHint(QPainter.Antialiasing) # チャートを滑らかに表示するため
cur_vol_chart_view.show()
sys.exit(app.exec_())
참조 URL
X축은 시간, Y축은 전류, 전압으로 제작되었다.
소스는 다음과 같습니다.
qchart_example.py
import random
import sys
from PyQt5.QtChart import (QChart,
QChartView,
QLineSeries,
QValueAxis,
QDateTimeAxis)
from PyQt5.QtCore import (QDateTime,
Qt)
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
cur_series = QLineSeries()
vol_series = QLineSeries()
now = QDateTime.currentDateTime()
# 適当なデータを作成
for i in range(100):
cur = 5 * random.random()
vol = 20 * random.random()
time = now.addSecs(i).toMSecsSinceEpoch() # QLineSeriesにappendするための処理
cur_series.append(time, cur)
vol_series.append(time, vol)
chart = QChart()
chart.legend().hide()
chart.addSeries(cur_series)
chart.addSeries(vol_series)
# X軸を作成
time_axis_x = QDateTimeAxis()
time_axis_x.setFormat("hh:mm:ss")
chart.addAxis(time_axis_x, Qt.AlignBottom)
cur_series.attachAxis(time_axis_x)
vol_series.attachAxis(time_axis_x)
# Y1軸を作成
cur_axis_y = QValueAxis()
cur_axis_y.setTitleText("Current[A]")
cur_axis_y.setLinePenColor(cur_series.pen().color()) # 軸とチャートの色を同じにする
cur_axis_y.setRange(0, 5)
chart.addAxis(cur_axis_y, Qt.AlignLeft)
cur_series.attachAxis(cur_axis_y)
# Y2軸を作成
vol_axis_y = QValueAxis()
vol_axis_y.setTitleText("Voltage[V]")
vol_axis_y.setLinePenColor(vol_series.pen().color()) # 軸とチャートの色を同じにする
vol_axis_y.setRange(0, 20)
chart.addAxis(vol_axis_y, Qt.AlignRight)
vol_series.attachAxis(vol_axis_y)
cur_vol_chart_view = QChartView()
cur_vol_chart_view.setChart(chart)
cur_vol_chart_view.setRenderHint(QPainter.Antialiasing) # チャートを滑らかに表示するため
cur_vol_chart_view.show()
sys.exit(app.exec_())
참조 URL
Reference
이 문제에 관하여([PyQt] QtChart를 통해 여러 축의 차트 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/grinpeaceman/items/35fb93c7ca35f9665d9f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)