Ejemplo n.º 1
0
    def __init__(self,
                 width,
                 height,
                 numberLabels=3,
                 heading='',
                 *args,
                 **kwargs):
        super(LabeledDonatChart, self).__init__(*args, **kwargs)

        # widget properties
        self.setObjectName('LabeledDonatChart')
        self.setFrameShape(qtwidgets.QFrame.StyledPanel)
        self.setFixedWidth(width)
        self.setFixedHeight(height)
        self.setContentsMargins(0, 0, 0, 0)
        # donut chart
        self.series = qtchart.QPieSeries()
        self.series.setHoleSize(0.6)

        self.chart = qtchart.QChart()
        self.chart.setBackgroundVisible(False)
        self.chart.addSeries(self.series)
        self.chart.legend().hide()
        self.chart.setMargins(qtcore.QMargins(0, 0, 0, 0))
        self.chart.setMinimumWidth(width)
        self.chart.setMinimumHeight(height)

        self.chartView = LabeledChartView(width, height, numberLabels, heading,
                                          self.chart, self)
        self.chartView.setRenderHint(qtgui.QPainter.Antialiasing)

        self.layout = qtwidgets.QHBoxLayout(self)
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.layout.addWidget(self.chartView)
Ejemplo n.º 2
0
    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]
Ejemplo n.º 3
0
        def create_chart(percent):
            """Создает диаграмму"""
            # ядро диаграммы
            series = QtChart.QPieSeries()
            series.append("Верные", percent)
            series.append('Неверные', 100 - percent)
            series.setPieSize(30)

            # анимация диаграммы
            chart = QtChart.QChart()
            chart.addSeries(series)
            chart.setAnimationOptions(QtChart.QChart.SeriesAnimations)
            chart.setAnimationDuration(3000)
            chart.setTitle('Соотношение ответов')

            # шрифт диаграммы
            font = QtGui.QFont()
            font.setFamily('PT Sans')
            font.setPointSize(18)
            chart.setFont(font)
            chart.setTitleFont(font)

            # виджет диаграммы
            chartview = QtChart.QChartView(chart)
            chartview.setRenderHint(QtGui.QPainter.Antialiasing)
            dialog.fails_table.setMinimumWidth(434)
            dialog.diagram_frame.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                               QtWidgets.QSizePolicy.Preferred)
            dialog.verticalLayout_7.addWidget(chartview)
Ejemplo n.º 4
0
 def slot_start_search(self):            
     """
         Calcola il volume
     """        
     QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor))        
     matrice_dati = self.get_lista_volumi()   
     QtWidgets.QApplication.restoreOverrideCursor()        
     # se la matrice è vuota esco
     if len(matrice_dati) == 0:
         return None
     # lista contenente le intestazioni
     intestazioni = ['Table name','Megabyte']                        
     # creo un oggetto modello-matrice che va ad agganciarsi all'oggetto grafico lista        
     self.lista_risultati = QtGui.QStandardItemModel()
     # carico nel modello la lista delle intestazioni
     self.lista_risultati.setHorizontalHeaderLabels(intestazioni)        
     # creo le colonne per contenere i dati
     self.lista_risultati.setColumnCount(len(intestazioni))        
     # creo le righe per contenere i dati
     self.lista_risultati.setRowCount(len(matrice_dati))                
     y =0
     # carico i dati presi dal db dentro il modello
     for row in matrice_dati:            
         x = 0
         for field in row:
             self.lista_risultati.setItem(y, x, QtGui.QStandardItem(str(field)) )
             x += 1
         y += 1
     # carico il modello nel widget        
     self.o_lst1.setModel(self.lista_risultati)                                   
     # indico di calcolare automaticamente la larghezza delle colonne
     #self.o_lst1.resizeColumnsToContents()
     
     # calcolo totali e li visualizzo nelle varie unità di misura
     v_total_size = 0
     for row in matrice_dati:
         v_total_size += row[1]
     self.l_tot_megabyte.setText( locale.format_string('%.2f', v_total_size, grouping=True) )
     self.l_tot_gigabyte.setText( locale.format_string('%.2f', v_total_size/1000, grouping=True) )
     self.l_tot_terabyte.setText( locale.format_string('%.2f', v_total_size/1000/1000, grouping=True) )                                       
     
     # creo lista di 3 elementi dove i primi due sono le due tabelle più grandi e la terza è lo spazio di tutto il resto        
     if len(matrice_dati) > 2:                        
         v_name_tabel_1 = matrice_dati[0][0]
         v_size_tabel_1 = matrice_dati[0][1]
         v_name_tabel_2 = matrice_dati[1][0]
         v_size_tabel_2 = matrice_dati[1][1]           
         v_name_tabel_3 = 'Other'
         v_size_tabel_3 = v_total_size - matrice_dati[0][1] - matrice_dati[1][1]           
         
     # carico il grafico a torta con le tre fette calcolate sopra        
     self.o_chart.removeAllSeries()
     series = QtChart.QPieSeries()        
     series.append(v_name_tabel_1, v_size_tabel_1)
     series.append(v_name_tabel_2, v_size_tabel_2)        
     series.append(v_name_tabel_3, v_size_tabel_3)        
     series.setLabelsVisible()        
     self.o_chart.addSeries(series)                                                                                           
