def __init__(self, parent): super().__init__(parent) self.ui = Ui_statistics_window() self.ui.setupUi(self) self.genre_series = QPieSeries() self.author_series = QPieSeries() self.status_series = QPieSeries() self.createChart('Book percentages genre', self.genre_series) self.createChart('Book percentages author', self.author_series) self.createChart('Book percentages status', self.status_series) self.show()
def __init__(self, parent): super().__init__(parent) self.ui = Ui_statistics_window() self.ui.setupUi(self) self.genre_series = QPieSeries() self.filmDirector_series = QPieSeries() self.status_series = QPieSeries() self.createChart('Movie percentages genre', self.genre_series) self.createChart('Movie percentages film director', self.filmDirector_series) self.createChart('Movie percentages status', self.status_series) self.show()
def addSeries(self, key): self.chart.removeAllSeries() self.series = QPieSeries() self.series.setHoleSize(0.35) #Show chartview only if the content length is less than 6. Otherwise show a table view if len(self.data[key]) < 6: for key, value in self.data[key].items(): slice_ = QPieSlice(str(key), value) self.series.append(slice_) for slice in self.series.slices(): slice.setLabel(slice.label()) self.chart.addSeries(self.series) self.frame.frame.hide() self.chart.show() else: for m, item in self.data[key].items(): print(m, item) self.table = TableView(self.data[key], len(self.data[key]), 1) if self.frame.ly.count() > 0: self.frame.ly.itemAt(0).widget().setParent(None) self.frame.ly.addWidget(self.table) self.frame.frame.show() self.chart.hide() self.series.doubleClicked.connect(self.handle_double_clicked)
def create_donutchart(self, chartKey): series = QPieSeries() series.setHoleSize(0.35) for key, value in sample[chartKey].items(): series.append(key, value) slice = QPieSlice() chart = QChart() #chart.legend().hide() chart.addSeries(series) # for the background and title chart.setAnimationOptions(QChart.SeriesAnimations) chart.setTitle("DonutChart Example") chart.setTheme(QChart.ChartThemeBlueCerulean) chartview = QChartView(chart) chartview.setRenderHint(QPainter.Antialiasing) # creating a widget object widget = QWidget() # Creating a grid layout layout = QGridLayout() # setting this layout to the widget widget.setLayout(layout) self.setCentralWidget(chartview) series.doubleClicked.connect(self.handle_double_clicked)
def input_changed(self, txt): if self.serie in self.chart.series(): self.chart.removeSeries(self.serie) self.serie = QPieSeries() for inp in self.inputs: self.serie.append(inp.name.text(), int(inp.value.text())) self.chart.addSeries(self.serie)
def create_predict_pieseries(self, bots_part): human_part = 1 - bots_part percentage_bots_part = int(round(bots_part * 100)) percentage_human_part = 100 - percentage_bots_part # define the series slices of the pie series = QPieSeries() bot_slice = QPieSlice(f"Bot ({percentage_bots_part}%)", bots_part) human_slice = QPieSlice(f"Human ({percentage_human_part}%)", human_part) font = QFont() font.setBold(True) bot_slice.setColor(QColor("#3498db")) bot_slice.setLabelFont(font) human_slice.setColor(QColor("#a8e6cf")) human_slice.setLabelFont(font) series.append(bot_slice) series.append(human_slice) series.setLabelsVisible(False) series.setLabelsPosition(QPieSlice.LabelInsideHorizontal) series.setPieSize(0.94) return series
def create_piechart(self): today = datetime.date.today() Day = selectday(today) catogeries = Day['allCategory'] catogeries = dict(sorted(catogeries.items(), key=lambda x: -x[1])[:5]) print(f"--------------------{catogeries}--------") series = QPieSeries() tot_val = 0 for name, value in catogeries.items(): tot_val += value tot_val = max(tot_val, 1) for name, value in catogeries.items(): if value == 0: value = 0.2 _slice = series.append(name, 100 * (value / tot_val)) _slice.setLabelVisible(True) # can be removed if unnecessary self.chart = QChart() self.chart.legend().hide() self.chart.addSeries(series) self.chart.createDefaultAxes() self.chart.setAnimationOptions(QChart.SeriesAnimations) self.chart.setTitle("Categories") self.chart.legend().setVisible(True) self.chart.legend().setAlignment(Qt.AlignBottom) self.chartview = QChartView(self.chart) self.chartview.setRenderHint(QPainter.Antialiasing)
def addSeries(self, key): self.chart.removeAllSeries() self.series = QPieSeries() self.series.setHoleSize(0.35) #Show chartview only if the content length is less than 6. Otherwise show a table view if len(self.data[key]) < 6: #print('length',self.data, key) for key, value in self.data[key].items(): print('key, value', key, value) slice_ = QPieSlice(str(key), value) self.series.append(slice_) self.series.setLabelsVisible() self.series.setLabelsPosition(QPieSlice.LabelInsideHorizontal) for slice in self.series.slices(): #slice.setLabel(slice.label()) slice.setLabel(slice.label() + ' - ' + str(slice.value()) + ' B ') self.chart.addSeries(self.series) self.frame.frame.hide() self.chart.show() else: self.table = TableView(self.data[key], len(self.data[key]), 1) if self.frame.ly.count() > 0: self.frame.ly.itemAt(0).widget().setParent(None) self.frame.ly.addWidget(self.table) self.frame.frame.show() self.chart.hide()
def __init__(self): super(MainWindow, self).__init__() ''' Load the UI file from disk (UI file was created in QT Designer) ''' uic.loadUi("mainwindow.ui", self) ''' Create an instance of the database class ''' self.dbase = db.database( ) # Create an instance of the database as self.dbase '''call the Connect method on our new database object (Creates a database connection) ''' self.dbase.Connect() self.conn = self.dbase.getConn() ''' Set up the menubar ''' self.createMenus() self.carsModel = cars.carsModel() setupUI.doSetup(self) self.dbase.populateView(self, "select * from car order by make asc", self.carsModel) mySeries = QPieSeries() mySeries.append("jane", 2) mySeries.append("joe", 8) chart = QChart() chart.addSeries(mySeries) chart.setTitle("Simple piechart example") chart.legend().hide()
def clear(self): self.__chart = QChart() self.setChart(self.__chart) self.chart().legend().hide() self.serie = QPieSeries() self.serie.setPieStartAngle(90) self.serie.setPieEndAngle(450)
def addSeries(self, key): self.chart.removeAllSeries() self.series = QPieSeries() print(self.series) self.series.setHoleSize(0.35) print('chart',key) if len(sampleData[key]) == 2: for key, value in sampleData[key].items(): #print("adding series", str(key), value) slice_ = QPieSlice(str(key), value) self.series.append(slice_) self.chart.addSeries(self.series) #self.frame.frame.hide() #self.frame.frame.removeWidget(self.table) self.frame.frame.hide() self.chart.show() else: print('hi') self.table = TableView(data, 5, 4) if self.frame.ly.count() == 0: self.frame.ly.addWidget(self.table) self.frame.frame.show() self.chart.hide() #print(frame) print('parent', self.parent())
def process(self): ''' Processes Summary and Chart Data ''' self.summary = { 'AtkCount': self.data.loc['IsAtk'].value_counts() [1], # count number of 1s in the column 'IP': self.data.loc['IP'].value_counts().to_dict(), 'Protocol': self.data.loc['Protocol'].value_counts().to_dict(), 'Port': self.data.loc['Port'].value_counts(), 'Atk': self.data.loc['Atk'].value_counts(), } # process piechart data series = QPieSeries() for atk, val in self.summary['Atk'].items(): series.append(str(atk), int(val)) self.series = series # process top protocol data self.protoports = self.data.transpose().groupby(["Protocol", "Port" ]).size().to_dict() self.protoports = { str(key[0]) + ':' + str(key[1]): value for key, value in self.protoports.items() } # create dictionary with key of format "protocol:port" # process barchart data self.bardata = self.data.transpose() self.bardata = pd.to_datetime(self.bardata['Time'], unit='s') self.bardata = self.bardata.groupby( [self.bardata.dt.year, self.bardata.dt.month])
def chart(self): self.pieseries = QPieSeries() # 定义PieSeries self.pieseries.append("正常程序", 0.1) # 插入第一个元素 self.pieseries.append("恶意程序", 0.9) self.slice = self.pieseries.slices()[0] # 得到饼图的某一个元素切片,在这取得为第一个 #self.slice.setExploded() # 设置为exploded self.slice.setLabelVisible() # 设置Lable self.slice.setPen(QPen(Qt.darkGreen, 1)) # 设置画笔类型 self.slice.setBrush(Qt.green) # 设置笔刷 self.slice1 = self.pieseries.slices()[1] # 得到饼图的某一个元素切片,在这取得为第一个 self.slice1.setExploded() # 设置为exploded self.slice1.setLabelVisible() # 设置Lable self.slice1.setPen(QPen(Qt.darkRed, 1)) # 设置画笔类型 self.slice1.setBrush(Qt.red) # 设置笔刷 self.chart = QChart() # 定义QChart self.chart.addSeries(self.pieseries) # 将 pieseries添加到chart里 self.chart.setTitle("恶意程序预测结果饼状图") # 设置char的标题 self.chart.legend().hide() # 将char的legend设置为隐藏 self.charview = QChartView( self.chart, self.left_down_widget ) # 定义charView窗口,添加chart元素,设置主窗口为父窗体,既将chartView嵌入到父窗体 self.charview.setGeometry(0, 0, 800, 500) # 设置charview在父窗口的大小、位置 self.charview.setRenderHint(QPainter.Antialiasing) # 设置抗锯齿 self.charview.show() # 将CharView窗口显示出来
def analyseProcess(self): absc = [] ordo = [] absc.clear() ordo.clear() for tabrow in range(self.tableWidget.rowCount()): abscitem = self.tableWidget.item(tabrow, self.comboBoxabsc.currentIndex()) ordoitem = self.tableWidget.item(tabrow, self.comboBoxordo.currentIndex()) absc.append(int(abscitem.text())) ordo.append(str(ordoitem.text())) df = pd.DataFrame({'data': absc}) df.index = ordo df = df.sort_values(by='data', ascending=False) df["cumpercentage"] = df["data"].cumsum() / df["data"].sum() * 100 self.figure.clear() plt.ion() ax = self.figure.add_subplot() ax.bar(df.index, df["data"], color="C0") ax2 = ax.twinx() ax2.plot(df.index, df["cumpercentage"], color="C1", marker="D", ms=7) ax2.yaxis.set_major_formatter(PercentFormatter()) ax.tick_params(axis="y", colors="C0") ax2.tick_params(axis="y", colors="C1") self.canvas.draw() # donutchart*********************************** self.m_donuts = [] self.chartView3.setRenderHint(QPainter.Antialiasing) self.chart3 = self.chartView3.chart() self.chart3.legend().setVisible(True) self.chart3.setTitle("Nested donuts Chart") self.chart3.setAnimationOptions(QChart.AllAnimations) minSize3 = 0.1 maxSize3 = 0.9 donutCount3 = 5 for i in range(donutCount3): donut = QPieSeries() sliceCount = random.randrange(3, 6) # print(sliceCount) for j in range(sliceCount): value3 = random.randrange(0, 50) slice_ = QPieSlice(str(value3), value3) slice_.setLabelVisible(True) slice_.setLabelColor(Qt.white) slice_.setLabelPosition(QPieSlice.LabelInsideTangential) slice_.hovered[bool].connect( functools.partial(self.explodeSlice, slice_=slice_)) donut.append(slice_) donut.setHoleSize(minSize3 + i * (maxSize3 - minSize3) / donutCount3) donut.setPieSize(minSize3 + (i + 1) * (maxSize3 - minSize3) / donutCount3) self.m_donuts.append(donut) self.chartView3.chart().addSeries(donut) self.updateTimer = QTimer(self) self.updateTimer.timeout.connect(self.updateRotation) self.updateTimer.start(1250) self.tabWidget.setCurrentIndex(2)
def clear(self): self._chart = QChart() self.setChart(self._chart) self.setRenderHint(QPainter.Antialiasing) self.data = [] self.serie = QPieSeries() self.serie.setPieStartAngle(90) self.serie.setPieEndAngle(450) self.chart().legend().hide()
def load_slices(self): series = QPieSeries() for i in EXTENSHIONS.keys(): slice = QPieSlice(i, EXTENSHIONS[i][0]) v = EXTENSHIONS[i][1] slice.setPen(QPen(Qt.black, 2)) slice.hovered[bool].connect(functools.partial(self.explodeSlice, slice_=slice, v=v)) series.append(slice) return series
def get_data(self, mark_data): pie_series = QPieSeries() # 定义PieSeries total_area = 0 for j in range(len(mark_data)): total_area += mark_data[j][1] for j in range(len(mark_data)): percentage = mark_data[j][1] / total_area * 100 str1 = "{:.1f}%".format(percentage) + mark_data[j][0] pie_series.append(str1, mark_data[j][1]) return pie_series
def graph_chart(self): series = QPieSeries() for i in range(self.table.rowCount()): text = self.table.item(i, 0).text() val = float(self.table.item(i, 1).text().replace('$', '')) series.append(text, val) chart = QChart() chart.addSeries(series) chart.legend().setAlignment(Qt.AlignTop) self.chartView.setChart(chart)
def get_pie_series(self): """ TODO:订单管理界面点击统计调用该函数,计算订单管理界面当前搜索范围内所有订单 各大类 书的销售额 按以下格式放入 series.append('类别x%', 销售额) """ totals, classes = self.database.stat_2(*self.data) all_total = sum(totals) if all_total: series = QPieSeries() for i in range(len(totals)): if totals[i]: word = (classes[i] + ' %.2f' % (totals[i])) series.append(word, totals[i]) else: series = QPieSeries() series.append('无销售', 1) series.setLabelsVisible() series.setPieSize(0.7) return series
def addSeries(self, key): self.chart.removeAllSeries() self.series = QPieSeries() self.series.setHoleSize(0.35) for key, value in sampleData[key].items(): print("adding series", str(key), value) slice_ = QPieSlice(str(key), value) self.series.append(slice_) self.chart.addSeries(self.series) self.series.doubleClicked.connect(self.handle_double_clicked)
def createChart(self, names, values, title): series = QPieSeries() for name, value in zip(names, values): series.append(name + " " + str(value) + "%", value) chart = QChart() chart.addSeries(series) chart.setAnimationOptions(QChart.SeriesAnimations) chart.setTitle(title) chart.legend().setVisible(True) return chart
def createSummaryBar(self): # self.dp.dfinal series = QPieSeries() labelfont = QFont() labelfont.setPixelSize(11) try: series.append("Linked", len(self.linked.index)) series.append("Unlinked", len(self.unlinked.index)) # slices = QPieSlice() slices1 = series.slices()[1] slices1.setExploded() slices1.setLabelVisible() slices1.setPen(QPen(QColor(0x57B1FD), 2)) slices1.setBrush(QBrush(QColor(0xfdb157))) slices1.setLabelPosition(QPieSlice.LabelOutside) slices1.setLabel( ("{0} {1:.2f}%").format("Unlinked", 100 * slices1.percentage())) slices1.setLabelFont(labelfont) # slices.setPen(QPen(Qt.darkGreen, 2)) # slices.setBrush(QBrush(QColor(0xfdb157))) except AttributeError: self.statusbar.showMessage('Data not ready') series.append("Total", 1) slices = series.slices()[0] slices.setBrush(QBrush(QColor(0x57B1FD))) # slices.setLabel(("%1%").format(100*slices.percentage(), 0, 'f', 1)) # slices.setLabelPosition(QPieSlice.LabelInsideHorizontal) if len(series.slices() ) == 2: # display "linked" label only at data was processed slices.setLabelVisible() slices.setLabel(("{0} {1:.2f}%").format("Linked", 100 * slices.percentage())) slices.setLabelFont(labelfont) chart = QChart() font = QFont() font.setPixelSize(18) chart.setTitleFont(font) chart.addSeries(series) chart.setAnimationOptions(QChart.SeriesAnimations) chart.setTitle("Total") chart.legend().hide() chartView = QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) return chartView
def createUnlinkedBar(self): pushed_bin = 0 slipping_bin = 0 others = 0 try: total_bins = self.total_bins scanner_linked_rfid = self.scanner_linked_rfid unlinked_bins = total_bins - scanner_linked_rfid slipping_bin = len(self.slipping.index) pushed_bin = len(self.pushed.index) others = unlinked_bins-pushed_bin-slipping_bin except AttributeError: self.statusbar.showMessage('Data not ready') series = QPieSeries() series.setHoleSize(0.35) series.append("Pushed", pushed_bin) series.append("Slipping", slipping_bin) series.append("Others", others) slices = series.slices()[0] slices.setLabelVisible() slices.setLabel("{0} {1:.2f}".format("Pushed", 100*slices.percentage())) slices1 = series.slices()[1] slices1.setLabelVisible() slices1.setLabel("{0} {1:.2f}".format("Slipping", 100*slices1.percentage())) # set exploded slice if pushed_bin > slipping_bin: slices.setExploded() else: slices1.setExploded() slices2 = series.slices()[2] slices2.setLabelVisible() slices2.setLabel("{0} {1:.2f}".format("Others", 100*slices2.percentage())) chart = QChart() chart.setTheme(QChart.ChartThemeBlueCerulean) chart.legend().hide() font = QFont() font.setPixelSize(16) chart.setTitleFont(font) chart.setTitle("Unlinked Details") chart.addSeries(series) chart.setAnimationOptions(QChart.SeriesAnimations) chartView = QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) return chartView
def init_ui(self): self.chart = QChart() self.chart.setTheme(QChart.ChartThemeBlueIcy) self.chart.setAnimationDuration(1000) self.chart.setAnimationOptions(QChart.AllAnimations) self.serie = QPieSeries() self.layout = QVBoxLayout() self.layout_inp = QVBoxLayout() self.w_inp = QWidget() self.w_inp.setStyleSheet(""" .QWidget{ background-color: transparent; } """) self.w_inp.setLayout(self.layout_inp) self.setLayout(self.layout) self.inputs.append(InputPieChart(self)) self.btn_add = QPushButton("+") self.btn_remove = QPushButton("-") self.btn_add.clicked.connect(self.add_input) self.btn_remove.clicked.connect(self.remove_input) self.btn_add.setStyleSheet(""" border: 0px; background: green; color: white; """) self.btn_remove.setStyleSheet(""" border: 0px; background: red; color: white; """) self.header = HeaderPieChartInput() self.layout.addWidget(self.header) self.layout.addWidget(self.w_inp) self.layout.addStretch(-1) self.layout.addWidget(self.btn_remove) self.layout.addWidget(self.btn_add) self.layout_inp.addWidget(self.inputs[0]) self.serie.append(self.inputs[0].name.text(), 2) # self.slice.setExploded() # self.slice.setLabelVisible() # self.slice.setPen(QPen(Qt.darkGreen,2)) # self.slice.setBrush(Qt.green) self.chart.addSeries(self.serie) self.chart.setTitle("Pie Chart")
def addSeries(self, key): self.chart.removeAllSeries() self.series = QPieSeries() self.series.setHoleSize(0.35) print('chart',key) for key, value in sampleData[key].items(): #print("adding series", str(key), value) slice_ = QPieSlice(str(key), value) self.series.append(slice_) self.chart.addSeries(self.series)
def getSeries(self): series = QPieSeries() slice0 = series.append('10%', 1) series.append('20%', 2) series.append('70%', 7) # 显示label文字 series.setLabelsVisible() series.setPieSize(0.5) # 使第一块突出显示 slice0.setLabelVisible() slice0.setExploded() # 设置第一块颜色 slice0.setColor(QColor(255, 0, 0, 100)) return series
def create_initialize_pieseries(self): color = QColor("#757a79") # define the series slices of the pie series = QPieSeries() none_slice = QPieSlice("Undefined", 1.0) none_slice.setColor(color) none_slice.setBorderColor(color) series.append(none_slice) series.setLabelsVisible(False) series.setLabelsPosition(QPieSlice.LabelOutside) series.setPieSize(0.94) return series
def create_chart(self): self.chart.setTitle( 'Grafiek aantal externe werken per status - opnameweek ' + jrwk) font = QFont("Sans Serif", 10) font.setWeight(QFont.Bold) self.chart.setTitleFont(font) series = QPieSeries() slice_ = QPieSlice() series.setUseOpenGL(enable=True) series.append('Status A = ' + str(rpr[0][2]), rpr[0][2]) series.append('Status B = ' + str(rpr[1][2]), rpr[1][2]) series.append('Status C = ' + str(rpr[2][2]), rpr[2][2]) series.append('Status D = ' + str(rpr[3][2]), rpr[3][2]) series.append('Status E = ' + str(rpr[4][2]), rpr[4][2]) series.append('Status F = ' + str(rpr[5][2]), rpr[5][2]) series.append('Status G = ' + str(rpr[6][2]), rpr[6][2]) series.append('Status H = ' + str(rpr[7][2]), rpr[7][2]) for i, slice_ in enumerate(series.slices()): slice_.setLabelVisible() #slice_.setLabelPosition(3) if i == 0: slice_.setPen(QPen(Qt.black, 2)) slice_.setBrush(Qt.green) elif i == 1: slice_.setPen(QPen(Qt.black, 2)) slice_.setBrush(Qt.red) elif i == 2: slice_.setExploded() slice_.setPen(QPen(Qt.black, 2)) slice_.setBrush(Qt.yellow) elif i == 3: slice_.setPen(QPen(Qt.black, 2)) slice_.setBrush(Qt.magenta) elif i == 4: slice_.setPen(QPen(Qt.black, 2)) slice_.setBrush(Qt.cyan) elif i == 5: slice_.setPen(QPen(Qt.black, 2)) slice_.setBrush(Qt.blue) elif i == 6: slice_.setPen(QPen(Qt.black, 2)) slice_.setBrush(Qt.darkYellow) elif i == 7: slice_.setPen(QPen(Qt.black, 2)) slice_.setBrush(Qt.darkRed) self.chart.addSeries(series)
def setupSeries(self, mode="all"): """ Chart gets updated displaying the new data. Modes: - all : distribution between all accounts - accs : distribution between portfolio accounts - cryptoaccs : distribution between crypto accounts - strategies : distribution between strategies """ # Series self.chart.removeAllSeries() # Remove any previous series self.series = QPieSeries() # Get data if mode == "all": data = balances.get_all_accounts( ) + cbalances.get_all_accounts_with_amount_fiat() elif mode == "accounts": data = balances.get_all_accounts() elif mode == "crypto": data = cbalances.get_all_accounts_with_amount_fiat() elif mode == "currency": data = [(confighandler.get_fiat_currency().upper(), balances.get_total_balance_all_accounts( )), ("BTC", cbalances.get_total_balance_all_accounts_fiat())] data.sort(key=lambda x: x[1]) # Sort # Set Chart Title self.total = sum([i[1] for i in data]) self.setDefaultTitle() # Add to series for d in data: self.series.append(d[0], d[1]) # Hide little slices' labels self.series.setLabelsVisible(True) for slc in self.series.slices(): if slc.angleSpan() < 5: slc.setLabelVisible(False) slc.setLabelArmLengthFactor(0.05) self.chart.addSeries(self.series) # Signals and functionality self.series.hovered.connect(self.selectSlice)
def draw_pie_chart(self): self.chart_element = QPieSeries() self.chart_element.append("Free Space", 80) self.chart_element.append("Non Free Space", 100) self.chart_element.append("Swap", 150) self.chart = QChart() self.chart.addSeries(self.chart_element) self.chart.setAnimationOptions(QChart.SeriesAnimations) self.chart.setTitle("This is pie chart.") self.chartView = QChartView(self.chart) self.chartView.setRenderHint(QPainter.Antialiasing)