def __init__(self, project): super().__init__() self.ui = Ui_Prepare() self.ui.setupUi(self) self.project = project self.last_hotword_index = 0 self.main_dataset = DataSet() # Init hotword list self.hotwords = self.project.project_info['hotwords'] for hotword in self.hotwords: self.ui.current_hotword.addItem(hotword) self.sample_classes = [None] + self.hotwords # Init directory list self.folder_list_layout = QtWidgets.QVBoxLayout() self.folder_list = [[] for i in range(len(self.hotwords) + 1)] self.pie_slices = [QtChart.QPieSlice("non-hotword ()", 0)] self.pie_slices.extend([QtChart.QPieSlice("{} ()".format(name), 0) for name in self.hotwords]) self.display_selected_directories(0) # Pie chart self.pie_series = QtChart.QPieSeries() for pie_slice in self.pie_slices: self.pie_series.append(pie_slice) self.pie_series.setHoleSize(0) self.pie_view = QtChart.QChartView() self.pie_view.setRenderHint(QtGui.QPainter.Antialiasing) self.pie_view.chart().layout().setContentsMargins(0,0,0,0) self.pie_view.chart().setMargins(QtCore.QMargins(0,0,0,0)) self.pie_view.chart().legend().setAlignment(QtCore.Qt.AlignRight) self.pie_view.chart().addSeries(self.pie_series) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.pie_view) self.ui.graph_placeholder.setLayout(layout) #Connects self.ui.current_hotword.currentIndexChanged.connect(self.display_selected_directories) self.ui.add_folder_button.clicked.connect(self.add_folder) self.ui.test_subset_CB.stateChanged.connect(self.ui.test_subset_percent.setEnabled) self.ui.val_on_test_set_CB.stateChanged.connect(self.disable_validation_set) self.ui.training_percent.valueChanged.connect(self.on_trainsample_update) self.ui.validation_percent.valueChanged.connect(self.on_valsample_update) self.ui.test_percent.valueChanged.connect(self.on_testsample_update) self.ui.done_button.clicked.connect(self.on_done_clicked) self.ui.add_set_PB.clicked.connect(self.add_set)
def __init__(self, chartViewParent: QtChart.QChartView, *preset): super().__init__() self.__chart = QtChart.QChart() self.__chart.legend().hide() self.__chart.setMinimumHeight(180) self.__chart.setMargins(QtCore.QMargins(0, 0, 0, 0)) self.__series = QtChart.QPieSeries() self.__series.setHoleSize(0.58) self.__series.setPieSize(0.75) for i in range(8): ps = QtChart.QPieSlice(str(i), 1) ps.setExploded(True) ps.setExplodeDistanceFactor(RING_NORMAL) ps.clicked.connect(self.__slice_clicked) ps.hovered.connect(self.__slice_hovered) ps.doubleClicked.connect(self.__slice_dblclicked) self.__series.append(ps) self.__chart.addSeries(self.__series) chartViewParent.setRenderHint(QtGui.QPainter.Antialiasing, True) chartViewParent.setChart(self.__chart) self.__last_slice = self.__series.slices()[0]
def update_piechart(self): self.pieseries.clear() if self.combobox.currentText(): self.pieseries.clear() item_name = self.combobox.currentText() item_sold = [sum(self.df.loc[(self.df['Date'] == i ) & (self.df['Transaction Type'] == 'Sell') & (self.df[' Product ']== item_name), ' Amount (kg) ']) for i in self.temp_list] item_bought = [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_s = qtch.QPieSlice(item_name + "sold",sum(item_sold)) slice_b = qtch.QPieSlice(item_name + "bought",sum(item_bought)) self.pieseries.append(slice_s) self.pieseries.append(slice_b)
def updateChart(self, data: list): self.pie_series.clear() if (sum([d[1] for d in data]) > 0): self.pie_slices = [ QtChart.QPieSlice("{}- {} ({:.2}%)".format(*d), d[1]) for d in data ] for pie_slice in self.pie_slices: self.pie_series.append(pie_slice)
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 __init__(self, data: list): #data: list of tuple (label, value, percent) QtChart.QChartView.__init__(self) self.pie_slices = [ QtChart.QPieSlice("{}- {} ({:.2}%)".format(*d), d[1]) for d in data ] # Pie chart self.pie_series = QtChart.QPieSeries() for pie_slice in self.pie_slices: self.pie_series.append(pie_slice) self.pie_series.setHoleSize(0) self.setRenderHint(QtGui.QPainter.Antialiasing) self.chart().layout().setContentsMargins(0, 0, 0, 0) self.chart().setMargins(QtCore.QMargins(0, 0, 0, 0)) self.chart().legend().setAlignment(QtCore.Qt.AlignRight) self.chart().addSeries(self.pie_series)
def init_graph(self): self.pieSlices = [] for hw in self.project.project_info['hotwords'] + ['non-hotword']: self.pieSlices.append(QtChart.QPieSlice("{} ()".format(hw), 0)) self.pie_series = QtChart.QPieSeries() for pie_slice in self.pieSlices: self.pie_series.append(pie_slice) self.pie_series.setHoleSize(0) self.pie_view = QtChart.QChartView() self.pie_view.setRenderHint(QtGui.QPainter.Antialiasing) self.pie_view.chart().layout().setContentsMargins(0,0,0,0) self.pie_view.chart().setMargins(QtCore.QMargins(0,0,0,0)) self.pie_view.chart().legend().setAlignment(QtCore.Qt.AlignBottom) self.pie_view.chart().addSeries(self.pie_series) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.pie_view) self.ui.graph_placeholder.setLayout(layout)