Ejemplo n.º 5
0
    def create_pie(self):
        pie = QtChart.QPieSeries()
        pie.append('1', 10)
        pie.append('2', 20)

        chart = QtChart.QChart()
        chart.addSeries(pie)
        #chart.setAnimationOptions(QtChart.SeriesAnimation)
        chartview = QtChart.QChartView(chart)
Ejemplo n.º 6
0
 def get_serie_di_base(self):
     """
        Imposta la serie di base 100%
     """
     series = QtChart.QPieSeries()
     slice0 = series.append('100%', 1)        
     slice0.setColor(QtGui.QColor(0, 160, 0, 100))        
     
     return series
    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)
Ejemplo n.º 8
0
    def ballance_ui(self):
        
        g_box = QtWidgets.QGridLayout()

        self.total_balance = QtWidgets.QLabel("Toplam")
        self.checking_account = QtWidgets.QLabel("Vadesiz Hesap")
        self.deposit_account = QtWidgets.QLabel("Vadeli eHesap")

        self.total_balance_amount = QtWidgets.QLabel("{}".format(self.account.deposit_account+self.account.checking_account))
        self.checking_account_amount = QtWidgets.QLabel("{}".format(self.account.checking_account))
        self.deposit_account_amount = QtWidgets.QLabel("{}".format(self.account.deposit_account))

        series = QtChart.QPieSeries()
        series.setHoleSize(0.35)
        series.append("Vadeli",self.account.deposit_account)
        series.append("Vadesiz",self.account.checking_account)

        chart = QtChart.QChart()
        chart.legend().hide()
        chart.addSeries(series)
        chart.createDefaultAxes()
        chart.setAnimationOptions(QtChart.QChart.SeriesAnimations)

        chart.legend().setVisible(True)
        chart.legend().setAlignment(QtCore.Qt.AlignLeft)
 
        chartview = QtChart.QChartView(chart)
        chartview.setRenderHint(QtGui.QPainter.Antialiasing)

        self.withdrawing_buton = QtWidgets.QPushButton("Para Çekme")
        self.bank_buton = QtWidgets.QPushButton("Para Yatırma")

        g_box.addWidget(self.total_balance,0,0)
        g_box.addWidget(self.checking_account,1,0)
        g_box.addWidget(self.deposit_account,2,0)
        g_box.addWidget(self.total_balance_amount,0,1)
        g_box.addWidget(self.checking_account_amount,1,1)
        g_box.addWidget(self.deposit_account_amount,2,1)
        g_box.addWidget(self.bank_buton,0,2)
        g_box.addWidget(self.withdrawing_buton,1,2)

        v_box = QtWidgets.QVBoxLayout()

        v_box.addWidget(chartview)
        v_box.addLayout(g_box)

        self.withdrawing_buton.clicked.connect(self.withdrawing)
        self.bank_buton.clicked.connect(self.bank)

        self.setLayout(v_box)
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
    def debt_ui(self):
        g_box = QtWidgets.QGridLayout()
        
        self.total_limit = QtWidgets.QLabel("Toplam limit")
        self.credit_avialable = QtWidgets.QLabel("Kullanılabilir limit")
        self.debt = QtWidgets.QLabel("Son ekstreden kalan borç")

        self.total_limit_amount = QtWidgets.QLabel("500")
        self.credit_avialable_amount = QtWidgets.QLabel(str(500 - self.account.debt) )
        self.debt_amount = QtWidgets.QLabel("{}".format(self.account.debt))

        series = QtChart.QPieSeries()
        series.append("Kullanılabilir limit",(500 - self.account.debt))
        series.append("Kalan borç",self.account.debt)

        chart = QtChart.QChart()
        chart.legend().hide()
        chart.addSeries(series)
        chart.createDefaultAxes()
        chart.setAnimationOptions(QtChart.QChart.SeriesAnimations)

        chart.legend().setVisible(True)
        chart.legend().setAlignment(QtCore.Qt.AlignLeft)
 
        chartview = QtChart.QChartView(chart)
        chartview.setRenderHint(QtGui.QPainter.Antialiasing)

        g_box.addWidget(self.total_limit,0,0)
        g_box.addWidget(self.credit_avialable,1,0)
        g_box.addWidget(self.debt,2,0)
        g_box.addWidget(self.total_limit_amount,0,1)
        g_box.addWidget(self.credit_avialable_amount,1,1)
        g_box.addWidget(self.debt_amount,2,1)

        v_box = QtWidgets.QVBoxLayout()

        v_box.addWidget(chartview)
        v_box.addLayout(g_box)

        self.setLayout(v_box)
