示例#1
0
    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()
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
 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
示例#7
0
    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)
示例#8
0
    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()
示例#9
0
    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()
示例#10
0
 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)
示例#11
0
 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())
示例#12
0
    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])
示例#13
0
    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窗口显示出来
示例#14
0
 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)
示例#15
0
 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()
示例#16
0
 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
示例#17
0
 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
示例#18
0
    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)
示例#19
0
    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
示例#20
0
 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)
示例#21
0
    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
示例#22
0
    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
示例#23
0
    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
示例#24
0
    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")
示例#25
0
 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)
示例#26
0
 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
示例#28
0
        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)
示例#29
0
    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)
示例#30
0
    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)