예제 #1
0
파일: UI.py 프로젝트: CrystalCake/FeedBecky
    def showBewertungsScreen(self, bewertungen, maxWert):
        # Andere Fenster schließen
        self.LoginWindow.close()
        self.VorlesungWindow.close()

        # Vorlesungsfenster erstellen
        self.BewertungsWindow.setMinimumHeight(480)
        self.BewertungsWindow.setMinimumWidth(800)
        self.BewertungsWindow.showFullScreen()

        #Layout festlegen
        layout = QtWidgets.QGridLayout()

        #Sets erstellen (unterteilt nach Noten)
        self.set = QtChart.QBarSet('Gut')
        self.set1 = QtChart.QBarSet('Okay')
        self.set2 = QtChart.QBarSet('Zu Langsam')
        self.set3 = QtChart.QBarSet('Zu Schnell')
        self.set4 = QtChart.QBarSet('Zu Kompliziert')

        self.set.append(bewertungen[0])
        self.set1.append(bewertungen[1])
        self.set2.append(bewertungen[2])
        self.set3.append(bewertungen[3])
        self.set4.append(bewertungen[4])

        #Einzelne Graphen erstellen und mit Sets verknüpfen
        self.series = QtChart.QBarSeries()
        self.series.append(self.set)
        self.series.append(self.set1)
        self.series.append(self.set2)
        self.series.append(self.set3)
        self.series.append(self.set4)

        #Chart initialiseren und Start Animation festlegen
        self.chart = QtChart.QChart()
        self.chart.addSeries(self.series)
        self.chart.setTitle("Bewertungen")
        self.chart.setAnimationOptions(QtChart.QChart.SeriesAnimations)

        #Achsen erstellen und formatieren
        achseX = QtChart.QBarCategoryAxis()
        achseY = QtChart.QValueAxis()
        achseY.setRange(0, maxWert)

        #Ansicht zusammenstellen und anzeigen
        self.chart.addAxis(achseX, QtCore.Qt.AlignBottom)
        self.chart.addAxis(achseY, QtCore.Qt.AlignLeft)
        self.chart.legend().setVisible(True)
        self.chart.legend().setAlignment(QtCore.Qt.AlignBottom)
        chartView = QtChart.QChartView(self.chart)
        layout.addWidget(chartView)
        self.BewertungsWindow.setLayout(layout)
        self.BewertungsWindow.show()

        self.logikReThread = LogikRestart()
        self.logikReThread.signalRestart.connect(self.showLoginScreen)
        self.logikReThread.start()
예제 #2
0
    def setInvers(self):
        image = self.imageName
        buffer = QtCore.QBuffer()
        buffer.open(QtCore.QBuffer.ReadWrite)
        image.save(buffer, "JPG")
        pil_im = Image.open(io.BytesIO(buffer.data()))
        pil_im.convert('RGB')
        width, height = pil_im.size

        data = []
        for i in range(256):
            data.append(0)

        for i in range(width):
            for j in range(height):
                r, g, b, a = QtGui.QColor(image.pixel(i, j)).getRgb()
                xb = 255 - r
                data[xb] += 1
                image.setPixel(i, j, QtGui.QColor(xb, xb, xb, a).rgb())

        dataChart = QtChart.QBarSet("Count")
        dataChart.setColor(QtCore.Qt.black)
        for i in range(256):
            dataChart << data[i]

        self.showImage(QtGui.QPixmap.fromImage(image))
        self.showHistogram(dataChart)