Ejemplo n.º 12
0
    def coinTableChangedSlot(self):
        # update new values

        # todo: display all displayCurrencies
        taxCoinName = settings.mySettings.reportCurrency()
        numberOfDecimals = 4

        # initialize local vars
        # total invested fiat
        totalInvestFiat = core.CoinValue()
        # total returned fiat
        totalReturnFiat = core.CoinValue()
        # fiat performance
        # fiatPerformance = core.CoinValue()

        # invested value of current holdings
        currentInvestNoFiat = core.CoinValue()
        # current value of current holdings (hypothetical)
        hypotheticalCoinValueNoFiat = core.CoinValue()
        # current performance of current holdings (hypothetical)
        # hypotheticalPerformanceNoFiat = core.CoinValue()

        # realized profit (relevant for tax)
        realizedProfit = core.CoinValue()
        # unrealized profit (would be relevant for tax if realized)
        # unrealizedProfit = core.CoinValue()
        # paid fees
        paidFees = core.CoinValue()

        # testing
        # currentInvestAll = core.CoinValue()
        # hypotheticalValueAll = core.CoinValue()
        # realizedProfitAll = core.CoinValue()
        if self.controller.tradeList.isEmpty():
            startYear = datetime.datetime.now().year
        else:
            startYear = min([trade.date for trade in self.controller.tradeList]).year
        stopYear = datetime.datetime.now().year
        realizedProfitPerYear = {}
        paidFeesPerYear = {}
        fiatPerYear = {}
        taxProfitPerYear = {}
        rewardPerYear = {}

        for year in range(startYear, stopYear+1):
            realizedProfitPerYear[str(year)] = core.CoinValue()
            paidFeesPerYear[str(year)] = core.CoinValue()
            fiatPerYear[str(year)] = core.CoinValue()
            taxProfitPerYear[str(year)] = core.CoinValue()
            rewardPerYear[str(year)] = core.CoinValue()

        # calculate all needed values
        for coin in self.model:
            if coin.isFiat():  # calculate invested and returned fiat
                for trade in coin.trades:
                    # only add fiat trade if partner trade is not fiat
                    isFiatCryptoTrade = True
                    if trade.tradePartnerId:
                        if self.controller.tradeList.getTradeById(trade.tradePartnerId):
                            if self.controller.tradeList.getTradeById(trade.tradePartnerId).isFiat():
                                isFiatCryptoTrade = False
                    if isFiatCryptoTrade:
                        if trade.amount < 0:
                            totalInvestFiat.add(trade.getValue().mult(-1))
                        else:
                            totalReturnFiat.add(trade.getValue())
                        # fiat invest/ return per year
                        for year in range(startYear, stopYear + 1):
                            startDate = datetime.date(year=year, month=1, day=1)
                            endDate = datetime.date(year=year, month=12, day=31)
                            if trade.date.date() >= startDate and trade.date.date() <= endDate:
                                fiatPerYear[str(year)].add(trade.getValue())

            else:  # calculate value of portfolio
                currentInvestNoFiat.add(coin.initialValue)
                hypotheticalCoinValueNoFiat.add(coin.getCurrentValue())
                realizedProfit.add(coin.getTotalProfit())
            # calc fees per year
            for trade in coin.trades:
                if trade.tradeType == "fee":
                    paidFees.add(trade.getValue())
                    for year in range(startYear, stopYear + 1):
                        startDate = datetime.date(year=year, month=1, day=1)
                        endDate = datetime.date(year=year, month=12, day=31)
                        if trade.date.date() >= startDate and trade.date.date() <= endDate:
                            paidFeesPerYear[str(year)].add(trade.getValue())

            for year in range(startYear, stopYear + 1):
                startDate = datetime.date(year=year, month=1, day=1)
                endDate = datetime.date(year=year, month=12, day=31)
                taxProfitPerYear[str(year)].add(coin.getTimeDeltaProfitTaxable(startDate, endDate))
                rewardPerYear[str(year)].add(coin.getTimeDeltaReward(startDate, endDate))
                realizedProfitPerYear[str(year)].add(coin.getTimeDeltaProfit(startDate, endDate))
            # fiat and coins
            # currentInvestAll.add(coin.initialValue)
            # hypotheticalValueAll.add(coin.getCurrentValue())
            # realizedProfitAll.add(coin..getTotalProfit())

        fiatPerformance = (totalReturnFiat-totalInvestFiat).div(totalInvestFiat).mult(100)
        hypotheticalPerformanceNoFiat = (hypotheticalCoinValueNoFiat.div(currentInvestNoFiat)
                                         - core.CoinValue().setValue(1)).mult(100)
        unrealizedProfit = hypotheticalCoinValueNoFiat - currentInvestNoFiat

        def setLabelColor(label, isPositiv):
            if isPositiv:
                label.setBodyColor(self.posColor.name())
            else:
                label.setBodyColor(self.negColor.name())

        # tax value chart
        self.currentValueChart.chartView.setText(
            [controls.floatToString(currentInvestNoFiat[taxCoinName], numberOfDecimals) + ' ' + taxCoinName,
             controls.floatToString(hypotheticalCoinValueNoFiat[taxCoinName], numberOfDecimals) + ' ' + taxCoinName,
             "%.2f%%" % hypotheticalPerformanceNoFiat[taxCoinName]])

        self.currentValueChart.setLabelToolTip(['current invest', 'current value', 'performance'])

        if unrealizedProfit[taxCoinName] < 0:
            self.donutSliceInvested.setValue(currentInvestNoFiat[taxCoinName]+unrealizedProfit[taxCoinName])
            self.donutSliceInvested.setColor(self.neutrColor)
            self.donutSlicePerformance.setValue(-unrealizedProfit[taxCoinName])
            self.donutSlicePerformance.setColor(self.negColor)
            # self.donutSlicePerformance.setLabelColor(self.negColor)
            self.currentValueChart.chartView.setColor([self.neutrColor, self.negColor, self.negColor])
        else:
            self.donutSliceInvested.setValue(currentInvestNoFiat[taxCoinName])
            self.donutSliceInvested.setColor(self.neutrColor)
            self.donutSlicePerformance.setValue(unrealizedProfit[taxCoinName])
            self.donutSlicePerformance.setColor(self.posColor)
            # self.donutSlicePerformance.setLabelColor(self.posColor)
            self.currentValueChart.chartView.setColor([self.neutrColor, self.posColor, self.posColor])

        # fiat value chart
        self.currentFiatValueChart.chartView.setText(
            [controls.floatToString(totalInvestFiat[taxCoinName], numberOfDecimals) + ' ' + taxCoinName,
             controls.floatToString(hypotheticalCoinValueNoFiat[taxCoinName], numberOfDecimals) + ' ' + taxCoinName,
             controls.floatToString(totalReturnFiat[taxCoinName], numberOfDecimals) + ' ' + taxCoinName], qt.AlignCenter)

        self.currentFiatValueChart.setLabelToolTip(['fiat invest', 'current value', 'fiat return'])

        self.sliceFiatInvested.setValue(totalInvestFiat[taxCoinName])
        self.sliceFiatInvested.setColor(self.neutrColor)
        self.sliceFiatReturn.setValue(totalReturnFiat[taxCoinName])
        self.sliceFiatReturn.setColor(self.styleHandler.getQColor('PRIMARY'))
        self.sliceCoinValue.setValue(hypotheticalCoinValueNoFiat[taxCoinName])

        if (hypotheticalCoinValueNoFiat[taxCoinName] + totalReturnFiat[taxCoinName]) \
                < totalInvestFiat[taxCoinName]:
            self.sliceCoinValue.setColor(self.negColor)
            self.currentFiatValueChart.chartView.setColor([self.neutrColor, self.negColor,
                                                           self.styleHandler.getQColor('PRIMARY')])
        else:
            self.sliceCoinValue.setColor(self.posColor)
            self.currentFiatValueChart.chartView.setColor([self.neutrColor, self.posColor,
                                                           self.styleHandler.getQColor('PRIMARY')])

        # profit table
        years = []
        for year in realizedProfitPerYear:
            years.append(year)
        self.profitTable.setRowCount(len(years))
        self.profitTable.setVerticalHeaderLabels(years)
        for year, row in zip(realizedProfitPerYear, range(len(realizedProfitPerYear))):
            self.profitTable.setItem(row, 0, qtwidgets.QTableWidgetItem(
                controls.floatToString(realizedProfitPerYear[year][taxCoinName] + rewardPerYear[year][taxCoinName], 5) + ' ' + taxCoinName))
            self.profitTable.setItem(row, 1, qtwidgets.QTableWidgetItem(
                controls.floatToString(taxProfitPerYear[year][taxCoinName] + rewardPerYear[year][taxCoinName], 5) + ' ' + taxCoinName))
            self.profitTable.setItem(row, 2, qtwidgets.QTableWidgetItem(
                controls.floatToString(paidFeesPerYear[year][taxCoinName], 5) + ' ' + taxCoinName))
            self.profitTable.setItem(row, 3, qtwidgets.QTableWidgetItem(
                controls.floatToString(fiatPerYear[year][taxCoinName], 5) + ' ' + taxCoinName))


        # pie chart
        pieSeries = qtchart.QPieSeries()
        sortedModelIndex = sorted(range(len(self.model)),
                                  key=lambda x: self.model.coins[x].getCurrentValue()[taxCoinName], reverse=True)
        otherssum = core.CoinValue()
        try:
            topvalue = self.model.coins[sortedModelIndex[0]].getCurrentValue()[taxCoinName]
        except IndexError:
            topvalue = 0
        for index in sortedModelIndex:
            coin = self.model.coins[index]
            if not coin.isFiat():
                if coin.getCurrentValue()[taxCoinName] > topvalue/40 and \
                        coin.getCurrentValue()[taxCoinName] > abs(hypotheticalCoinValueNoFiat[taxCoinName]/75):
                    pieSeries.append(coin.coinname, coin.getCurrentValue()[taxCoinName])
                elif coin.getCurrentValue()[taxCoinName] > 0:
                    otherssum.add(coin.getCurrentValue())
        if otherssum[taxCoinName] > abs(hypotheticalCoinValueNoFiat[taxCoinName]/100):
            slice = pieSeries.append("others", otherssum[taxCoinName])
            slice.setLabelVisible()

        # if len(pieSeries.slices()) > 5:
        #     for slice in pieSeries.slices()[0:5]:
        #         if slice.value() > hypotheticalCoinValueNoFiat[taxCoinName]/20:
        #             slice.setLabelVisible()
        # else:
        for slice in pieSeries.slices():
            if slice.value() > abs(hypotheticalCoinValueNoFiat[taxCoinName]/20):
                slice.setLabelVisible()

        color = [255, 75, 225]
        for slice in pieSeries.slices():
            color = style.nextColor(color, 55)
            slice.setBrush(qtgui.QColor(*tuple(color)))
            slice.setLabelColor(qtgui.QColor(*tuple(color)))
            slice.setLabelPosition(qtchart.QPieSlice.LabelOutside)

        pieSeries.setHoleSize(0.6)
        self.portfolioChart.setSeries(pieSeries)
        portfolioChartLabels = []
        for coin in hypotheticalCoinValueNoFiat:
            portfolioChartLabels.append(controls.floatToString(hypotheticalCoinValueNoFiat[coin],
                                                               numberOfDecimals) + ' ' + coin)
        self.portfolioChart.chartView.setText(portfolioChartLabels, qt.AlignCenter)
        self.portfolioChart.chartView.setColor(self.neutrColor, False)
