Graph in GUI ändern/bearbeiten

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Laura98
User
Beiträge: 17
Registriert: Sonntag 3. Juni 2018, 09:59

Hallo, ich bräuchte mal Hilfe, und zwar habe ich einen Code der auf eine im Qt Designer erstellte GUI zugreift. In dieser GUI wird ein Graph mit Toolbar erstellt. Wie könnte ich nun zum Beispiel Achsennamen oder anders einfügen?

Code: Alles auswählen

from PyQt5.uic import loadUiType

from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import ( FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
import sys
from PyQt5 import QtGui, QtCore, QtWidgets
import numpy as np
import matplotlib.pyplot as plt
# Gui aus der anderen Datei importieren
Ui_MainWindow, QMainWindow = loadUiType('window.ui.ui')

class Main(QMainWindow, Ui_MainWindow):
    def __init__(self, ):
        super(Main, self).__init__()
        self.setupUi(self)
 
    def addmpl(self, fig):
        self.canvas = FigureCanvas(fig)
        self.mplvl.addWidget(self.canvas)
        self.canvas.draw()
        self.toolbar = NavigationToolbar(self.canvas, self.mplfigs, coordinates=True)
        self.mplvl.addWidget(self.toolbar)
                


# nur wenn das Programm direkt abgerufen wird  
if __name__ == '__main__':
    
    
    fig1= Figure()
    ax1f1 = fig1.add_subplot(111)
    ax1f1.plot(np.random.rand(100))
    
    
  

# GUI öffnen 
    app = QtWidgets.QApplication(sys.argv) # startet die Gui-Loop
    main = Main() #benutzerdefinierte Anwendung erstellen
    main.addmpl(fig1) # fügt Graphen hinzu
    main.show() # öffnet die Gui
    sys.exit(app.exec_()) # schließt alles
	

einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Laura98
User
Beiträge: 17
Registriert: Sonntag 3. Juni 2018, 09:59

vielen dank hab ich nach dem posten auch rausbekommen :)
ich habe nun noch einen button in die GUI eingefügt, weißt du wie ich dem eine Funktion zuordnen kann ?
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Laura98
User
Beiträge: 17
Registriert: Sonntag 3. Juni 2018, 09:59

habe ein neue Probleme, und zwar habe ich nun eine checkbox die ein Hilfsgitter im Graph erzeugt, dies funktioniert auch allerdings nur wenn ich das Fenster einmal minimiere oder maximiere, ich schätze es fehlt eine update funktion.
Zweites Problem ist, dass ich einen Load Button besitze, damit öffne ich eine csv-Datei in dieser sind Zahlenwerte und diese sollen dann die Werte der Y-Achse sein. Dies funktioniert leider nicht lasse ich mir nur das "s" printen, sehe ich meine Werte er überträgt sie nur nicht in den Graph
hier mein aktueller Code

Code: Alles auswählen

from PyQt5.uic import loadUiType

from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import ( FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
import sys
from PyQt5 import QtGui, QtCore, QtWidgets
import numpy as np
import matplotlib.pyplot as plt
# Gui aus der anderen Datei importieren
QMainWindow, Ui_MainWindow = loadUiType('window.ui')

class Main(QMainWindow, Ui_MainWindow):
	
    def __init__(self, ):
        super(Main, self).__init__()
        self.setupUi(self)
        self.checkBoxRaster.clicked.connect(self.raster)
        self.pushButtonLaden.clicked.connect(self.laden)
 
    def addmpl(self, fig,):
        self.canvas = FigureCanvas(fig)
        self.mplvl.addWidget(self.canvas)
        self.canvas.draw()
        self.toolbar = NavigationToolbar(self.canvas, self.mplwindow, coordinates=True)
        self.mplvl.addWidget(self.toolbar)

    def raster(self):
        axis.grid(True)
        

    def laden(self):
        filename = QtWidgets.QFileDialog.getOpenFileName(filter = "(*.csv)")[0]
        d = open(filename, 'r')
        s = d.read()
        print(s)
          
        
        

# nur wenn das Programm direkt abgerufen wird  
if __name__ == '__main__':
    
    fig1= Figure()
    x = list(range(1,8))
    y = [1, 4, 6, 3, 5, 2, 7]
    axis = fig1.add_subplot(111)
    axis.plot(x, y)
    axis.set_xlabel('Wellenlänge in nm')
    axis.set_ylabel('Transmission')   
        	
    

    
        
        
    
         

       
		

        
# GUI öffnen 
    app = QtWidgets.QApplication(sys.argv) # startet die Gui-Loop
    main = Main() #benutzerdefinierte Anwendung erstellen
    main.addmpl(fig1) # fügt Graphen hinzu
    main.show() # öffnet die Gui
    sys.exit(app.exec_()) # schließt alles
	

Dankeschön :)
Antworten