예제 #3
0
 def __init__(self):
     super(BarStackChart, self).__init__()
     self.chart = QtChart.QChart()
     self.chart.setAnimationOptions(QtChart.QChart.SeriesAnimations)  # 动态渲染
     self.x_category = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
     series_names = ['视频广告', '直接访问', '搜索引擎']
     series = QtChart.QBarSeries()
     for name in series_names:
         bar = QtChart.QBarSet(name)
         for _ in range(len(self.x_category)):
             bar.append(random.randint(1, 101))
         series.append(bar)
         # 鼠标悬停信号
         bar.hovered.connect(self.bar_hovered)
     self.chart.addSeries(series)
     self.chart.createDefaultAxes()
     # 设置x轴
     axis_x = QtChart.QBarCategoryAxis()
     axis_x.append(self.x_category)
     self.chart.setAxisX(axis_x, series)
     # 设置图例
     legend = self.chart.legend()
     legend.setCursor(Qt.PointingHandCursor)  # 鼠标悬停图例为手形
     for marker in legend.markers():
         # 点击事件
         marker.clicked.connect(self.legend_clicked)
         # 悬停事件
         marker.hovered.connect(self.legend_hovered)
     self.setChart(self.chart)
예제 #4
0
    def __init__(self, parent):
        super().__init__()
        self.chart = qtch.QChart()
        self.setChart(self.chart)
        self.series = qtch.QBarSeries()
        self.series.setBarWidth(1)
        self.chart.addSeries(self.series)
        self.chart.legend().setVisible(False)
        self.chart.setContentsMargins(-10, -10, -10, -10)
        self.bar_set = qtch.QBarSet('')
        self.series.append(self.bar_set)

        self.bar_set.append(20)

        self.x_axis = qtch.QBarCategoryAxis()

        self.x_axis.setVisible(False)
        self.chart.setAxisX(self.x_axis)
        self.series.attachAxis(self.x_axis)

        self.y_axis = qtch.QValueAxis()

        self.y_axis.setRange(0, 100)
        self.y_axis.setTickCount(5)
        self.y_axis.setVisible(False)
        self.chart.setAxisY(self.y_axis)
        self.series.attachAxis(self.y_axis)

        self.series.setLabelsVisible(True)
        self.chart.layout().setContentsMargins(0, 0, 0, 0)
        self.chart.setTheme(qtch.QChart.ChartThemeDark)
        self.setMinimumSize(10, 50)

        self.setParent(parent)
예제 #5
0
    def getChart(self, lessonname, data):
        series = QtChart.QStackedBarSeries()
        for key, name, color, brush in zip(
            [self.PASS, self.FAIL], ["pass", "fail"], ["green", "red"],
            [QtCore.Qt.Dense1Pattern, QtCore.Qt.Dense2Pattern]):
            barset = QtChart.QBarSet(name)
            barset.append([d[key] for d in data])
            barset.setBrush(QtGui.QBrush(QtGui.QColor(color), brush))
            barset.setLabel(name)
            series.append(barset)

        series.setLabelsFormat("@value%")
        series.setLabelsVisible(True)

        chart = QtChart.QChart()
        chart.addSeries(series)
        chart.setTitle(lessonname)
        chart.setAnimationOptions(QtChart.QChart.SeriesAnimations)

        categories = [d["name"] for d in data]

        axis = QtChart.QBarCategoryAxis()
        axis.append(categories)

        chart.setAxisX(axis, series)

        axis = QtChart.QValueAxis()
        axis.setMax(100)
        axis.setMin(0)
        chart.setAxisY(axis)

        chart.legend().setVisible(True)
        return chart
    def __init__(self):
        super().__init__()
        # Create chart
        chart = qtch.QChart(title=self.chart_title)
        self.setChart(chart)

        # Create series
        series = qtch.QBarSeries()
        chart.addSeries(series)

        # add bar sets
        bar_set = qtch.QBarSet('Percent Used')
        series.append(bar_set)

        # Get the data
        partitions = []
        for part in psutil.disk_partitions():
            if 'rw' in part.opts.split(','):
                partitions.append(part.device)
                usage = psutil.disk_usage(part.mountpoint).percent
                bar_set.append(usage)

        # Create Axis
        x_axis = qtch.QBarCategoryAxis()
        x_axis.append(partitions)
        chart.setAxisX(x_axis)
        series.attachAxis(x_axis)
        y_axis = qtch.QValueAxis()
        y_axis.setRange(0, 100)
        chart.setAxisY(y_axis)
        series.attachAxis(y_axis)

        # Add labels
        series.setLabelsVisible(True)