Ejemplo n.º 13
0
    def __init__(self):
        super().__init__()
        
        self.setLayout(qtw.QVBoxLayout())
            
        grpbxwidgt = qtw.QGroupBox()
        grpbxwidgt.setTitle("Visualization of Data")
        grpbxwidgt.setLayout(qtw.QVBoxLayout())

        # BAR GRAPH

        self.series = qtch.QBarSeries() 
        self.chart = qtch.QChart()      
        self.chart.addSeries(self.series) 
        self.chart.setTitle("<h5>Daily Income & Expense</h5>")
        self.chart.setAnimationOptions(qtch.QChart.SeriesAnimations)
        self.axis = qtch.QBarCategoryAxis() 
        self.chart.createDefaultAxes()
        self.chart.setAxisX(self.axis,self.series)
        self.chart.axisY(self.series).setRange(0,10000)
        self.chart.axisY(self.series).setTitleText("Money (LKR)")
        self.chart.legend().setVisible(True)
        self.chart.legend().setAlignment(qtc.Qt.AlignBottom)
        self.chartview = qtch.QChartView(self.chart)
        self.chartview.setRenderHint(qtg.QPainter.Antialiasing)


        # PIE CHART
        
        self.pieseries = qtch.QPieSeries()
        self.piechart = qtch.QChart()
        self.piechart.addSeries(self.pieseries)
        self.piechart.setTitle("Item's Sold  and Remaining")
        self.piechart.setAnimationOptions(qtch.QChart.AllAnimations)
        self.piechartview = qtch.QChartView(self.piechart)
        self.piechartview.setRenderHint(qtg.QPainter.Antialiasing)


        # selection widget
        
        product_widget = qtw.QGroupBox()
        product_widget.setTitle("Item Selection")
        product_layout = qtw.QHBoxLayout()
        product_widget.setLayout(product_layout)
        
        pushbutton = qtw.QPushButton("Filter",clicked = self.update_piechart)
        self.combobox = qtw.QComboBox(currentText = "select an item") 
        
        self.c = ComboboxModel() #comboxlist model
        self.combobox.setModel(self.c.model)

        product_layout.addWidget(self.combobox) 
        product_layout.addWidget(pushbutton)
        # calendar widget

        calendar_widget = qtw.QGroupBox()
        calendar_widget.setTitle("Date Selection")
        
        calendar_layout = qtw.QHBoxLayout()
        calendar_widget.setLayout(calendar_layout)
        # calculating the current month and current year
        
        current_month = int(datetime.now().month)
        current_year  = int(datetime.now().year)
        
        date = qtc.QDate(current_year,current_month,1)
        
        self.to_date = qtw.QDateEdit()
        to_label = qtw.QLabel("To")
        self.to_date.setCalendarPopup(True)
        
        self.to_date.setDate(date)
        
        self.from_date = qtw.QDateEdit()
        from_label = qtw.QLabel("From")
        self.from_date.setCalendarPopup(True)
        self.from_date.setDate(qtc.QDate.currentDate())
        
        pushbtn = qtw.QPushButton("Filter",clicked =self.update_data)

        
        calendar_layout.addWidget(to_label)
        calendar_layout.addWidget(self.to_date)
        calendar_layout.addWidget(from_label)
        calendar_layout.addWidget(self.from_date)
        calendar_layout.addWidget(pushbtn)
        # end of calendar widget
        
        self.chartview.setSizePolicy(qtw.QSizePolicy.Minimum,qtw.QSizePolicy.Expanding)

        self.piechartview.setSizePolicy(qtw.QSizePolicy.Minimum,qtw.QSizePolicy.Expanding)
        
        grpbxwidgt.layout().addWidget(calendar_widget)
        
        grpbxwidgt.layout().addWidget(self.chartview)
        
        grpbxwidgt.layout().addWidget(product_widget)

        grpbxwidgt.layout().addWidget(self.piechartview)
        self.layout().addWidget(grpbxwidgt)
