Wir müssen für ein Projekt ein GUI erstellen, das zwei Datensätze grafisch darstellt. Wir haben mit dem pandas-Modul das gewünschte Diagramm erstellt, müssen dieses aber noch mit dem GUI verknüpfen, kann uns jemand hier weiterhelfen?
Code für das Diagramm:
Code: Alles auswählen
import pandas as pd
from pandas import DataFrame
from matplotlib import pyplot as plt
import datetime
sample = pd.read_csv("Flugbewegungen.csv", delimiter = ";", parse_dates=True )
headers_names = ["Ozon_höchstes_Stundenmittel", "Stickstoffdioxid","Feinstaub PM10"]
headers_names1 =["a","b"]
data = pd.read_csv('http://ogd.zueriluft.ch/api/v1/d1.csv'
,header = None , delimiter=";", encoding = "latin1",skiprows = 6)
data1 = data[::-1]
data1 = data1.reset_index(drop=True)
sample1 = sample
#print (sample1)
sample1["O3_max_h1"] = data1[1]
sample1 = sample1[pd.notnull(sample1['O3_max_h1'])]
x = sample1.Datum
y1 = sample1.Gesamt
y2 = sample1.O3_max_h1
fig, ax1 = plt.subplots()
color = 'tab:red'
ax1.set_xlabel('Datum')
ax1.set_ylabel('Flugbewegungen', color=color)
ax1.plot(x, y1, color=color)
ax1.tick_params(axis='y', labelcolor=color)
ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis
color = 'tab:blue'
ax2.set_ylabel('Ozon, höchstes Stundenmittel', color=color) # we already handled the x-label with ax1
ax2.plot(x, y2, color=color)
ax2.tick_params(axis='y', labelcolor=color)
#fig.tight_layout() # otherwise the right y-label is slightly clipped
plt.show()
Code für das GUI:
Code: Alles auswählen
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(1400, 1100)
Dialog.setMaximumSize(QtCore.QSize(1400, 1100))
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(1050, 1060, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.groupBox = QtWidgets.QGroupBox(Dialog)
self.groupBox.setGeometry(QtCore.QRect(30, 80, 311, 241))
self.groupBox.setObjectName("groupBox")
self.checkBox = QtWidgets.QCheckBox(self.groupBox)
self.checkBox.setGeometry(QtCore.QRect(20, 60, 161, 29))
self.checkBox.setObjectName("checkBox")
self.checkBox_2 = QtWidgets.QCheckBox(self.groupBox)
self.checkBox_2.setGeometry(QtCore.QRect(20, 100, 161, 29))
self.checkBox_2.setObjectName("checkBox_2")
self.groupBox_2 = QtWidgets.QGroupBox(Dialog)
self.groupBox_2.setGeometry(QtCore.QRect(50, 380, 281, 231))
self.groupBox_2.setObjectName("groupBox_2")
self.pushButton = QtWidgets.QPushButton(self.groupBox_2)
self.pushButton.setGeometry(QtCore.QRect(10, 40, 191, 46))
self.pushButton.setObjectName("pushButton")
self.dateEdit_Ende = QtWidgets.QDateEdit(Dialog)
self.dateEdit_Ende.setGeometry(QtCore.QRect(50, 890, 201, 101))
self.dateEdit_Ende.setObjectName("dateEdit_Ende")
self.dateEdit_Start = QtWidgets.QDateEdit(Dialog)
self.dateEdit_Start.setGeometry(QtCore.QRect(50, 740, 201, 91))
self.dateEdit_Start.setObjectName("dateEdit_Start")
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(50, 690, 211, 41))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(Dialog)
self.label_3.setGeometry(QtCore.QRect(50, 850, 211, 41))
self.label_3.setObjectName("label_3")
self.widget_plot = QtWidgets.QWidget(Dialog)
self.widget_plot.setGeometry(QtCore.QRect(370, 50, 1011, 781))
self.widget_plot.setStyleSheet("background-color: rgb(255, 255, 255);")
self.widget_plot.setObjectName("widget_plot")
self.gridLayoutWidget = QtWidgets.QWidget(self.widget_plot)
self.gridLayoutWidget.setGeometry(QtCore.QRect(9, 9, 991, 761))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.Layout_plot = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.Layout_plot.setContentsMargins(0, 0, 0, 0)
self.Layout_plot.setSpacing(0)
self.Layout_plot.setObjectName("Layout_plot")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
Dialog.setTabOrder(self.checkBox, self.pushButton)
Dialog.setTabOrder(self.pushButton, self.dateEdit_Start)
Dialog.setTabOrder(self.dateEdit_Start, self.dateEdit_Ende)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.groupBox.setTitle(_translate("Dialog", "GroupBox_ Art Verschmutzung"))
self.checkBox.setText(_translate("Dialog", "Schadstoff 1"))
self.checkBox_2.setText(_translate("Dialog", "Flugbewegungen"))
self.groupBox_2.setTitle(_translate("Dialog", "GroupBox_Ort"))
self.pushButton.setText(_translate("Dialog", "Stampfenbachstr."))
self.label_2.setText(_translate("Dialog", "Startdatum"))
self.label_3.setText(_translate("Dialog", "Enddatum"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
Vielen Dank für eure Hilfe im Voraus!