今回はQtにmatplotlibを組み込む。
描画がインタラクティブな場合は前にやったようにPyQwtを使う必要があるけど、そうじゃない場合は使い慣れたmatplotlibがやっぱりいい。
参考URLはここ。
なんかやりたいことがもう完成しとるけど、導入部分だけをシンプルに構成してみる。
MainWindowの中にBarPlotWidgetというのを使ってそこをmatplotlibの描画領域にする。
とりあえずはMainWindowはBarplotWidgetのみを配置することにする。
FigureCanvasQTAggをWidgetのようにaddWidget()すればレイアウトに追加できるようだ。 この辺は調べるの面倒やけ天下り的にやろう。
描画がインタラクティブな場合は前にやったようにPyQwtを使う必要があるけど、そうじゃない場合は使い慣れたmatplotlibがやっぱりいい。
参考URLはここ。
なんかやりたいことがもう完成しとるけど、導入部分だけをシンプルに構成してみる。
MainWindowの中にBarPlotWidgetというのを使ってそこをmatplotlibの描画領域にする。
とりあえずはMainWindowはBarplotWidgetのみを配置することにする。
FigureCanvasQTAggをWidgetのようにaddWidget()すればレイアウトに追加できるようだ。 この辺は調べるの面倒やけ天下り的にやろう。
import sys import numpy as np from PyQt4.QtGui import * from PyQt4.QtCore import * from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure class BarPlot(): def __init__(self, parent=None): # Create the mpl Figure and FigCanvas objects. # 5x4 inches, 100 dots-per-inch self.dpi = 100 self.fig = Figure((5,4), dpi=self.dpi) self.canvas = FigureCanvas(self.fig) #pass a figure to the canvas self.canvas.setParent(parent) self.axes = self.fig.add_subplot(111) self.data = [1,2,3,1,2,3] def on_draw(self): """ redraw the figure """ self.axes.clear() self.axes.grid() x = range(len(self.data)) self.axes.bar(left=x, height=self.data, width=0.3, align='center', alpha=0.44, picker=5) self.canvas.draw() class AppForm(QMainWindow): def __init__(self, parent=None): QMainWindow.__init__(self, parent) self.creat_main_window() self.barplot.on_draw() def creat_main_window(self): self.main_frame = QWidget() self.barplot = BarPlot(self.main_frame) #set layout vbox = QVBoxLayout() vbox.addWidget(self.barplot.canvas) #add canvs to the layout self.main_frame.setLayout(vbox) #set widget self.setCentralWidget(self.main_frame) def main(args): app = QApplication(args) form = AppForm() form.show() sys.exit(app.exec_()) if __name__ == "__main__": main(sys.argv)
0 件のコメント:
コメントを投稿