ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

QCustomPlot基础教程(三)——在Qt中绘制多条曲线(拓展)

2021-09-07 12:30:05  阅读:649  来源: 互联网

标签:阶跃 QCPGraph Qt customPlot graph QCustomPlot 基础教程 80 绘制


上一节介绍了Qt中多个曲线绘制的基本方法,本文对其进行拓展,介绍多条曲线绘制时如何自动更改颜色以及自动更改线条类型的方法。

目录

1、前言

基础部分就不过多介绍了,不懂得可以直接参考:QCustomPlot基础教程(一)——QCustomPlot的安装及基础实例,直接上代码。

2、代码示例

代码如下:

QCustomPlot *customPlot = ui->customPlot;//创建customPlot
    QPen pen;
    QStringList lineNames;
    lineNames << "lsNone" << "lsLine" << "lsStepLeft" << "lsStepRight" << "lsStepCenter" << "lsImpulse";

    for (int i = QCPGraph::lsNone; i <= QCPGraph::lsImpulse; ++i)
    {
        customPlot->addGraph();
        pen.setColor(QColor(qSin(i*1+1.2)*80+80, qSin(i*0.3+0)*80+80, qSin(i*0.3+1.5)*80+80));
        customPlot->graph()->setPen(pen);       // 设置画笔
        customPlot->graph()->setName(lineNames.at(i-QCPGraph::lsNone));//图例名称
        customPlot->graph()->setLineStyle((QCPGraph::LineStyle)i);  // 线段风格
        customPlot->graph()->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssCircle, 5));//设置散点形状
        customPlot->legend->setVisible(true); // 显示图例

        QVector<double> x(15), y(15);
        for (int j=0; j<15; ++j)
        {
            x[j] = j/15.0 * 5*3.14 + 0.01;
            y[j] = 7*qSin(x[j])/x[j] - (i-QCPGraph::lsNone)*5 + (QCPGraph::lsImpulse)*5 + 2;
        }
        customPlot->graph()->setData(x, y);//x和y
        customPlot->graph()->rescaleAxes(true);//自动调整XY轴的范围
    }

3、运行结果

在这里插入图片描述

4、解释说明

这里主要解释一下LineStyleScatterShape这两个函数。

enum QCPGraph::LineStyle
定义图形线在绘图中的视觉表示方式。

参数描述
lsNone数据点不与任何线连接
lsLine数据点由一条直线连接
lsStepLeft将线绘制为阶跃,其中阶跃高度为左侧数据点的值
lsStepRight将线绘制为阶跃,其中阶跃高度为右侧数据点的值
lsStepCenter当阶跃位于两个数据点之间时,将线绘制为阶跃
lsImpulse每个数据点由一条平行于值轴的线表示(脉冲线)

enum QCPScatterStyle::ScatterShape
设置散点形状

名称形状描述
ssNone不绘制散点符号
ssDot.单点
ssCrossx交叉
ssPlus+
ssCircleo圆圈
ssDisc实心圆圈(圈内为pen颜色)

标签:阶跃,QCPGraph,Qt,customPlot,graph,QCustomPlot,基础教程,80,绘制
来源: https://blog.csdn.net/didi_ya/article/details/120155536

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有