2013-04-24 35 views
7

Stworzyłem prosty skrypt python, który po uruchomieniu powinien wyświetlić osadzony wykres matplotlib w oknie PyQT. Użyłem samouczka this do osadzania i uruchamiania wykresu. Oprócz pewnych różnic w konwencjach nazewnictwa i ogólnym interfejsie użytkownika, mój wykres jest generowany dokładnie tak samo, jak w omawianym samouczku.Interaktywny wykres Matplotlib osadzony w PyQt

Moim problemem jest to, że chciałbym uczynić z tego interaktywny wykres, który pozwala na powiększanie i przeciąganie, ale chciałbym to zrobić tylko za pomocą myszy (klikanie i przeciąganie, przewijanie koła, itp.) I bez paska narzędzi (jak uważam to za brzydkie).

Widget Klasa:

class MplCanvas(FigureCanvas): 
    """ 
    Creates a canvas on which to draw our widgets 
    """ 
    def __init__(self): 
     self.fig = Figure() 
     self.ax = self.fig.add_subplot(111) 

     FigureCanvas.__init__(self, self.fig) 
     FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding) 
     FigureCanvas.updateGeometry(self) 

class marketdephWidget(QtGui.QWidget): 
    """ 
    The market deph graph 
    """ 
    def __init__(self, parent = None): 
     QtGui.QWidget.__init__(self, parent) 
     self.canvas = MplCanvas() 
     self.vbl = QtGui.QVBoxLayout() 
     self.vbl.addWidget(self.canvas) 
     self.setLayout(self.vbl) 

funkcja kreślenia (run na naciśnięciu przycisku):

# initialize the mplwidgets 
def PlotFunc(self): 
    randomNumbers = random.sample(range(0, 10), 10) 
    self.ui.widget.canvas.ax.clear() 
    self.ui.widget.canvas.ax.plot(randomNumbers) 
    self.ui.widget.canvas.draw() 

Odpowiedz

2

Minęło trochę czasu, ale byłem w pracy na podobnym problemem. Mam numer example here. Może to pomoże.

Program używa PySide, jednak nie powinien to być problem.

Aby uruchomić program

python pyStocker.py 

można zobaczyć popup widget aw lewym górnym rogu pojawi się okno TextEdit. Po prostu wpisz GOOG lub inny ważny symbol giełdowy i naciśnij enter. Wykres zostanie uzupełniony o dane giełdowe. Suwak u dołu zmienia wykres w czasie rzeczywistym.