Ejemplo n.º 14
0
from PyQt5 import QtChart
from PyQt5.QtGui import QPainter
import sys, os

app = QApplication(sys.argv)

w = QWidget()
w.resize(250, 150)
w.move(500, 300)
w.setWindowTitle('Круговая диаграмма')
w.setGeometry(100, 100, 680, 500)

layout = QVBoxLayout()
w.setLayout(layout)

series = QtChart.QPieSeries()
series.append("Jane", 1)
series.append("Joe", 2)
series.append("Andy", 3)
series.append("Barbara", 4)
series.append("Axel", 5)

chart = QtChart.QChart()
chart.addSeries(series)
chart.setTitle('Простой пример круговой диаграммы')

chartview = QtChart.QChartView(chart)
chartview.setRenderHint(QPainter.Antialiasing)
layout.addWidget(chartview)

w.show()
Ejemplo n.º 15
0
    def layoutUI(self):
        #        self.setStyleSheet("background-color: white;")
        #        self.setStyleSheet(" * {background-color: #ffffff} QFrame { border: 0px; background-color: #ffffff }")
        self.setStyleSheet(
            " * {{background-color: {0}}} QFrame {{ border: 0px; background-color: {0} }}"
            .format("#ff00ff"))

        #        self.setObjectName("mainWindow")
        #        self.setStyleSheet("#mainWindow { background-color: white; border: 0px white}")

        self.mainLayout = qtwidgets.QHBoxLayout(self)
        self.setContentsMargins(0, 0, 0, 0)

        self.sidebarFrame = qtwidgets.QFrame(self)
        self.sidebarFrame.setStyleSheet("background-color: red;")
        #        self.sidebarFrame.setObjectName("sidebarFrame")
        #        self.sidebarFrame.setStyleSheet("#sidebarFrame { background-color: white; border: 0px white}")
        self.sidebarFrame.setFrameShape(qtwidgets.QFrame.StyledPanel)
        self.sidebarFrame.setFrameShadow(qtwidgets.QFrame.Raised)
        self.sidebarFrame.setFixedWidth(120)

        self.contentFrame = qtwidgets.QFrame(self)
        #        self.contentFrame.setStyleSheet("background-color: yellow;")
        #        self.contentFrame.setObjectName("contentFrame")
        #        self.contentFrame.setStyleSheet("#contentFrame { background-color: white; border: 0px white}")
        self.contentFrame.setFrameShape(qtwidgets.QFrame.StyledPanel)
        self.contentFrame.setFrameShadow(qtwidgets.QFrame.Raised)

        self.contentFrame2 = qtwidgets.QFrame(self)
        #        self.contentFrame.setStyleSheet("background-color: yellow;")
        #        self.contentFrame.setObjectName("contentFrame")
        #        self.contentFrame.setStyleSheet("#contentFrame { background-color: white; border: 0px white}")
        self.contentFrame2.setFrameShape(qtwidgets.QFrame.StyledPanel)
        self.contentFrame2.setFrameShadow(qtwidgets.QFrame.Raised)

        # stacked content layout
        self.stackedLayout = qtwidgets.QStackedLayout()
        self.stackedLayout.addWidget(self.contentFrame)
        self.stackedLayout.addWidget(self.contentFrame2)

        self.statusbarFrame = qtwidgets.QFrame(self)
        self.statusbarFrame.setStyleSheet("background-color: blue;")
        #        self.statusbarFrame.setObjectName("statusbarFrame")
        #        self.statusbarFrame.setStyleSheet("#statusbarFrame { background-color: white; border: 0px white}")
        self.statusbarFrame.setFrameShape(qtwidgets.QFrame.StyledPanel)
        self.statusbarFrame.setFrameShadow(qtwidgets.QFrame.Raised)
        self.statusbarFrame.setFixedHeight(30)

        # buttons sidebar
        self.button1 = qtwidgets.QPushButton("b1", self.sidebarFrame)
        self.button2 = qtwidgets.QPushButton("b2", self.sidebarFrame)
        self.button3 = qtwidgets.QPushButton("b3", self.sidebarFrame)
        self.button4 = qtwidgets.QPushButton("b4", self.sidebarFrame)
        buttonHeight = 80
        self.button1.setFixedHeight(buttonHeight)
        self.button2.setFixedHeight(buttonHeight)
        self.button3.setFixedHeight(buttonHeight)
        self.button4.setFixedHeight(buttonHeight)
        self.button1.clicked.connect(
            lambda: self.stackedLayout.setCurrentIndex(0))
        self.button2.clicked.connect(
            lambda: self.stackedLayout.setCurrentIndex(1))
        #        self.lowerBtn.setFixedSize(50,10)
        # layout in lower frame
        self.sidebarVerticalLayout = qtwidgets.QVBoxLayout(self.sidebarFrame)
        self.sidebarVerticalLayout.addWidget(self.button1)
        self.sidebarVerticalLayout.addWidget(self.button2)
        self.sidebarVerticalLayout.addWidget(self.button3)
        self.sidebarVerticalLayout.addWidget(self.button4)
        self.sidebarVerticalLayout.addStretch()

        # content contentFrame
        # content items
        self.contentbutton = qtwidgets.QPushButton("some button",
                                                   self.contentFrame)
        self.contentlabel = qtwidgets.QLabel("some text", self.contentFrame)
        mySeries = qtchart.QPieSeries()
        mySeries.append('BTC', 20000)
        mySeries.append('ETH', 60000)
        mySeries.append('LTC', 2000)
        #        mySlice = mySeries.slices().at(1)
        #        mySlice.setExploded()
        self.myChart = qtchart.QChart()
        self.myChart.addSeries(mySeries)
        #        self.myChart.setTitle("chart example")
        self.myChart.legend().hide()
        self.myChartView = qtchart.QChartView(self.myChart)
        self.myChartView.setRenderHint(qtgui.QPainter.Antialiasing)
        #        self.contentFrame.addWidget(self.myChartView)
        self.myTable = qtwidgets.QTableWidget(50, 8, self.contentFrame)
        self.myTable.horizontalHeader().setSectionResizeMode(
            qtwidgets.QHeaderView.Stretch)

        # layout content
        self.contentLayout = qtwidgets.QVBoxLayout(self.contentFrame)
        self.horzLayout1 = qtwidgets.QHBoxLayout()
        self.vertLayout1 = qtwidgets.QVBoxLayout()

        self.contentLayout.addLayout(self.horzLayout1)
        self.contentLayout.addWidget(self.myTable)
        self.horzLayout1.addLayout(self.vertLayout1)
        self.horzLayout1.addStretch()
        self.horzLayout1.addWidget(self.myChartView)
        self.vertLayout1.addWidget(self.contentbutton)
        self.vertLayout1.addWidget(self.contentlabel)
        self.vertLayout1.addStretch()

        # content contentFrame2
        # content items

        self.pathlabel = qtwidgets.QLabel("Path:", self.contentFrame2)
        self.fileDialog = qtwidgets.QFileDialog(self.contentFrame2)
        #        self.fileDialog.setFileMode(qtwidgets.QFileDialog.DirectoryOnly)
        self.pathEntry = qtwidgets.QLineEdit(self.contentFrame2)
        self.pathEntry.setPlaceholderText("enter Path/ drop file or folder")
        self.selectPathButton = qtwidgets.QPushButton("Select",
                                                      self.contentFrame2)
        self.selectPathButton.clicked.connect(lambda: self.selectPath())

        # layout content
        self.contentLayout2 = qtwidgets.QVBoxLayout(self.contentFrame2)
        self.horzLayout21 = qtwidgets.QHBoxLayout()

        self.contentLayout2.addLayout(self.horzLayout21)
        self.horzLayout21.addWidget(self.pathlabel)
        self.horzLayout21.addWidget(self.pathEntry)
        self.horzLayout21.addWidget(self.selectPathButton)

        # labels statusbar
        self.label1 = qtwidgets.QLabel("little bit status",
                                       self.statusbarFrame)
        font = qtgui.QFont("Arial", 10)
        self.label1.setFont(font)
        self.label2 = qtwidgets.QLabel("some more status", self.statusbarFrame)
        self.label2.setFont(font)
        #        self.lowerBtn.setFixedSize(50,10)
        # layout in lower frame
        self.statusbarHorizontalLayout = qtwidgets.QHBoxLayout(
            self.statusbarFrame)
        self.statusbarHorizontalLayout.addWidget(self.label1)
        self.statusbarHorizontalLayout.addWidget(self.label2)
        self.statusbarHorizontalLayout.addStretch()

        # put frames in horizontal layout
        self.horizontalFrameLayout = qtwidgets.QHBoxLayout()
        self.horizontalFrameLayout.addWidget(self.sidebarFrame)
        self.horizontalFrameLayout.addLayout(self.stackedLayout)

        # put frames in vertical layout
        self.verticalFrameLayout = qtwidgets.QVBoxLayout()
        self.verticalFrameLayout.setSpacing(0)
        self.verticalFrameLayout.addLayout(self.horizontalFrameLayout)
        self.verticalFrameLayout.addWidget(self.statusbarFrame)

        # put subLayouts in main layout
        self.mainLayout.addLayout(self.verticalFrameLayout)

        self.show()
