QCustomPlot实现不连续曲线

使用QCustomPlot时,遇到数据不连续需要断开显示的情况,发现可以通过添加qQNaN()来实现,发个文章mark一下。

先贴效果

代码如下:

    double key;
    QDateTime dt(QDateTime::currentDateTime());
    int size = 24*60/5;
    double start = 20;
    double stop = 30;
    double space = 10.0/size;
    for(int i = 0;i<size;i++){
        key = dt.toTime_t();
        plot->graph(0)->addData(key,start + space*i);// 插入第一段数据
        dt = dt.addSecs(5*60);
    }
    for(int i = 0;i<size;i++){
        key = dt.toTime_t();
        plot->graph(0)->addData(key,qQNaN());// 插入空白数据
        dt = dt.addSecs(5*60);
    }
    for(int i = 0;i<size;i++){
        key = dt.toTime_t();
        plot->graph(0)->addData(key,stop - space*i);// 插入第二段数据
        dt = dt.addSecs(5*60);
    }

补充:

上面写的方法插入和多次空数据,实际上只需要在上段数据尾端插入一次就有效果啦

    double key;
    QDateTime dt(QDateTime::currentDateTime());
    int size = 24*60/5;
    double start = 20;
    double stop = 30;
    double space = 10.0/size;
    for(int i = 0;i<size;i++){
        key = dt.toTime_t();
        plot->graph(0)->addData(key,start + space*i);// 插入第一段数据
        dt = dt.addSecs(5*60);
    }
    //for(int i = 0;i<size;i++){
        key = dt.toTime_t();
        plot->graph(0)->addData(key,qQNaN());//只需在插入一次空数据即可
    //    dt = dt.addSecs(size*5*60);
    //}
    dt = dt.addSecs(5*60);// 空白的时间

    for(int i = 0;i<size;i++){
        key = dt.toTime_t();
        plot->graph(0)->addData(key,stop - space*i);// 插入第二段数据
        dt = dt.addSecs(5*60);
    }

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值