Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. how i can identify and read the columns of a csv file ?
Forum Updated to NodeBB v4.3 + New Features

how i can identify and read the columns of a csv file ?

Scheduled Pinned Locked Moved Solved General and Desktop
49 Posts 8 Posters 7.2k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J julie546

    @J-Hilk so I can't display a graph from a csv file?

    J.HilkJ Online
    J.HilkJ Online
    J.Hilk
    Moderators
    wrote on last edited by J.Hilk
    #15

    @julie546 thats not how programming works.

    I assume coordXList and coordYList are string lists ?

    than you may, and I emphasise may, get away with:

    QLineSeries * series = new QLineSeries ();
    for(int i{0}, j{qMin(coordXList.size(), coordYList.size())}; i<j; i++){
          series-> append (coordXList.at(i).toFloat(), coordYList.at(i).toFloat());
    }
    

    Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


    Q: What's that?
    A: It's blue light.
    Q: What does it do?
    A: It turns blue.

    J 1 Reply Last reply
    0
    • J.HilkJ J.Hilk

      @julie546 thats not how programming works.

      I assume coordXList and coordYList are string lists ?

      than you may, and I emphasise may, get away with:

      QLineSeries * series = new QLineSeries ();
      for(int i{0}, j{qMin(coordXList.size(), coordYList.size())}; i<j; i++){
            series-> append (coordXList.at(i).toFloat(), coordYList.at(i).toFloat());
      }
      
      J Offline
      J Offline
      julie546
      wrote on last edited by julie546
      #16

      @J-Hilk yes here is my output ("Y", "0.170138", "0.161089", "0.15901", "0.157898", "0.159706", "0.162481", "0.167204", "0.172876", "0.169802", "0.1677",.....................)
      theres an error with series-> append (coordXList.at(i).toFloat(), coordYList.toFloat());
      no member named toFloat in QStringList
      @KroMignon @J-Hilk can you help me please I am a beginner c ++ I am a student in mechanics but I need qt for my end of study internship

      J.HilkJ KroMignonK 2 Replies Last reply
      0
      • J julie546

        @J-Hilk yes here is my output ("Y", "0.170138", "0.161089", "0.15901", "0.157898", "0.159706", "0.162481", "0.167204", "0.172876", "0.169802", "0.1677",.....................)
        theres an error with series-> append (coordXList.at(i).toFloat(), coordYList.toFloat());
        no member named toFloat in QStringList
        @KroMignon @J-Hilk can you help me please I am a beginner c ++ I am a student in mechanics but I need qt for my end of study internship

        J.HilkJ Online
        J.HilkJ Online
        J.Hilk
        Moderators
        wrote on last edited by
        #17

        @julie546 said in how i can identify and read the columns of a csv file ?:

        no member named toFloat in QStringList

        typo on my side, fixed it, but you should be able to fix that as well


        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


        Q: What's that?
        A: It's blue light.
        Q: What does it do?
        A: It turns blue.

        1 Reply Last reply
        0
        • J julie546

          @J-Hilk yes here is my output ("Y", "0.170138", "0.161089", "0.15901", "0.157898", "0.159706", "0.162481", "0.167204", "0.172876", "0.169802", "0.1677",.....................)
          theres an error with series-> append (coordXList.at(i).toFloat(), coordYList.toFloat());
          no member named toFloat in QStringList
          @KroMignon @J-Hilk can you help me please I am a beginner c ++ I am a student in mechanics but I need qt for my end of study internship

          KroMignonK Offline
          KroMignonK Offline
          KroMignon
          wrote on last edited by KroMignon
          #18

          @julie546 said in how i can identify and read the columns of a csv file ?:

          can you help me please I am a beginner c ++ I am a student in mechanics but I need qt for my end of study internship

          We have all started as beginner. I have studied electronics, not informatics, so I understand well your problem ;)

          The easiest way to create the QLineSeries, is to do it while parsing:

          QLineSeries * series = new QLineSeries();
          while (!filelidar.atEnd()) {
              QString line = filelidar.readLine();
              const auto parts = line.split (',');
              if(parts.size() >= 2)
              {
                  bool ok;
                  qreal x = parts.at(0).toFloat(&ok);
                  if(!ok)
                      continue;
                  qreal y = parts.at(1).toFloat(&ok);
                  if(!ok)
                      continue;
                 series->append(x, y);
              }
          }
          

          It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

          J 1 Reply Last reply
          4
          • KroMignonK KroMignon

            @julie546 said in how i can identify and read the columns of a csv file ?:

            can you help me please I am a beginner c ++ I am a student in mechanics but I need qt for my end of study internship

            We have all started as beginner. I have studied electronics, not informatics, so I understand well your problem ;)

            The easiest way to create the QLineSeries, is to do it while parsing:

            QLineSeries * series = new QLineSeries();
            while (!filelidar.atEnd()) {
                QString line = filelidar.readLine();
                const auto parts = line.split (',');
                if(parts.size() >= 2)
                {
                    bool ok;
                    qreal x = parts.at(0).toFloat(&ok);
                    if(!ok)
                        continue;
                    qreal y = parts.at(1).toFloat(&ok);
                    if(!ok)
                        continue;
                   series->append(x, y);
                }
            }
            
            J Offline
            J Offline
            julie546
            wrote on last edited by julie546
            #19

            @KroMignon yes it's really difficult to work in a field that you don't study
            thank you for your answer I tried like that but I still have an empty curve

            if (!filelidar.open(QFile::ReadOnly | QFile::Text) ) {
            qDebug() << "File not exists";
            } else {

                               QLineSeries * series = new QLineSeries();
                                       while (!filelidar.atEnd()) {
                                           QString line = filelidar.readLine();
                                           const auto parts = line.split (',');
                                           if(parts.size() >= 2)
                                           {
                                               bool ok;
                                               qreal x = parts.at(0).toFloat(&ok);
                                               if(!ok)
                                                   continue;
                                               qreal y = parts.at(1).toFloat(&ok);
                                               if(!ok)
                                                   continue;
                                              series->append(x, y);
                                           }
                                       }
            
            
            
                                   QChart *chart = new QChart(); 
                                   chart->legend()->hide();
                                   chart->addSeries(series);
                                   chart->createDefaultAxes();
                                   chart->setTitle("Lidar tg15"); 
            
                                   QChartView *chartView = new QChartView(chart);
                                   chartView->setRenderHint(QPainter::Antialiasing);
            
                                   QMainWindow window; 
                                   window.setCentralWidget(chartView); 
                                   window.resize(1000, 1000); 
                                   window.show(); /
            

            }
            }

            Pl45m4P 1 Reply Last reply
            0
            • J julie546

              @KroMignon yes it's really difficult to work in a field that you don't study
              thank you for your answer I tried like that but I still have an empty curve

              if (!filelidar.open(QFile::ReadOnly | QFile::Text) ) {
              qDebug() << "File not exists";
              } else {

                                 QLineSeries * series = new QLineSeries();
                                         while (!filelidar.atEnd()) {
                                             QString line = filelidar.readLine();
                                             const auto parts = line.split (',');
                                             if(parts.size() >= 2)
                                             {
                                                 bool ok;
                                                 qreal x = parts.at(0).toFloat(&ok);
                                                 if(!ok)
                                                     continue;
                                                 qreal y = parts.at(1).toFloat(&ok);
                                                 if(!ok)
                                                     continue;
                                                series->append(x, y);
                                             }
                                         }
              
              
              
                                     QChart *chart = new QChart(); 
                                     chart->legend()->hide();
                                     chart->addSeries(series);
                                     chart->createDefaultAxes();
                                     chart->setTitle("Lidar tg15"); 
              
                                     QChartView *chartView = new QChartView(chart);
                                     chartView->setRenderHint(QPainter::Antialiasing);
              
                                     QMainWindow window; 
                                     window.setCentralWidget(chartView); 
                                     window.resize(1000, 1000); 
                                     window.show(); /
              

              }
              }

              Pl45m4P Offline
              Pl45m4P Offline
              Pl45m4
              wrote on last edited by Pl45m4
              #20

              @julie546 said in how i can identify and read the columns of a csv file ?:

              qreal x = parts.at(0).toFloat(&ok);
              if(!ok)
              continue;
              qreal y = parts.at(1).toFloat(&ok);

              Print the values for x and y and check if these are the values from your file.
              The code from @KroMignon doesn't look wrong.


              If debugging is the process of removing software bugs, then programming must be the process of putting them in.

              ~E. W. Dijkstra

              J 1 Reply Last reply
              0
              • Pl45m4P Pl45m4

                @julie546 said in how i can identify and read the columns of a csv file ?:

                qreal x = parts.at(0).toFloat(&ok);
                if(!ok)
                continue;
                qreal y = parts.at(1).toFloat(&ok);

                Print the values for x and y and check if these are the values from your file.
                The code from @KroMignon doesn't look wrong.

                J Offline
                J Offline
                julie546
                wrote on last edited by julie546
                #21

                @Pl45m4 @KroMignon yes I have checked I have the right values ​​now I have a graph but it is not the same that I do with the csv file, I cannot find the same graph, what do you think please ?

                KroMignonK 1 Reply Last reply
                0
                • J julie546

                  @Pl45m4 @KroMignon yes I have checked I have the right values ​​now I have a graph but it is not the same that I do with the csv file, I cannot find the same graph, what do you think please ?

                  KroMignonK Offline
                  KroMignonK Offline
                  KroMignon
                  wrote on last edited by
                  #22

                  @julie546 said in how i can identify and read the columns of a csv file ?:

                  but it is not the same that I do with the csv file,

                  What do you mean with not the same?

                  It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                  J 1 Reply Last reply
                  1
                  • KroMignonK KroMignon

                    @julie546 said in how i can identify and read the columns of a csv file ?:

                    but it is not the same that I do with the csv file,

                    What do you mean with not the same?

                    J Offline
                    J Offline
                    julie546
                    wrote on last edited by
                    #23

                    @KroMignon this is what I found with qt1.PNG

                    and this is what I have to find
                    2.PNG

                    despite I made qDebug () << x;
                    qDebug () << y;
                    and I found the same values with csv file

                    J 1 Reply Last reply
                    0
                    • J julie546

                      @KroMignon this is what I found with qt1.PNG

                      and this is what I have to find
                      2.PNG

                      despite I made qDebug () << x;
                      qDebug () << y;
                      and I found the same values with csv file

                      J Offline
                      J Offline
                      julie546
                      wrote on last edited by julie546
                      #24
                      This post is deleted!
                      mrjjM 1 Reply Last reply
                      0
                      • J julie546

                        This post is deleted!

                        mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #25

                        @julie546
                        Hi
                        If you look closely they are the same.
                        Its just you are using QLineSeries which draws lines between the points so
                        that why it looks differernt.

                        Maybe the scatter type can be used
                        https://doc.qt.io/qt-5/qtcharts-scatterchart-example.html

                        instead of the LineSeries.

                        J 1 Reply Last reply
                        2
                        • mrjjM mrjj

                          @julie546
                          Hi
                          If you look closely they are the same.
                          Its just you are using QLineSeries which draws lines between the points so
                          that why it looks differernt.

                          Maybe the scatter type can be used
                          https://doc.qt.io/qt-5/qtcharts-scatterchart-example.html

                          instead of the LineSeries.

                          J Offline
                          J Offline
                          julie546
                          wrote on last edited by
                          #26

                          @mrjj
                          thank you for your reply I have changed it but there are some missing points3.PNG
                          QScatterSeries * series = new QScatterSeries;
                          series->setMarkerShape(QScatterSeries::MarkerShapeRectangle);

                          mrjjM S 2 Replies Last reply
                          0
                          • J julie546

                            @mrjj
                            thank you for your reply I have changed it but there are some missing points3.PNG
                            QScatterSeries * series = new QScatterSeries;
                            series->setMarkerShape(QScatterSeries::MarkerShapeRectangle);

                            mrjjM Offline
                            mrjjM Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on last edited by
                            #27

                            @julie546
                            Well it does look more like it
                            so the question if those points go missing during reading or where they go.

                            What does the draw correct looking diagram ?
                            I mean what app ?

                            J 1 Reply Last reply
                            0
                            • mrjjM mrjj

                              @julie546
                              Well it does look more like it
                              so the question if those points go missing during reading or where they go.

                              What does the draw correct looking diagram ?
                              I mean what app ?

                              J Offline
                              J Offline
                              julie546
                              wrote on last edited by
                              #28

                              @mrjj it is a 'lidar tg15' sensor
                              i did series->append(x, y);
                              qDebug() << y;
                              qDebug() << x;
                              and I found all the points

                              mrjjM 1 Reply Last reply
                              0
                              • J julie546

                                @mrjj it is a 'lidar tg15' sensor
                                i did series->append(x, y);
                                qDebug() << y;
                                qDebug() << x;
                                and I found all the points

                                mrjjM Offline
                                mrjjM Offline
                                mrjj
                                Lifetime Qt Champion
                                wrote on last edited by
                                #29

                                @julie546
                                Ok but the right diagram you showed the picture of.
                                Did you hand draw this or did an app do it?

                                since no points is missing im simply wondering if that data would allow the correct diagram at all.

                                J 1 Reply Last reply
                                0
                                • mrjjM mrjj

                                  @julie546
                                  Ok but the right diagram you showed the picture of.
                                  Did you hand draw this or did an app do it?

                                  since no points is missing im simply wondering if that data would allow the correct diagram at all.

                                  J Offline
                                  J Offline
                                  julie546
                                  wrote on last edited by
                                  #30

                                  @mrjj 2.PNG
                                  it's from excel

                                  mrjjM 1 Reply Last reply
                                  0
                                  • J julie546

                                    @mrjj 2.PNG
                                    it's from excel

                                    mrjjM Offline
                                    mrjjM Offline
                                    mrjj
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #31

                                    @julie546
                                    ok. and you used the same CSV file there ?

                                    and you compared the values we insert, value by value to make sure it reads as it should ?

                                    I mean if it could not convert for some reason it would silently continue.

                                     if(!ok)
                                       continue;
                                    

                                    some of the points to the far right seems more out there than on correct diagram.
                                    should be around 6.0 but is 6.8

                                    J 1 Reply Last reply
                                    2
                                    • mrjjM mrjj

                                      @julie546
                                      ok. and you used the same CSV file there ?

                                      and you compared the values we insert, value by value to make sure it reads as it should ?

                                      I mean if it could not convert for some reason it would silently continue.

                                       if(!ok)
                                         continue;
                                      

                                      some of the points to the far right seems more out there than on correct diagram.
                                      should be around 6.0 but is 6.8

                                      J Offline
                                      J Offline
                                      julie546
                                      wrote on last edited by
                                      #32

                                      @mrjj yes it's from the same csv file
                                      i have on the csv file 1500 value

                                      JonBJ 1 Reply Last reply
                                      0
                                      • J julie546

                                        @mrjj yes it's from the same csv file
                                        i have on the csv file 1500 value

                                        JonBJ Online
                                        JonBJ Online
                                        JonB
                                        wrote on last edited by
                                        #33

                                        @julie546
                                        As @mrjj said, just to humour us, in the two places you have

                                                if(!ok)
                                                    continue;
                                        

                                        please put in above the if

                                        Q_ASSERT(ok);
                                        

                                        (You'll need to have included #include <QtGlobal>, but probably something else you are including will have done this.)

                                        KroMignonK 1 Reply Last reply
                                        1
                                        • JonBJ JonB

                                          @julie546
                                          As @mrjj said, just to humour us, in the two places you have

                                                  if(!ok)
                                                      continue;
                                          

                                          please put in above the if

                                          Q_ASSERT(ok);
                                          

                                          (You'll need to have included #include <QtGlobal>, but probably something else you are including will have done this.)

                                          KroMignonK Offline
                                          KroMignonK Offline
                                          KroMignon
                                          wrote on last edited by
                                          #34

                                          @JonB said in how i can identify and read the columns of a csv file ?:

                                          As @mrjj said, just to humour us, in the two places you have
                                          if(!ok)
                                          continue;

                                          please put in above the if
                                          Q_ASSERT(ok);

                                          The reason why there is continue, is because the CSV file contains the column headers, which are strings and cannot be converted to float.
                                          With Q_ASSERT() the program will be interrupted.

                                          It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                                          mrjjM JonBJ 2 Replies Last reply
                                          1

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved