pyqtgraph -- pyqt5 에서 사용 -- line chart
pyqtgraph -- pyqt5 에서 사용 -- line chart
개발환경 : windows 10 64bit, python 3.6.6 32bit, pyqt5, pyqtgraph 0.10.0 --> Anaconda 4.4.0 (32-bit) 사용
참고 : https://stackoverflow.com/questions/17925006/embedding-pyqtgraph-in-qt-without-generating-new-window
http://pyqtgraph.org/documentation/widgets/plotwidget.html#pyqtgraph.PlotWidget --> PlotWidget
http://pyqtgraph.org/documentation/graphicsItems/plotitem.html#pyqtgraph.PlotItem ---> PlotItem
http://pyqtgraph.org/documentation/graphicsItems/plotitem.html#pyqtgraph.PlotItem.plot ---> PlotItem.plot
https://pythonprogramminglanguage.com/pyqtgraph-plot/ --> 참고 예제
** pyqtgraph.plot( )
--> 소스코드 보면, PlotWindow 객체 생성하여, plot( ) 실행함.
--> PlotWindow ; graphicsWindows.py 내부에 정의됨.
--> 소스코드보면, 내부적으로 QMainWindow 에 PlotWidget 을 사용하여 만들었다.
==> 결론적으로, pyqtgraph.plot( ) 은 내부적으로 PlotWidget.plot( ) 을 실행하고,
GUI window는 pyqt의 QMainWindow 사용함.
** pyqt5 내에 pyqtgraph를 통합할때. PlotWidget() 을 사용하자.
-- PlotWidget() 은 내부적으로 GraphicWidget 을 상속받고, PlotItem() 의 메소드를 사용한다.
-- 즉, PlotWidget() 초기화시에, parent 와 background 매개변수는 GraphicWidget 에서 사욯하고,
나머지 매개변수는 PlotItem() 으로 넘겨 사용됨.
** pyqtgraph 에서 global configuration options 사용 예. http://www.pyqtgraph.org/documentation/config_options.html
ex1) pg.setConfigOption('background', 'y') # global configuration options
ex2) pg.setConfigOptions(background='w', foreground='b') # key-value 형태로 여러개 인자 사용 가능.
** numpy 를 사용하지 않아도, 간단한 그래프를 그릴수 있다.
** plot( ) 에 관하여...
-- PlotWidget.plot( ) 사용시...
--> 내부적으로 PlotItem.plot( ) 메소드를 사용함.
---> PlotItem.plot( ) 는 PlotDataItem 객체를 반환한다.
; plot( data ) 에서 사용하는 data 값은 list 혹은 numpy array 를 사용한다.
** 실제 차트 그리는 명령어는 아래 2가지 중 하나 사용하면됨.
pw.plot(x, y, pen='r')
또는
pdi = pw.plot() # PlotDataItem obj 반환
pdi.setData(x, y, pen='g')
---> plot( ) 으로 차트그릴때, 내부적으로 setData( ) 를 사용하므로, 그냥 setData( ) 사용하는 습관이 좋을듯.....
<< 실행결과 >>
<< 소스코드 >>
---
import pyqtgraph as pg | |
# import pyqtgraph.exporters | |
# import numpy as np | |
from PyQt5.QtWidgets import * | |
class MyMainWindow(QMainWindow): | |
""" | |
QMainWindow 의 central widget 으로 pyqtgraph의 PlotWidget() 사용함. | |
""" | |
def __init__(self): | |
super().__init__() | |
# pg.setConfigOption('background', 'y') # global configuration options | |
# pg.setConfigOptions(background='w') # global configuration options | |
# pg.setConfigOptions(background='w', foreground='b') # key-value 형태로 여러개 인자 사용 가능. | |
y = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] | |
x = range(0, 10) | |
# pw = pg.PlotWidget(background='w', title="aaaa") | |
pw = pg.PlotWidget(title="기본예제") # title 매개변수는 내부적으로 PlotItem() 에서 사용됨. | |
# pw = pg.PlotWidget() | |
""" | |
** 실제 차트 그리는 명령어는 아래 2가지 중 하나 사용하면됨. | |
pw.plot(x, y, pen='r') | |
또는 | |
pdi = pw.plot() # PlotDataItem obj 반환 | |
pdi.setData(x, y, pen='g') | |
""" | |
# pw.plot(x, y) | |
# pw.plot(x, y, pen='r') # plot() 메소드는 내부적으로 PlotItem 의 plot() 을 사용함. | |
pdi = pw.plot() # PlotDataItem obj 반환 | |
pdi.setData(x, y, pen='g') | |
self.setCentralWidget(pw) # pyqt5 와 pyqtgraph 연결. | |
# self.setGeometry(300, 700, 350, 500) | |
self.show() | |
if __name__ == '__main__': | |
import sys | |
app = QApplication(sys.argv) | |
mywin = MyMainWindow() | |
sys.exit(app.exec_()) | |