Qt Chart绘制曲线需要注意事项-绘制Python返回的大量数据

1、工程配置:

需要在 .pro文件中加入  

QT       += charts

2、声明作用域

(类似 using namespace std), 否则无法正常使用其中的方法

QT_CHARTS_BEGIN_NAMESPACE

class QChart;

QT_CHARTS_END_NAMESPACE

QT_CHARTS_USE_NAMESPACE

3、获得Python返回的list,并转换为QT可用的数组

    PyObject* pylist=PyObject_CallFunction(pFun,NULL);      // pylist从python中获得的list的返回值,需进行转换

    int length=PyObject_Size(pylist);

    int signal_item;

    PyObject *list_item = NULL;

    for(int i=0;i<length;++i)

    {

        list_item = PyList_GetItem(pylist, i);

        signal_item=PyLong_AsLong(list_item);

        series->append(i,signal_item);         // 获得每一个转换后的返回值并进行append

    }

4、设置chart

    axis=new QValueAxis;

    series = new QSplineSeries();

    chart = new QChart();

    chart->addSeries(series);       // 后续如果想修改原来的series直接append就行了,图表会自动更新

    chart->legend()->hide();

    chart->createDefaultAxes();

    chart->setAxisX(axis,series);      //设置坐标必须在createDefaultAxes方法之后

    chart->axisX()->setRange(0,100);        

    chart->axisY()->setRange(-100,100);

    chart->setAnimationOptions(QChart::AllAnimations);  //动态画图

    chart->setTitle("Simple line chart example");

5、需要进行改进的地方及记录

(1)x 轴的坐标最大可以设置上百亿,不用担心坐标不够用的问题

(3)可以启动OpenGL加速图表的绘制

(4)当数据量大的时候关闭动态绘图,会节省很多的资源,绘图会快很多

(5)每次添加新数据的时候,尽量使用replace代替append,replace在官方文档里也有说明,比append要快很多,append添加2048就得大概一秒,而replace添加10000个点连续进行绘制显示都没什么问题。避免此坑

        https://blog.csdn.net/weixin_41712355/article/details/82217607

        https://blog.csdn.net/baidu_28572705/article/details/82423680

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值