Ich versuche mit Python3 eine GUI zu programmieren, die 4 verschiedene Graphen in 4 Layouts darstellt: Geschwindigkeit, Höhe, Koordinaten und der Winkel. Momentan kann ich die Figur in jedem Layout zeichnen. Ich habe jedoch keine Ahnung, wie man verschiedene Funktionen in jeden Graphen einträgt. Ich habe eine Methode verwendet, um zufällig 10 Punkte für die Handlung zu generieren. Wenn die Methode aufgerufen wird, zeichnet sie den gleichen Graph in jede 4 Zeichenfläche.Wie werden in PyQt4 in einem Fenster verschiedene Graphen in verschiedenen Canvas-Bereichen dargestellt?
Also meine Frage ist ** ob es trotzdem eine unterschiedliche Funktion zu einer Figur plotten soll (ein Plot pro Graph)? ** Ich bin python3 ziemlich neu und wäre dankbar für jede Hilfe.
Wenn möglich, möchte ich vermeiden, viele Unterplots in einer Figur zu verwenden, da bereits ein Layout für jede Figur existiert.
Hier ist, was die aktuelle GUI aussieht, wenn ich den Test-Methode aufrufen, die zufällige Punkte generiert, können Sie sehen, dass the same graph are plotted in each canvas
Ich werde auch erwähnen, wenn es keine Einschränkungen hinzufügt, dass dieser Code schließlich sein wird, verwendet, um Diagramme zu plotten, die mit Daten aus einem anderen Thread aktualisiert werden.
Und hier ist der Code:
from PyQt4 import QtGui
from .flight_dataUI import Ui_Dialog
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
import random
class FlightData(QtGui.QDialog, Ui_Dialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
self.figure = plt.figure() # FlightData.figure = matplotlib.pyplot.figure()
# Creates a figure widget self.name = FigureCanvas(self.figure)
self.speedGraph = FigureCanvas(self.figure)
self.heightGraph = FigureCanvas(self.figure)
self.mapGraph = FigureCanvas(self.figure)
self.angleGraph = FigureCanvas(self.figure)
# -------------------------------------------------------------
self.speedLayout.addWidget(self.speedGraph) # insert widget "speedGraph" in speedLayout
self.heightLayout.addWidget(self.heightGraph) # insert widget "heightGraph" in heightLayout
self.mapLayout.addWidget(self.mapGraph) # insert widget "mapGraph" in mapLayout
self.angleLayout.addWidget(self.angleGraph) # insert widget "angleGraph" in angleLayout
self.ax = self.figure.add_subplot(111)
self.ax.hold(False)
self.init_widgets()
def init_widgets(self):
self.analyseButton.clicked.connect(self.open_analysedata)
self.draw_plot()
def open_analysedata(self):
self.done(2) # Closes and delete Dialog window et and return the int 2 as a results in main_window.py
def draw_plot(self):
data = [random.random() for i in range(10)]
self.ax.plot(data, '-*')
Hallo, vielen Dank für Ihre Antwort. Ich verstehe die meisten von Ihnen Code und beschlossen, es zu versuchen. Allerdings bekomme ich diesen Nameerror "NameError: Name 'Figur' ist nicht definiert" – SirIguan
** edit: mein Fehler es scheint, ich habe Figur aus der Klasse matplotlib.figure nicht importiert. Der Code funktioniert jetzt und ich kann einen Plot überall dort einrichten, wo ich will. Vielen Dank! ** – SirIguan
Oh, tut mir leid, das war eine Kopie Paste fehlschlagen – tacaswell