pyqt5示例_实战PyQt5:142-数据可视化之QChart百分比柱状图

  • Post author:
  • Post category:其他


c4e05498de0866fc57f08b9d48884348.png

百分比柱状图将数据集中显示为每个类别在所有数据集中的百分比。创建百分比条形图类似于创建常规条形图,不同之处在于,对于百分比条形图,使用QPercentBarSeries而不是QBarSeries。在百分比柱状图的Y轴上,无需设置取值范围,因为Y轴的取值始终是0-100。

注:在所有的有关柱状图的示例中,使用了相同的数据,这样可以说明不同柱状图之间的差异。

QPercentBarSeries

QPercentBarSeries类将一系列分类的数据显示为每个类别的百分比。本类将数据绘制为一系列大小一致的垂直堆积的柱状图,每个类别一个柱状图。添加到图表中的每个柱状图组都为每个堆积的柱状图贡献一个分段。段的大小对应于段值相对于堆积中所有段的总值的百分比。零值的条不会绘制。

百分比柱状图示例

本示例显示了如何创建简单的百分比柱状图,完整代码如下:

import sysfrom PyQt5.QtGui import QPainter, QPenfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import QApplication, QMainWindowfrom  PyQt5.QtChart import (QChartView, QChart, QPercentBarSeries, QBarSet,                             QLegend, QBarCategoryAxis, QValueAxis) class DemoPercentBarSeries(QMainWindow):    def __init__(self, parent=None):        super(DemoPercentBarSeries, self).__init__(parent)                    # 设置窗口标题        self.setWindowTitle('实战 Qt for Python: 百分比柱状图演示')              # 设置窗口大小        self.resize(480, 360)                self.createChart()            def createChart(self):                #创建条状单元        barSet0 = QBarSet('Jane')        barSet1 = QBarSet('Jone')        barSet2 = QBarSet('Axel')        barSet3 = QBarSet('Mary')        barSet4 = QBarSet('Samantha')                barSet0.append([1, 2, 3, 4, 5, 6])        barSet1.append([5, 0, 0, 4, 0, 7])        barSet2.append([3, 5, 8, 13, 8, 5])        barSet3.append([5, 6, 7, 3, 4, 5])        barSet4.append([9, 7, 5, 3, 1, 2])                #条状图        barSeries = QPercentBarSeries()        barSeries.append(barSet0)        barSeries.append(barSet1)        barSeries.append(barSet2)        barSeries.append(barSet3)        barSeries.append(barSet4)                #创建图表        chart = QChart()        chart.addSeries(barSeries)        chart.setTitle('简单百分比柱状图示例')        chart.setAnimationOptions(QChart.SeriesAnimations) #设置成动画显示                #设置横向坐标(X轴)        categories = ['一月', '二月', '三月', '四月', '五月', '六月']        axisX = QBarCategoryAxis()        axisX.append(categories)        chart.addAxis(axisX, Qt.AlignBottom)        barSeries.attachAxis(axisX)                #设置纵向坐标(Y轴)        axisY = QValueAxis()        chart.addAxis(axisY, Qt.AlignLeft)        barSeries.attachAxis(axisY)                #图例属性        chart.legend().setVisible(True)        chart.legend().setAlignment(Qt.AlignBottom)                #图表视图        chartView = QChartView(chart)        chartView.setRenderHint(QPainter.Antialiasing)                self.setCentralWidget(chartView)              if __name__ == '__main__':    app = QApplication(sys.argv)    window = DemoPercentBarSeries()    window.show()    sys.exit(app.exec())   

运行结果如下图:

32cc5dba119d68e3c39d6f83875a40e3.gif

QChart百分比柱状图示例

本文知识点

  • 使用QPercentBarSeries绘制百分比柱状图。

前一篇: 实战PyQt5: 141-数据可视化之QChart箱形图



请多多关注,评论,收藏,点赞,和转发。