打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
实战PyQt5: 154

在图表制作中,有些情况需要将不同类型数据序列显示一个图表中,以显示对比效果,但是两者的数据所对应的坐标轴是不一样的,在这种情况线需要使用多坐标轴。

使用多坐标轴

QChart中图表序列,通常需要绑定两个坐标轴(水平X轴,垂直Y轴),对X轴和Y轴的绑定是分离的,这样为多坐标轴的使用提供极大的灵活性,最常见的应用是,两组图表序列数据共用一个坐标轴(比如X轴),另一个坐标做则是各种独立的,一个坐标轴的刻度的信息显示在左边,另一个坐标轴的刻度和信息显示在右边。

多坐标轴示例

示例显示了如何创建具有两个垂直轴的简单图表,完整代码如下:

import sys
from PyQt5.QtCore import Qt, QPointF
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from  PyQt5.QtChart import QChart, QChartView, QSplineSeries, QCategoryAxis, QValueAxis
 
class DemoMultipleAxes(QMainWindow):
    def __init__(self, parent=None):
        super(DemoMultipleAxes, self).__init__(parent)   
        
         # 设置窗口标题
        self.setWindowTitle('实战 Qt for Python: 多坐标轴演示')      
        # 设置窗口大小
        self.resize(480, 360)
        
        self.createChart()
    
    def createChart(self): 
        #创建图表
        chart = QChart()
        chart.legend().hide()
        chart.setTitle('多坐标轴图表示例')
        
        #添加x坐标轴
        axisX = QValueAxis()
        axisX.setTickCount(10)
        chart.addAxis(axisX, Qt.AlignBottom)
        
        #添加样条线1
        series = QSplineSeries()
        series << QPointF(1, 5) << QPointF(3.5, 18) << QPointF(4.8, 7.5) << QPointF(10, 2.5)
        chart.addSeries(series)
        
        #添加左边y轴
        axisY = QValueAxis()
        axisY.setLinePenColor(series.pen().color()) 
        chart.addAxis(axisY, Qt.AlignLeft)
        series.attachAxis(axisX)
        series.attachAxis(axisY) 
        
        #添加样条线2
        series = QSplineSeries()
        series.append(QPointF(1, 0.5))
        series.append(QPointF(1.5, 4.5))
        series.append(QPointF(2.4, 2.5))
        series.append(QPointF(4.3, 12.5))
        series.append(QPointF(5.2, 3.5))
        series.append(QPointF(7.4, 16.5))
        series.append(QPointF(8.3, 7.5))
        series.append(QPointF(10, 17))
        chart.addSeries(series)
        
        #添加右边Y轴
        axisY2 = QCategoryAxis()
        axisY2.append('低', 5)
        axisY2.append('中', 12)
        axisY2.append('高', 17)
        axisY2.setLinePenColor(series.pen().color())
        axisY2.setGridLinePen(series.pen())
        
        chart.addAxis(axisY2, Qt.AlignRight)
        series.attachAxis(axisX)
        series.attachAxis(axisY2)
        
        #图表视图
        chartView = QChartView(chart)
        chartView.setRenderHint(QPainter.Antialiasing)
        
        self.setCentralWidget(chartView)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = DemoMultipleAxes()
    window.show()
    sys.exit(app.exec())   

运行结果如下图:

QChart多坐标轴示例

本文知识点

  • 如何实现多坐标轴显示

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


前一篇: 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Qt QChart,利用QChart绘制动态曲线
VS2017中使用QT Chart图表
MSChart使用小结
MSChart控件文档资料合集
C# 实时折线图,波形图
chart 控件画柱状图和饼图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服