pyqt5 qtchart 画出饼图

from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
from PyQt5.QtChart import QChart, QChartView, QPieSeries, QPieSlice
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt


class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyQtChart Pie Chart")
        self.setGeometry(100, 100, 1280, 600)

        self.show()

        self.create_piechart()

    def create_piechart(self):
        series = QPieSeries()
        series.append("Python", 80)
        series.append("C++", 70)
        series.append("Java", 50)
        series.append("C#", 40)
        series.append("PHP", 30)


        # adding slice

        slice0 = QPieSlice()
        slice0 = series.slices()[0]
        slice0.setLabelVisible(True)

        slice1 = QPieSlice()
        slice1 = series.slices()[1]
        slice1.setLabelVisible(True)

        slice2 = QPieSlice()
        slice2 = series.slices()[2]
        slice2.setLabelVisible(True)

        slice3 = QPieSlice()
        slice3 = series.slices()[3]
        slice3.setLabelVisible(True)

        slice4 = QPieSlice()
        slice4 = series.slices()[4]
        slice4.setLabelVisible(True)


        chart = QChart()
        chart.legend().hide()
        chart.addSeries(series)
        chart.createDefaultAxes()
        chart.setAnimationOptions(QChart.SeriesAnimations)
        chart.setTitle("Pie Chart Example")

        chart.legend().setVisible(True)
        chart.legend().setAlignment(Qt.AlignBottom)

        chartview = QChartView(chart)
        chartview.setRenderHint(QPainter.Antialiasing)

        self.setCentralWidget(chartview)


App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())

在这里插入图片描述
如果需要对指定项指定颜色,则可以使用setBrush()函数填充颜色

from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
from PyQt5.QtChart import QChart, QChartView, QPieSeries, QPieSlice
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt


class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyQtChart Pie Chart")
        self.setGeometry(100, 100, 1280, 600)

        self.show()

        self.create_piechart()

    def create_piechart(self):
        series = QPieSeries()
        series.append("Python", 80)
        series.append("C++", 70)
        series.append("Java", 50)
        series.append("C#", 40)
        series.append("PHP", 30)


        # adding slice

        slice0 = QPieSlice()
        slice0 = series.slices()[0]
        slice0.setLabelVisible(True)
        slice0.setBrush(Qt.green)

        slice1 = QPieSlice()
        slice1 = series.slices()[1]
        slice1.setLabelVisible(True)
        slice0.setBrush(Qt.red)

        slice2 = QPieSlice()
        slice2 = series.slices()[2]
        slice2.setLabelVisible(True)

        slice3 = QPieSlice()
        slice3 = series.slices()[3]
        slice3.setLabelVisible(True)

        slice4 = QPieSlice()
        slice4 = series.slices()[4]
        slice4.setLabelVisible(True)


        chart = QChart()
        chart.legend().hide()
        chart.addSeries(series)
        chart.createDefaultAxes()
        chart.setAnimationOptions(QChart.SeriesAnimations)
        chart.setTitle("Pie Chart Example")

        chart.legend().setVisible(True)
        chart.legend().setAlignment(Qt.AlignBottom)

        chartview = QChartView(chart)
        chartview.setRenderHint(QPainter.Antialiasing)

        self.setCentralWidget(chartview)


App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())

如果针对某一项需要进行突出显示,则可以使用setExploded() function

from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
from PyQt5.QtChart import QChart, QChartView, QPieSeries, QPieSlice
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt


class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyQtChart Pie Chart")
        self.setGeometry(100, 100, 1280, 600)

        self.show()

        self.create_piechart()

    def create_piechart(self):
        series = QPieSeries()
        series.append("Python", 80)
        series.append("C++", 70)
        series.append("Java", 50)
        series.append("C#", 40)
        series.append("PHP", 30)


        # adding slice

        slice0 = QPieSlice()
        slice0 = series.slices()[0]
        slice0.setLabelVisible(True)
        slice0.setBrush(Qt.green)

        slice1 = QPieSlice()
        slice1 = series.slices()[1]
        slice1.setLabelVisible(True)
        slice1.setExploded(True)
        slice0.setBrush(Qt.red)

        slice2 = QPieSlice()
        slice2 = series.slices()[2]
        slice2.setLabelVisible(True)

        slice3 = QPieSlice()
        slice3 = series.slices()[3]
        slice3.setLabelVisible(True)

        slice4 = QPieSlice()
        slice4 = series.slices()[4]
        slice4.setLabelVisible(True)


        chart = QChart()
        chart.legend().hide()
        chart.addSeries(series)
        chart.createDefaultAxes()
        chart.setAnimationOptions(QChart.SeriesAnimations)
        chart.setTitle("Pie Chart Example")

        chart.legend().setVisible(True)
        chart.legend().setAlignment(Qt.AlignBottom)

        chartview = QChartView(chart)
        chartview.setRenderHint(QPainter.Antialiasing)

        self.setCentralWidget(chartview)


App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())

在这里插入图片描述
参考PyQtChart How to Create PieChart in PyQt5

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值