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()
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)
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)
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)
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)
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)
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)
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)
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)
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
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)
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)
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)
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
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)