Ejemplo n.º 16
0
def create_chart(parent, data, title, axis_data=None, chart_type='pie'):
    # Create Pie Chart
    if chart_type == 'pie':
        # Create the data series and initialize it
        default_series = QtChart.QPieSeries()
        for (name, value, color, percentage) in data:
            sl = default_series.append(name, value)
            sl.setLabel(f"{name}\n({percentage:.2f}%)")
            sl.setBrush(color)

        # Modify series
        default_series.setPieSize(0.75)
        default_series.setLabelsVisible()
        default_series.setLabelsPosition(QtChart.QPieSlice.LabelOutside)

        # Create the chart
        chart = QtChart.QChart()
        chart.addSeries(default_series)
        chart.createDefaultAxes()
        chart.setAnimationOptions(QtChart.QChart.AllAnimations)
        chart.setTitle(title)
        chart.legend().setVisible(False)
        #chart.legend().setAlignment(QtCore.Qt.AlignBottom)
        chart.setBackgroundBrush(QtGui.QBrush(QtGui.QColor(225, 225, 225)))

        # Initialize a chart view
        chartview = QtChart.QChartView(chart)
        chartview.setRenderHint(QtGui.QPainter.Antialiasing)
        chartview.setMinimumSize(QtCore.QSize(600, 400))
        chartview.setSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                QtWidgets.QSizePolicy.Fixed)

        return chartview

    # Line Chart
    else:
        default_series = QtChart.QLineSeries()
        for (x, y) in data:
            sl = default_series.append(x, y)

        # Create chart
        chart = QtChart.QChart()
        chart.addSeries(default_series)
        chart.setAnimationOptions(QtChart.QChart.SeriesAnimations)
        chart.setTitle(title)
        chart.legend().setVisible(False)
        chart.setBackgroundBrush(QtGui.QBrush(QtGui.QColor(225, 225, 225)))

        if axis_data is not None:
            axis_x = QtChart.QCategoryAxis()  # Y-axis
            axis_x.setRange(axis_data['X']['Min'], axis_data['X']['Max'])
            axis_x.setTitleText(axis_data['X']['Title'])
            cur_tick = axis_data['X']['Max'] * 0.1
            for i in range(len(axis_data['X']['Labels'])):
                axis_x.append(f"{axis_data['X']['Labels'][i]}", cur_tick)
                cur_tick += (float(axis_data['X']['Max']) /
                             len(axis_data['X']['Labels']))
            chart.addAxis(axis_x, QtCore.Qt.AlignBottom)
            axis_y = QtChart.QCategoryAxis()  # Y-axis
            axis_y.setTitleText(axis_data['Y']['Title'])
            axis_y.setRange(axis_data['Y']['Min'], axis_data['Y']['Max'])
            axis_y.append('Easy', float(axis_data['Y']['Max']) * 0.1)
            axis_y.append('Moderate', float(axis_data['Y']['Max']) * 0.9)
            axis_y.append('Difficult', float(axis_data['Y']['Max']) * 1.3)
            chart.addAxis(axis_y, QtCore.Qt.AlignLeft)
            default_series.attachAxis(axis_x)
            default_series.attachAxis(axis_y)

        chartview = QtChart.QChartView(chart)
        chartview.setRenderHint(QtGui.QPainter.Antialiasing)
        chartview.setMinimumSize(QtCore.QSize(600, 400))
        chartview.setSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                QtWidgets.QSizePolicy.Fixed)

        return chartview