예제 #7
0
 def createChart(
     self
 ):  # function to create a barchart similar to a time series, with each bar showing each year 1 - 10 payback value
     tech = self.Tech.currentText()
     series = QtChart.QBarSeries()
     chart = QtChart.QChart()
     axis = QtChart.QBarCategoryAxis(chart)
     categories = [
         cat for cat in self.data.columns.values.tolist() if 'year' in cat
     ]
     set0 = QtChart.QBarSet('Payback')
     list0 = list()
     for cat in categories:
         list0.append(self.data.at[tech, cat])
     set0.append(list0)
     series.append(set0)
     #list0.clear()
     #roicategories = [cat for cat in self.data.columns.values.tolist() if 'roi' in cat]
     #set1 = QtChart.QBarSet('ROI')
     #for cat in roicategories:
     #list0.append(self.data.at[tech, cat])
     #set1.append(list0)
     #series.append(set1)
     series.setLabelsVisible()
     chart.addSeries(series)
     axis.append(categories)
     chart.createDefaultAxes()
     chart.setAxisX(axis, series)
     self.chartView.setChart(chart)
예제 #8
0
    def setContrast(self):
        image = self.imageName
        contrastValue = float(self.value_contrast.text())
        buffer = QtCore.QBuffer()
        buffer.open(QtCore.QBuffer.ReadWrite)
        image.save(buffer, "JPG")
        pil_im = Image.open(io.BytesIO(buffer.data()))
        pil_im.convert('RGB')
        width, height = pil_im.size

        data = []
        for i in range(256):
            data.append(0)

        for i in range(width):
            for j in range(height):
                r, g, b, a = QtGui.QColor(image.pixel(i, j)).getRgb()
                # xb = int(contrastValue*r)
                xb = int(128 - r)
                if (xb < 0):
                    xb = 0
                if (xb > 255):
                    xb = 255
                data[xb] += 1
                image.setPixel(i, j, QtGui.QColor(xb, xb, xb, a).rgb())

        dataChart = QtChart.QBarSet("Count")
        dataChart.setColor(QtCore.Qt.black)
        for i in range(256):
            dataChart << data[i]

        self.showImage(QtGui.QPixmap.fromImage(image))
        self.showHistogram(dataChart)
예제 #9
0
 def __init__(self, zones, widget, unit_system):
     """Create a histogram."""
     series = QtChart.QBarSeries()
     bar_set = QtChart.QBarSet("", series)
     series.append(bar_set)
     series.setBarWidth(1)
     super().__init__([series], widget, unit_system)
     self.set_zones(zones)
예제 #10
0
    def update_data(self):
        
        '''
        Updates the data in the graph when the filter is applied.
        '''

        self.series.clear()
        self.pieseries.clear()

        todate =  (self.to_date.date().toString('yyyy-MM-dd'))
        fromdate = (self.from_date.date().toString('yyyy-MM-dd'))

        self.df = pd.read_csv('test.csv')
        self.days = pd.date_range(start= todate,end=fromdate)

        x = [i for i in self.df['Date'] if i in self.days]
        self.temp_list = sorted(list(set(x)))
        
        income =  [sum(self.df.loc[(self.df['Date'] == i) & (self.df['Transaction Type'] == 'Sell'),'Total Price']) for i in self.temp_list] 
        expense = [sum(self.df.loc[(self.df['Date'] == i) & (self.df['Transaction Type'] == 'Buy' ),'Total Price']) for i in self.temp_list]
        
        
        piecount = len(self.c._data)
        item_list = self.c._data
        
        for i in range(piecount):
            item_name = item_list[i]
            item_sold = [sum(self.df.loc[(self.df['Date'] == i ) & (self.df['Transaction Type'] == 'Buy') & (self.df[' Product ']== item_name),
                ' Amount (kg) ']) for i in self.temp_list]
            
            slice_ = qtch.QPieSlice(item_list[i],sum(item_sold))
            self.pieseries.append(slice_)


        categories = self.temp_list  # x axis   
        
        Income = qtch.QBarSet("Income") # dataset in the bar 
        Expense = qtch.QBarSet("Expense") # dateset

        Income.append(income) 
        Expense.append(expense)
        
        self.series.append(Income)      
        self.series.append(Expense)     
        
        self.axis.append(categories)        
예제 #11
0
    def get_graph_point(self):
        """ Get the required data from database to generate the graph points.
        """
        bar_set_1 = QtChart.QBarSet("Good")
        color = QtGui.QColor("green")
        bar_set_1.setColor(color)
        bar_set_2 = QtChart.QBarSet("Bad")
        color = QtGui.QColor(255, 60, 60)
        bar_set_2.setColor(color)

        selected_sku = str(self.sku_combobox.currentText())

        for index in range(len(constants.TIME_VALUES) - 1):
            good_value = len(database_queries.get_sku_id(selected_sku, "Good", constants.TIME_VALUES[index],
                                                         constants.TIME_VALUES[index + 1]))
            bad_value = len(database_queries.get_sku_id(selected_sku, "Bad", constants.TIME_VALUES[index],
                                                        constants.TIME_VALUES[index + 1]))
            bar_set_1.append(good_value)
            bar_set_2.append(bad_value)

        return bar_set_1, bar_set_2
예제 #12
0
    def updateChart(self, dicts, labels):
        self.sets = []
        for dict, label in zip(dicts, labels):
            self.sets.append(qtchart.QBarSet(label))
            for key in dict:
                self.sets[-1].append(dict[key])
        barSeries = qtchart.QHorizontalStackedBarSeries()
        barSeries.setLabelsVisible(False)
        barSeries.setBarWidth(0.2)
        for set in self.sets:
            barSeries.append(set)
        self.chart.removeAllSeries()
        self.chart.addSeries(barSeries)

        categories = list(dicts[0])
        self.barAxisCat.setCategories(categories)
        barSeries.attachAxis(self.barAxisCat)
예제 #13
0
    def display_color_data(self, arr):
        series = QtChart.QBarSeries()
        for name, c, col in zip(self.color_names, self.color_reference, arr):
            s = QtChart.QBarSet(name)
            s << col
            s.setColor(QtGui.QColor(c[0], c[1], c[2]))
            series.append(s)

        chart = QtChart.QChart()
        chart.addSeries(series)
        chart.setTitle("Color distribution")
        chart.legend()
        axis = QtChart.QValueAxis()
        axis.setRange(0, max(arr))
        chart.addAxis(axis, QtCore.Qt.AlignLeft)

        series.attachAxis(axis)
        self.setChart(chart)
예제 #14
0
    def __init__(self):
        super().__init__()
        chart = qtch.QChart(title=self.chart_title)
        self.setChart(chart)
        series = qtch.QBarSeries()
        chart.addSeries(series)
        bar_set = qtch.QBarSet('Percent Used')
        series.append(bar_set)

        partitions = []

        bar_set.append(20)

        x_axis = qtch.QBarCategoryAxis()
        x_axis.append(partitions)
        chart.setAxisX(x_axis)
        series.attachAxis(x_axis)

        y_axis = qtch.QValueAxis()
        y_axis.setRange(0, 100)
        chart.setAxisY(y_axis)
        series.attachAxis(y_axis)
        series.setLabelsVisible(True)
