pyqt5 用QChartView库完成饼图有标题示例,每个区域对应一个标题并显示数量,饼图中每一个区域显示百分比
时间: 2024-02-17 13:59:45 浏览: 132
好的,这里是一个使用PyQt5中的QChartView库完成饼图的示例,其中包括标题、区域数量、百分比等信息:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtChart import QChart, QChartView, QPieSeries, QPieSlice
class PieChart(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个饼图
chart = QChart()
# 添加标题
chart.setTitle("Pie Chart")
# 创建一个饼系列
series = QPieSeries()
# 添加饼图的每个区域以及对应的数量
series.append("Slice 1", 20)
series.append("Slice 2", 30)
series.append("Slice 3", 10)
series.append("Slice 4", 40)
# 设置每个饼片的颜色
slice1 = QPieSlice("Slice 1", 20)
slice1.setBrush("#ff0000")
series.setPieSliceBrush(slice1, "#ff0000")
slice2 = QPieSlice("Slice 2", 30)
slice2.setBrush("#00ff00")
series.setPieSliceBrush(slice2, "#00ff00")
slice3 = QPieSlice("Slice 3", 10)
slice3.setBrush("#0000ff")
series.setPieSliceBrush(slice3, "#0000ff")
slice4 = QPieSlice("Slice 4", 40)
slice4.setBrush("#ffff00")
series.setPieSliceBrush(slice4, "#ffff00")
# 添加饼系列到饼图
chart.addSeries(series)
# 设置饼图的属性
chart.setAnimationOptions(QChart.SeriesAnimations)
chart.legend().setAlignment(Qt.AlignBottom)
# 创建一个ChartView对象并将饼图添加到其中
chartView = QChartView(chart)
chartView.setRenderHint(QPainter.Antialiasing)
# 设置饼片显示百分比
for slice in series.slices():
percentage = slice.percentage() * 100
text = "{0:.1f}%".format(percentage)
slice.setLabel(text)
# 显示饼图
self.setCentralWidget(chartView)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = PieChart()
ex.show()
sys.exit(app.exec_())
```
在这个示例中,我们使用了QPieSeries来创建饼系列,并且添加了每个饼片的名称和数量。我们还使用了QPieSlice来设置每个饼片的颜色,并通过setPieSliceBrush()方法将其应用于QPieSeries。然后,我们使用setLabel()方法将每个饼片的百分比显示在饼图中。
希望这个示例对你有所帮助!
阅读全文