Esempio n. 1
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())
Esempio n. 2
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)
Esempio n. 3
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窗口显示出来
Esempio n. 4
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)
Esempio n. 5
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])
Esempio n. 6
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)
Esempio n. 7
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()
Esempio n. 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:
            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)
Esempio n. 9
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()
Esempio n. 10
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
Esempio n. 11
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
Esempio n. 12
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)
Esempio n. 13
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)
Esempio n. 14
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
Esempio n. 15
0
class pieChartView(QChartView):
    def __init__(self, *args, **kwargs):
        super(pieChartView, self).__init__(*args, **kwargs)
        self.initChart()
        self.refresh()

    def initChart(self):
        self._chart = QChart()
        # 调整边距
        self._chart.layout().setContentsMargins(0, 0, 0, 0)  # 外界
        self._chart.setMargins(QMargins(3, 0, 3, 0))  # 内界
        self._chart.setBackgroundRoundness(0)
        self._chart.setBackgroundVisible(False)
        # 设置主题
        self._chart.setTheme(QChart.ChartThemeBlueIcy)
        # 抗锯齿
        self.setRenderHint(QPainter.Antialiasing)
        # 开启动画效果
        self._chart.setAnimationOptions(QChart.SeriesAnimations)
        self._series = QPieSeries()
        self._series.setPieSize(0.8)
        self._chart.addSeries(self._series)
        self.setChart(self._chart)

    def refresh(self):
        # 提示widget
        self.toolTipWidget = GraphicsProxyWidget(self._chart)

    def mouseMoveEvent(self, event):
        super(pieChartView, self).mouseMoveEvent(event)
        pos = event.pos()
        x = pos.x()
        y = pos.y()
        # 得到在坐标系中的所有区域
        self.min_x, self.max_x = self._chart.geometry().width(
        ) * 0.2, self._chart.geometry().width() * 0.8
        self.min_y, self.max_y = self._chart.geometry().height(
        ) * 0.2, self._chart.geometry().height() * 0.9
        serie = self._chart.series()[0]
        slices = [(slice, slice.value()) for slice in serie.slices()]
        if self.min_x <= x <= self.max_x and self.min_y <= y <= self.max_y:
            t_width = self.toolTipWidget.width()
            t_height = self.toolTipWidget.height()
            title = "数据组成"
            # 如果鼠标位置离右侧的距离小于tip宽度
            x = pos.x() - t_width if self.width() - \
                                     pos.x() - 20 < t_width else pos.x()
            # 如果鼠标位置离底部的高度小于tip高度
            y = pos.y() - t_height if self.height() - \
                                      pos.y() - 20 < t_height else pos.y()
            self.toolTipWidget.show(title, slices, QPoint(x, y))
        else:
            self.toolTipWidget.hide()
Esempio n. 16
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")
Esempio n. 17
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)
Esempio n. 18
0
class DonutBreakdownChart(QChart):
    def __init__(self, parent=None):
        super(DonutBreakdownChart, self).__init__(parent)

        self.mainSeries = QPieSeries()
        self.mainSeries.setPieSize(0.7)
        self.addSeries(self.mainSeries)

    def addBreakdownSeries(self, series, color):
        # Add breakdown series as a slice to center pie.
        slice = self.mainSeries.append(series.name(), series.sum())

        # Customize the slice.
        slice.setBrush(color)
        slice.setLabelVisible()
        slice.setLabelColor(Qt.white)
        slice.setLabelPosition(QPieSlice.LabelInsideHorizontal)

        # Position and customize the breakdown series.
        series.setPieSize(0.8)
        series.setHoleSize(0.7)
        series.setLabelsVisible()

        color = QColor(color)

        for slice in series.slices():
            color = color.lighter(115)
            slice.setBrush(color)
            slice.setLabelFont(QFont("Arial", 8))

        # Add the series to the chart.
        self.addSeries(series)

        # Recalculate breakdown donut segments.
        self.recalculateAngles()

    def recalculateAngles(self):
        angle = 0.0

        for slice in self.mainSeries.slices():
            series = self.find(slice.label())
            if series is not None:
                series.setPieStartAngle(angle)
                angle += slice.percentage() * 360.0
                series.setPieEndAngle(angle)

    def find(self, seriesName):
        for series in self.series():
            if isinstance(series, QPieSeries) and series.name() == seriesName:
                return series

        return None
    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
Esempio n. 20
0
                def __init__(self, data: Dict[str, float]):
                    """Constructor.

                    Args:
                        data (Dict[str, float]): [description]"""
                    QPieSeries.__init__(self)
                    self.setLabelsVisible()
                    self.setLabelsPosition(QPieSlice.LabelInsideHorizontal)
                    for data_key, data_point in data.items():
                        self.append(data_key, data_point)

                    for slice in self.slices():
                        slice.setLabel("{:.2f}%".format(100 *
                                                        slice.percentage()))
Esempio n. 21
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)
Esempio n. 22
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)
Esempio n. 23
0
    def create_chart(self, chartKey):
        self.series = QPieSeries()
        self.series.setHoleSize(0.35)
        self.chart = QChart()
        
        #Add series to the chart
        self.addSeries(chartKey)

	# for the background and title
        self.chart.setAnimationOptions(QChart.SeriesAnimations)
        self.chart.setTitle("DonutChart Example")
        self.chart.setTheme(QChart.ChartThemeBlueCerulean)

        self.chartview = QChartView(self.chart)
        self.chartview.setRenderHint(QPainter.Antialiasing)