예제 #15
0
 def add_chart(self, weights, colors, type="bar"):
     if not hasattr(self, 'axisX'):
         self.axisX = QtChart.QBarCategoryAxis()
         for n in range(len(weights)):
             self.axisX.append("<span style=\"color: " + colors[n] +
                               ";\">{}</span>".format(n + 1))
         self.axisY = QtChart.QValueAxis()
         self.axisX.setTitleText("Components")
         self.axisY.setTitleText("Weight (%)")
         self.axisY.setRange(0, 100)
         self.axisX.setLabelsFont(
             QtGui.QFont(self.fontname, self.fontsize, 57))
         self.axisX.setTitleFont(
             QtGui.QFont(self.fontname, self.fontsize, 57))
         self.axisY.setLabelsFont(
             QtGui.QFont(self.fontname, self.fontsize, 57))
         self.axisY.setTitleFont(
             QtGui.QFont(self.fontname, self.fontsize, 57))
         self.barChart.addAxis(self.axisX, QtCore.Qt.AlignBottom)
         self.barChart.addAxis(self.axisY, QtCore.Qt.AlignLeft)
     elif len(weights) != self.ncomp:
         self.axisX.clear()
         for n in range(len(weights)):
             self.axisX.append("<span style=\"color: " + colors[n] +
                               ";\">{}</span>".format(n + 1))
     self.ncomp = len(weights)
     self.barChart.removeAllSeries()
     series = QtChart.QBarSeries()
     barset = QtChart.QBarSet("Weight")
     for n in range(self.ncomp):
         barset.append(weights[n] * 100)
     series.append(barset)
     self.barChart.addSeries(series)
     series.attachAxis(self.axisX)
     series.attachAxis(self.axisY)
     self.CHART_IS_PRESENT = True
