2012年7月24日火曜日

pythonでグラフ pyqwt入門その2

matplotlibはなんといってもグラフのクオリティが高いところがいいのだが、少々重たくGUIには向かん。そんなこんなでPyQwtに手を出しけど、Qwtをどれくらい使いこなせるかが鍵。
PyQwtの例はネットにあまりなく、Qwtをあたらないけん。
C++を使える人はいいかも知れんけど、知らん人はqwtのドキュメント読んでもなかなか分からんのよね~

少し苦労して、プロットの形と線を変える方法を発見したのでアップ。
curve.setPen(Qt.QPen(Qt.Qt.blue, 2, Qt.Qt.DotLine))
        curve.setSymbol(Qwt.QwtSymbol(Qwt.QwtSymbol.Ellipse, Qt.QBrush(Qt.Qt.red),
                                      Qt.QPen(Qt.Qt.red), Qt.QSize(5,5)))

結果は写真のようになる。 EllipseんとこをDiamondとかにしてもよい。形はここをみて好きなのを選ぶ


忘れんように全ソースもメモ
import sys
from PyQt4 import QtGui, Qt
import PyQt4.Qwt5 as Qwt
import numpy as np
from numpy import pi

class SimplePlot(Qwt.QwtPlot):
    def __init__(self, *args):
        Qwt.QwtPlot.__init__(self, *args)
        self.setTitle('simple plot demo')
        self.setCanvasBackground(Qt.Qt.white)
        
        #grid
        grid = Qwt.QwtPlotGrid()
        grid.attach(self)
        grid.setPen(Qt.QPen(Qt.Qt.black, 0, Qt.Qt.DotLine)) #make grid dotted-line
        
        x = np.linspace(-2*pi, 2*pi, 100)
        y = np.sin(x)
        
        curve = Qwt.QwtPlotCurve('y=sin(x)')
        curve.attach(self)
        curve.setPen(Qt.QPen(Qt.Qt.blue, 2, Qt.Qt.DotLine))
        curve.setSymbol(Qwt.QwtSymbol(Qwt.QwtSymbol.Ellipse, Qt.QBrush(Qt.Qt.red),
                                      Qt.QPen(Qt.Qt.red), Qt.QSize(5,5)))       
        curve.setData(x,y)
        
        self.replot()
        
def main():
    app = QtGui.QApplication(sys.argv)

    plot = SimplePlot()
    plot.setMinimumSize(300,200)
    plot.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()




0 件のコメント:

コメントを投稿