pythonでグラフを描画その3は複数のグラフを描画させる。
これはQwtではなくQtの側の操作。
QwtPlotのオブジェクトを作ってそれをQWidgetにaddWidgetで加える。
それだけです。
データ同士を結ぶ線、左のグラフでは見えなくて、右では黒の線になっている。
実は左では線の色に白を指定して見難くしているだけ。
どうやって線自体を消すのだろう。。。
ソースも今後の参考に載せます。
これはQwtではなくQtの側の操作。
QwtPlotのオブジェクトを作ってそれをQWidgetにaddWidgetで加える。
それだけです。
データ同士を結ぶ線、左のグラフでは見えなくて、右では黒の線になっている。
実は左では線の色に白を指定して見難くしているだけ。
どうやって線自体を消すのだろう。。。
ソースも今後の参考に載せます。
import sys
from PyQt4.QtGui import QApplication, QWidget, QHBoxLayout
from PyQt4.Qt import Qt, QPen, QSize, QBrush
from PyQt4.Qwt5.Qwt import QwtPlot, QwtPlotGrid, QwtPlotCurve, QwtSymbol
import numpy as np
from numpy import pi
class PlotWidget(QwtPlot):
def __init__(self, title, *args):
QwtPlot.__init__(self, *args)
self.setTitle(title)
self.setCanvasBackground(Qt.white)
#grid
grid = QwtPlotGrid()
grid.attach(self)
grid.setPen(QPen(Qt.black, 0, Qt.DotLine)) #make grid dotted-line
self.replot()
class MultiPlotWidget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setWindowTitle("multiple graphs")
hlayout = QHBoxLayout()
self.setLayout(hlayout)
#data creation
x = np.linspace(-2*pi, 2*pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
#create plots
plot1 = PlotWidget("plot1")
curve1 = QwtPlotCurve('y=sin(x)')
curve1.setPen(QPen(Qt.white, 0))
curve1.setSymbol(QwtSymbol(QwtSymbol.Ellipse, QBrush(Qt.red), QPen(Qt.red), QSize(5,5)))
curve1.setData(x,y1)
curve1.attach(plot1)
plot2 = PlotWidget("plot2")
curve2 = QwtPlotCurve('y=cos(x)')
curve2.setPen(QPen(Qt.black, 0))
curve2.setSymbol(QwtSymbol(QwtSymbol.Rect, QBrush(Qt.blue), QPen(Qt.blue), QSize(5,5)))
curve2.setData(x,y2)
curve2.attach(plot2)
#add plots to the main widget
self.layout().addWidget(plot1)
self.layout().addWidget(plot2)
def main():
app = QApplication(sys.argv)
plot = MultiPlotWidget()
plot.setMinimumSize(300,200)
plot.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
0 件のコメント:
コメントを投稿