예제 #16
0
    def __init__(self):
        super().__init__()

        ################
        # Create Chart #
        ################

        # Create qchart object
        chart = qtch.QChart(title=self.chart_title)
        self.setChart(chart)

        # Setup series
        series = qtch.QStackedBarSeries()
        chart.addSeries(series)
        self.phys_set = qtch.QBarSet("Physical")
        self.swap_set = qtch.QBarSet("Swap")
        series.append(self.phys_set)
        series.append(self.swap_set)

        # Setup Data
        self.data = deque([(0, 0)] * self.num_data_points,
                          maxlen=self.num_data_points)
        for phys, swap in self.data:
            self.phys_set.append(phys)
            self.swap_set.append(swap)

        # Setup Axes
        x_axis = qtch.QValueAxis()
        x_axis.setRange(0, self.num_data_points)
        x_axis.setLabelsVisible(False)
        y_axis = qtch.QValueAxis()
        y_axis.setRange(0, 100)
        chart.setAxisX(x_axis, series)
        chart.setAxisY(y_axis, series)

        # Start refresh timer
        self.timer = qtc.QTimer(interval=1000, timeout=self.refresh_stats)
        self.timer.start()

        ###################
        # Style the chart #
        ###################
        chart.setAnimationOptions(qtch.QChart.AllAnimations)

        chart.setAnimationEasingCurve(
            qtc.QEasingCurve(qtc.QEasingCurve.OutBounce))
        chart.setAnimationDuration(1000)

        # Add shadow around the chart area
        chart.setDropShadowEnabled(True)

        # Set the theme
        chart.setTheme(qtch.QChart.ChartThemeBrownSand)

        # Configure a background brush
        gradient = qtg.QLinearGradient(chart.plotArea().topLeft(),
                                       chart.plotArea().bottomRight())
        gradient.setColorAt(0, qtg.QColor("#333"))
        gradient.setColorAt(1, qtg.QColor("#660"))
        chart.setBackgroundBrush(qtg.QBrush(gradient))

        # Background Pen draws a border around the chart
        chart.setBackgroundPen(qtg.QPen(qtg.QColor('black'), 5))

        # Set title font and brush
        chart.setTitleBrush(qtg.QBrush(qtc.Qt.white))
        chart.setTitleFont(qtg.QFont('Impact', 32, qtg.QFont.Bold))

        # Set axes fonts and brushes
        axis_font = qtg.QFont('Mono', 16)
        axis_brush = qtg.QBrush(qtg.QColor('#EEF'))
        y_axis.setLabelsFont(axis_font)
        y_axis.setLabelsBrush(axis_brush)

        # Grid lines
        grid_pen = qtg.QPen(qtg.QColor('silver'))
        grid_pen.setDashPattern([1, 1, 0, 1])
        x_axis.setGridLinePen(grid_pen)
        y_axis.setGridLinePen(grid_pen)
        y_axis.setTickCount(11)

        #Shades
        y_axis.setShadesVisible(True)
        y_axis.setShadesColor(qtg.QColor('#884'))

        # Styling the legend
        legend = chart.legend()

        # Background
        legend.setBackgroundVisible(True)
        legend.setBrush(qtg.QBrush(qtg.QColor('white')))

        # Font
        legend.setFont(qtg.QFont('Courier', 14))
        legend.setLabelColor(qtc.Qt.darkRed)

        # Markers
        legend.setMarkerShape(qtch.QLegend.MarkerShapeCircle)
 def showChart(
     self
 ):  # function to show the chart of data of user selected tech and attribute on QChartView
     file1 = self.techselector1.currentText()
     current_building1, current_tech1 = file1.split(' - ')
     current_buildingI1, current_buildingI2, current_techI1, current_techI2 = 0, 0, 0, 0
     for index, file in enumerate(self.fl):
         if file.building_name == current_building1:
             current_buildingI1 = index
     file2 = self.techselector2.currentText()
     current_building2, current_tech2 = file2.split(' - ')
     for index, file in enumerate(self.fl):
         if file.building_name == current_building2:
             current_buildingI2 = index
     att = self.attselector.currentText(
     )  # assign user selected texts from drop down lists to parameters
     series = QtChart.QBarSeries(
     )  # the lines below creates the bar chart with the 2 tech selected as the categories (x-axis) with data from
     chart = QtChart.QChart(
     )  # filelist dfSumDiff (summary of sum of each attributes in all dataframes)
     axis = QtChart.QBarCategoryAxis(chart)
     categories = [file1, file2]
     if att != 'Sum':
         set0 = QtChart.QBarSet(
             att
         )  # use only the user-specified attribute sum value attained from dataframe as one set of bars
         set0.append([
             self.fl[current_buildingI1].dfSumDiff.at[file1, att],
             self.fl[current_buildingI2].dfSumDiff.at[file2, att]
         ])
         series.append(set0)
     else:
         for cat in self.cl.cl:  # add different set of bars for different category total
             set0 = QtChart.QBarSet(att + '(' + cat.name + ')')
             df_temp = self.fl[current_buildingI1].dfSumDiff[
                 self.fl[current_buildingI1].dfSumDiff.columns.intersection(
                     cat.members)]
             if current_buildingI1 != current_buildingI2:
                 df_temp = df_temp.append(
                     self.fl[current_buildingI2].dfSumDiff[self.fl[
                         current_buildingI2].dfSumDiff.columns.intersection(
                             cat.members)])
             if cat.name != 'Cooling load':
                 df_temp = df_temp.T.append(df_temp.loc[:, [
                     col for col in df_temp.columns if 'DX' not in col
                 ]].sum(axis='columns').to_frame(
                 ).T)  # add the sum of the category as a new column
             else:
                 df_temp = df_temp.T.append(df_temp.loc[:, [
                     'Ap Sys chillers load (kWh)',
                     'ApHVAC chillers load (kWh)'
                 ]].sum(axis='columns').to_frame().T)
             df_temp.rename({0: 'Sum'}, axis='index', inplace=True)
             df_temp = df_temp.T
             set0.append(
                 [df_temp.at[file1, 'Sum'], df_temp.at[file2, 'Sum']])
             series.append(set0)
     series.setLabelsVisible()
     chart.addSeries(series)
     axis.append(categories)
     chart.createDefaultAxes()
     chart.setAxisX(axis, series)
     self.chartView.setChart(chart)