Esempio n. 24
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)
Esempio n. 25
0
 def set_slice(self, pie_series: QPieSeries, mark_data) -> QPieSeries:
     for i in range(len(mark_data)):
         slice_ = pie_series.slices()[i]  # 地道饼图的某一个元素切片
         slice_.setLabelVisible()  # 设置各区域文本标签
         slice_.setPen(QPen(Qt.darkGreen, 0))  # 设置画笔类型——边界线颜色
         slice_.setBrush(mark_data[i][2])  # 设置笔刷——区域颜色
     return pie_series
Esempio n. 26
0
class VCPie(VCCommons):
    def __init__(self):
        VCCommons.__init__(self)
        self.setRenderHint(QPainter.Antialiasing)
        self.clear()

    def setCurrency(self, currency):
        """
            currency is a Currency Object
        """
        self.currency=currency

    def appendData(self, name, value,  exploded=False):
        slice=self.serie.append(name, value)
        slice.setExploded(exploded)
        slice.setLabelVisible()
        
    def display(self):
        self.setChart(self.__chart)
        self.chart().layout().setContentsMargins(0,0,0,0);
        if self._animations==True:
            self.chart().setAnimationOptions(QChart.AllAnimations);
        else:
            self.chart().setAnimationOptions(QChart.NoAnimation)

        self._display_set_title()
        tooltip=""
        c=self.currency.string
        for slice in self.serie.slices():
            tooltip=tooltip+"{}: {} ({})\n".format(slice.label(), c(slice.value()), Percentage(slice.percentage(), 1)).upper()
            slice.setLabel("{}: {}".format(slice.label(), Percentage(slice.percentage(), 1)).upper())
            if slice.percentage()<0.005:
                slice.setLabelVisible(False)
        tooltip=tooltip+"*** Total: {} ***".format(c(self.serie.sum())).upper()
        self.chart().addSeries(self.serie)
        
        self.setToolTip(tooltip)
        self.repaint()
        
    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)
Esempio n. 27
0
    def create_chart(self, chartKey):
        self.series = QPieSeries()
        self.series.setHoleSize(0.35)
        self.chart = QChart()

        #Add series to the chart
        self.addSeries(chartKey)

        # for the background and title
        self.chart.setAnimationOptions(QChart.SeriesAnimations)
        self.chart.setTitle("Code Size Visualizer")
        self.chart.legend().setVisible(True)
        self.chart.legend().setAlignment(Qt.AlignRight)
        self.chart.setTheme(QChart.ChartThemeBlueCerulean)

        self.chartview = QChartView(self.chart)
        self.chartview.setRenderHint(QPainter.Antialiasing)
Esempio n. 28
0
    def update_diagram(self):
        year = self.date_edit.get_year()
        month = self.date_edit.get_month()
        date_format = f"WHERE strftime(\"%Y\",DATE) = \"{year}\" AND strftime(\"%m\",DATE) = \"{month:02}\""

        series = QPieSeries()
        for item in self.db.get_sum_by_category(date_format, self.type_inout):
            series.append(item[1], item[0])

        for slice in series.slices():
            slice.setLabel(
                slice.label() + ", " + f"{slice.value()}₽" +
                f" ({round(slice.value() / (series.sum() / 100))}%)")
        series.clicked.connect(self.pressed)
        self.chart.removeAllSeries()
        self.chart.addSeries(series)
        self.chart.setTitle("Доходы" if self.type_inout else "Расходы")
Esempio n. 29
0
 def initChart(self):
     self._chart = QChart()
     # 调整边距
     self._chart.layout().setContentsMargins(0, 0, 0, 0)  # 外界
     self._chart.setMargins(QMargins(3, 0, 3, 0))  # 内界
     self._chart.setBackgroundRoundness(0)
     self._chart.setBackgroundVisible(False)
     # 设置主题
     self._chart.setTheme(QChart.ChartThemeBlueIcy)
     # 抗锯齿
     self.setRenderHint(QPainter.Antialiasing)
     # 开启动画效果
     self._chart.setAnimationOptions(QChart.SeriesAnimations)
     self._series = QPieSeries()
     self._series.setPieSize(0.8)
     self._chart.addSeries(self._series)
     self.setChart(self._chart)
Esempio n. 30
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 createPieChart(self):
        chart = QChart()
        chart.setTitle("Pie chart")

        pieSize = 1.0 / len(self.m_dataTable)

        for i, data_list in enumerate(self.m_dataTable):
            series = QPieSeries(chart)
            for value, label in data_list:
                slice = series.append(label, value.y())
                if len(series) == 1:
                    slice.setLabelVisible()
                    slice.setExploded()

            hPos = (pieSize / 2) + (i / float(len(self.m_dataTable)))
            series.setPieSize(pieSize)
            series.setHorizontalPosition(hPos)
            series.setVerticalPosition(0.5)

            chart.addSeries(series)

        return chart