М
МишаDec. 12, 2017, 6:58 a.m.

QCustomPlot ложится при большем количестве точек

QCustomPlot

Добрый день.
На графике строю точки следующим образом. При большем количестве точек, программа ложится. Видимо это зависит от размера вектора. Может быть вы знаете в чем дело и как исправить?
if (XBuy1.size()>0)
    {
        NGraph=NGraph+1;
        NGraphBuy=NGraph;
        ui->customPlot->addGraph(ui->customPlot->xAxis, ui->customPlot->yAxis);  //Создает новый график внутри сюжета
        //ui->customPlot->graph(NGraph)->setPen(QPen(Qt::red));
        ui->customPlot->graph(NGraph)->setData(XBuy1, YBuy1);//сообщает данные графику
 
        //ui->customPlot->graph(1)->setLineStyle(QCPGraph::lsLine); //http://www.qcustomplot.com/documentation/classQCPGraph.html  lsLine - линия, lsNone- не рисует, lsImpulse -вертикальные линии до точки,lsStepCenter - горизонтальная линия идущая каскадом
        QCPScatterStyle myScatter; //описывает точки http://www.qcustomplot.com/documentation/classQCPScatterStyle.html
        myScatter.setShape(QCPScatterStyle::ssTriangle);//тип точки
        myScatter.setPen(QPen(Qt::green)); //внешний цвет точки
        myScatter.setBrush(Qt::green);  //внутренний цвет точки
        myScatter.setSize(SizePaint);  //размер точки
        ui->customPlot->graph(NGraph)->setScatterStyle(myScatter);
        ui->customPlot->graph(NGraph)->setLineStyle(QCPGraph::lsNone); //убирает линию
    }

 

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

4
Evgenii Legotckoi
  • Dec. 12, 2017, 1:26 p.m.

Добрый день
Если это зависит от количества... то чисто теоретически, возможно не хватает памяти на вашем ПК.

Структура вектора такова, что они в минимально варианте содержит только количество элементов и указатели в памяти на эти элементы. Поэтому размер будет ограничен максимальным целочисленным числом, которое может прожевать ПК.
Возможно проблема в чём-то другом, пробовали дебажить и смотреть, где падает?
    М
    • Dec. 13, 2017, 2:24 a.m.

    Странно. Само прошло. Но при попытке построить линии на видимой части экрана программа все еще исправно ложится. Дебаг ничего не говорит.

    Вот такой код стоял для построения линий на видимой части.
    if (XSell1.size()>0)//добовление линии между точками buy-sell на видимом участке
        {
            //NGraph=NGraph+1;
            for (long long i=0;i<YSell1.size();++i)
            {
                if((XBuy1[i]>FirstVisibleBar&&XBuy1[i]<LastVisibleBar)||(XSell1[i]>FirstVisibleBar&&XSell1[i]<LastVisibleBar))
                {
                    ui->customPlot->addGraph(ui->customPlot->xAxis, ui->customPlot->yAxis);  //Создает новый график внутри сюжета
                    QPen Pen1;
                    if(YSell1[i]>YBuy1[i])
                    {
                        Pen1.setColor(QColor(Qt::green));//ui->customPlot->graph()->setPen(QPen(Qt::green)); //graph()- Возвращает граф с индексом . Если индекс недействителен, он возвращает 0. -> line color blue for first graph
                    }
                    else
                    {
                        Pen1.setColor(QColor(Qt::red));//ui->customPlot->graph()->setPen(QPen(Qt::red));
                    }
                    ui->customPlot->graph()->addData(XBuy1[i],YBuy1[i]);
                    ui->customPlot->graph()->addData(XSell1[i],YSell1[i]);
                    Pen1.setWidthF(SizeLineBuy);//ширина линии
                    ui->customPlot->graph()->setPen(Pen1);
    
                }
            }
        }
        if (XCover1.size()>0)//добовление линии между точками short-cover на видимом участке
        {
            //NGraph=NGraph+1;
            for (long long i=0;i<YCover1.size();++i)
            {
                if((XShort1[i]>FirstVisibleBar&&XShort1[i]<LastVisibleBar)||(XCover1[i]>FirstVisibleBar&&XCover1[i]<LastVisibleBar))
                {
                    ui->customPlot->addGraph(ui->customPlot->xAxis, ui->customPlot->yAxis);  //Создает новый график внутри сюжета
                    QPen Pen1;
                    if(YShort1[i]>YCover1[i])
                    {
                        Pen1.setColor(QColor(Qt::green));//ui->customPlot->graph()->setPen(QPen(Qt::green)); //graph()- Возвращает граф с индексом . Если индекс недействителен, он возвращает 0. -> line color blue for first graph
                    }
                    else
                    {
                        Pen1.setColor(QColor(Qt::red));//ui->customPlot->graph()->setPen(QPen(Qt::red));
                    }
                    ui->customPlot->graph()->addData(XShort1[i],YShort1[i]);
                    ui->customPlot->graph()->addData(XCover1[i],YCover1[i]);
                    Pen1.setWidthF(SizeLineBuy);//ширина линии
                    ui->customPlot->graph()->setPen(Pen1);
                }
            }
        }

     

      Evgenii Legotckoi
      • Dec. 13, 2017, 2:53 a.m.

      Делайте, пожалуйста, отступы между символами > < && || и остальным текстом кода, всё сливается, читать невозможно. Как никак код стайл придумали не на пустом месте.

      Что касается Дебага, то скорее всего падает также из-за доступа к неинициализированной области памяти. В вашем примере кода не вижу ничего криминального. Нужно в режиме отладки ловить место падения и смотреть по информации, где может быть что-то битое.
        Docent
        • Jan. 15, 2020, 9:01 a.m.
        • (edited)

        Тут уже наверное поздно, но если кто еще столкнётся с этой проблемой - надо резервировать память под ваши вектора.

        QVector<double> X,Y;
        X.reserve(bigSize);
        X.resize(bigSize);
        Y.reserve(bigSize);
        Y.resize(bigSize);
        

          Comments

          Only authorized users can post comments.
          Please, Log in or Sign up
          AD

          C ++ - Test 004. Pointers, Arrays and Loops

          • Result:50points,
          • Rating points-4
          m

          C ++ - Test 004. Pointers, Arrays and Loops

          • Result:80points,
          • Rating points4
          m

          C ++ - Test 004. Pointers, Arrays and Loops

          • Result:20points,
          • Rating points-10
          Last comments
          i
          innorwallNov. 15, 2024, 3:03 a.m.
          Qt/C++ - Lesson 060. Configuring the appearance of the application in runtime I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
          i
          innorwallNov. 14, 2024, 8:07 p.m.
          Circuit switching and packet data transmission networks Angioedema 1 priligy dapoxetine
          i
          innorwallNov. 14, 2024, 7:42 p.m.
          How to Copy Files in Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
          i
          innorwallNov. 14, 2024, 5:09 p.m.
          Qt/C++ - Tutorial 068. Hello World using the CMAKE build system in CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
          i
          innorwallNov. 14, 2024, 12:05 p.m.
          EVILEG-CORE. Using Google reCAPTCHA 2001; 98 29 34 priligy buy
          Now discuss on the forum
          i
          innorwallNov. 14, 2024, 11:39 a.m.
          добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
          i
          innorwallNov. 11, 2024, 6:55 p.m.
          Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
          9
          9AnonimOct. 25, 2024, 4:10 p.m.
          Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

          Follow us in social networks