实战PyQt5: 138-QChart图表之样条曲线

本文介绍如何使用PyQt5中的QSplineSeries类创建样条曲线图表。样条曲线是一种平滑曲线,通过一系列给定的控制点并保持一阶和二阶导数的连续性。文中提供了一个简单的样条图示例,展示了如何添加数据点并自动计算控制点以绘制样条线。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

样条曲线(Spline Curves)是指给定一组控制点而得到一条曲线。样条曲线是经过一系列给定点的光滑曲线。最初,样条曲线都是借助于物理样条得到的,放样员把富有弹性的细木条(或有机玻璃条),用压铁固定在曲线应该通过的给定型值点处,样条做自然弯曲所绘制出来的曲线就是样条曲线。样条曲线不仅通过各有序型值点,并且在各型值点处的一阶和二阶导数连续,也即该曲线具有连续的、曲率变化均匀的特点。QChart中提供类QSplineSeries来创建样条曲线显示。

QSplineSeries

QSplineSeries类将数据显示为样条图。在样条中存储QPainterPath绘制样条所需的数据点和段控制点。数据更改时,将自动计算控制点。以便可以绘制法线样条。

以下代码说明了如何创建基本的样条图:

series = QSplineSeries()
series.append(0, 6)
series.append(2, 4)
...
chart.addSeries(series)

样条曲线示例

示例代码显示了如何创建简单的样条图。要创建样条图,我们需要将数据放入QSplineSeries中。QSplineSeries自动计算正确绘制样条线所需的样条线段控制点。然后将添加好数据的QSplineSeries对象添加到图表中,并用图表视图显示出来。完整代码如下:

import sys
from PyQt5.QtCore import Qt, QPointF
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QApplication, QMainWindow
from  PyQt5.QtChart import QChartView, QChart, QSplineSeries
 
class DemoChartSpline(QMainWindow):
    def __init__(self, parent=None):
        super(DemoChartSpline, self).__init__(parent)   
        
         # 设置窗口标题
        self.setWindowTitle('实战 Qt for Python: QChart样条曲线演示')      
        # 设置窗口大小
        self.resize(480, 360)
        
        self.createChart()
        
    def createChart(self):
        
        #样条图
        splineSeries = QSplineSeries()
        splineSeries.setName('spline')
        
        splineSeries.append(0, 6)
        splineSeries.append(2, 4)
        splineSeries.append(3, 8)
        splineSeries.append(7, 4)
        splineSeries.append(10, 5)
        splineSeries << QPointF(11, 1) << QPointF(13, 3) << QPointF(17, 6) << QPointF(18, 3) << QPointF(20, 2)
        
        #创建图表
        chart = QChart()
        chart.legend().hide()
        chart.addSeries(splineSeries)
        chart.setTitle('简单样条曲线示例')
        chart.createDefaultAxes()
        chart.axes(Qt.Vertical)[0].setRange(0, 10) #纵坐标数值范围
         
        #图表视图
        chartView = QChartView(chart)
        chartView.setRenderHint(QPainter.Antialiasing)
        
        self.setCentralWidget(chartView)
      
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = DemoChartSpline()
    window.show()
    sys.exit(app.exec())   

运行结果如下图:

 QChart样条曲线演示

本文知识点

  • 了解样条曲线。
  • 使用QSplineSeries绘制样条曲线。

前一篇:实战PyQt5: 137-QChart图表之散点图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值