当前位置:   article > 正文

实战PyQt5: 147-QChart图表之使用多种类型图表_qt 图表数据分类展示

qt 图表数据分类展示

在前面的文章中,我们介绍了各种图表的基本样式,演示了各种图表序列的创建方法,在本文我们将多种不同的图表序列显示在一个图表中。

一个图表中显示多种类型的图表序列

在实际应用中,常常需要在一个图表中显示多种不同的图表序列,比如一个常见的例子就是同时在一个图表中显示折线图和柱状图。为了使图标能正确地显示多个不同类型的图表序列,必须为这些图表创建统一的自定义坐标轴。如果不创建自定义坐标轴,那么每个单独的图表序列将按比例缩放以使用图表的最大面积来显示,对单个图表序列,这样做完全没有问题,对多个图表序列,则会造成不正确的显示效果。

多图表序列测试

示例显示了如何组合不同的图表并正确设置坐标轴。在示例中,我们使用相同的坐标轴,将线形图与条形图组合在一起。完整代码如下:

  1. import sys
  2. from PyQt5.QtGui import QPainter, QPen
  3. from PyQt5.QtCore import Qt, QPoint
  4. from PyQt5.QtWidgets import QApplication, QMainWindow
  5. from  PyQt5.QtChart import (QChartView, QChart, QBarSeries, QBarSet, QLineSeries,
  6.                             QLegend, QBarCategoryAxis, QValueAxis)
  7.  
  8. class DemoLineAndBar(QMainWindow):
  9.     def __init__(self, parent=None):
  10.         super(DemoLineAndBar, self).__init__(parent)   
  11.         
  12.          # 设置窗口标题
  13.         self.setWindowTitle('实战 Qt for Python: 多种类型图表演示')      
  14.         # 设置窗口大小
  15.         self.resize(480360)
  16.         
  17.         self.createChart()
  18.         
  19.     def createChart(self):
  20.         
  21.         #创建条状单元
  22.         barSet0 = QBarSet('Jane')
  23.         barSet1 = QBarSet('Jone')
  24.         barSet2 = QBarSet('Axel')
  25.         barSet3 = QBarSet('Mary')
  26.         barSet4 = QBarSet('Sam')
  27.         
  28.         barSet0.append([123456])
  29.         barSet1.append([500407])
  30.         barSet2.append([3581385])
  31.         barSet3.append([567345])
  32.         barSet4.append([975312])
  33.         
  34.         #条状图
  35.         barSeries = QBarSeries()
  36.         barSeries.append(barSet0)
  37.         barSeries.append(barSet1)
  38.         barSeries.append(barSet2)
  39.         barSeries.append(barSet3)
  40.         barSeries.append(barSet4)
  41.         
  42.         #设置折线数据
  43.         lineSeries = QLineSeries()
  44.         lineSeries.setName('trend')
  45.         lineSeries.append(QPoint(04))
  46.         lineSeries.append(QPoint(115))
  47.         lineSeries.append(QPoint(220))
  48.         lineSeries.append(QPoint(34))
  49.         lineSeries.append(QPoint(412))
  50.         lineSeries.append(QPoint(517))
  51.          
  52.         #创建图表
  53.         chart = QChart()
  54.         chart.addSeries(barSeries)
  55.         chart.addSeries(lineSeries)
  56.         chart.setTitle('折线图+柱状图示例')
  57.         
  58.         #设置横向坐标(X轴)
  59.         categories = ['一月''二月''三月''四月''五月''六月']
  60.         axisX = QBarCategoryAxis()
  61.         axisX.append(categories)
  62.         chart.addAxis(axisX, Qt.AlignBottom)
  63.         barSeries.attachAxis(axisX)
  64.         lineSeries.attachAxis(axisX)
  65.         axisX.setRange('一月''六月')
  66.         
  67.         #设置纵向坐标(Y轴)
  68.         axisY = QValueAxis()
  69.         axisY.setRange(020)
  70.         chart.addAxis(axisY, Qt.AlignLeft)
  71.         barSeries.attachAxis(axisY)
  72.         lineSeries.attachAxis(axisY)
  73.         
  74.         #图例属性
  75.         chart.legend().setVisible(True)
  76.         chart.legend().setAlignment(Qt.AlignBottom)
  77.         
  78.         #图表视图
  79.         chartView = QChartView(chart)
  80.         chartView.setRenderHint(QPainter.Antialiasing)
  81.         
  82.         self.setCentralWidget(chartView)
  83.       
  84.         
  85. if __name__ == '__main__':
  86.     app = QApplication(sys.argv)
  87.     window = DemoLineAndBar()
  88.     window.show()
  89.     sys.exit(app.exec())   

运行结果如下图:

 QChart多类型图表组合

本文知识点

  • 多种类型的图表序列组合在一个图表中。
  • 在一个图表中,多种图表序列使用统一的坐标轴。

前一篇:实战PyQt5: 146-QChart图表之水平堆积柱状图

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/132444
推荐阅读
相关标签
  

闽ICP备14008679号