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 4.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

    @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 Offline
                          JonBJ Offline
                          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
                            • KroMignonK KroMignon

                              @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.

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

                              @KroMignon
                              ah so it should skip first col. always. good catch.
                              Im just wondering if all points really get converted as
                              else i dont see how the graphs can be that differnt.

                              1 Reply Last reply
                              0
                              • KroMignonK KroMignon

                                @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.

                                JonBJ Offline
                                JonBJ Offline
                                JonB
                                wrote on last edited by
                                #36

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

                                The reason why there is continue, is because the CSV file contains the column header

                                Surely that's for the first line only?

                                J 1 Reply Last reply
                                0
                                • JonBJ JonB

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

                                  The reason why there is continue, is because the CSV file contains the column header

                                  Surely that's for the first line only?

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

                                  @JonB @mrjj @KroMignon
                                  I remove the headers and I replace
                                  if (! ok)
                                  continue;
                                  by Q_ASSERT (ok);
                                  but it's the same result

                                  KroMignonK 1 Reply Last reply
                                  0
                                  • J julie546

                                    @JonB @mrjj @KroMignon
                                    I remove the headers and I replace
                                    if (! ok)
                                    continue;
                                    by Q_ASSERT (ok);
                                    but it's the same result

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

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

                                    I remove the headers and I replace
                                    if (! ok)
                                    continue;
                                    by Q_ASSERT (ok);
                                    but it's the same result

                                    I suppose it is a simple precision issue, you should replace toFloat() with toDouble():

                                    while (!filelidar.atEnd()) {
                                        QString line = filelidar.readLine();
                                        const auto parts = line.split (',');
                                        if(parts.size() >= 2)
                                        {
                                            bool ok;
                                            qreal x = parts.at(0).toDouble(&ok);
                                            if(!ok)
                                            {
                                                qDebug() << "Could not parse X value" << parts.at(0);
                                                continue;
                                            }
                                            qreal y = parts.at(1).toDouble(&ok);
                                            if(!ok)
                                            {
                                                qDebug() << "Could not parse Y value" << parts.at(1);
                                                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
                                    0
                                    • KroMignonK KroMignon

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

                                      I remove the headers and I replace
                                      if (! ok)
                                      continue;
                                      by Q_ASSERT (ok);
                                      but it's the same result

                                      I suppose it is a simple precision issue, you should replace toFloat() with toDouble():

                                      while (!filelidar.atEnd()) {
                                          QString line = filelidar.readLine();
                                          const auto parts = line.split (',');
                                          if(parts.size() >= 2)
                                          {
                                              bool ok;
                                              qreal x = parts.at(0).toDouble(&ok);
                                              if(!ok)
                                              {
                                                  qDebug() << "Could not parse X value" << parts.at(0);
                                                  continue;
                                              }
                                              qreal y = parts.at(1).toDouble(&ok);
                                              if(!ok)
                                              {
                                                  qDebug() << "Could not parse Y value" << parts.at(1);
                                                  continue;
                                              }
                                              series->append(x, y);
                                          }
                                      }
                                      
                                      J Offline
                                      J Offline
                                      julie546
                                      wrote on last edited by
                                      #39

                                      @KroMignon thank you for your answer you helped me a lot,I tried it but it's the same thing, you don't think it's about this instruction ?
                                      QScatterSeries * series = new QScatterSeries;
                                      series->setMarkerShape(QScatterSeries::MarkerShapeRectangle);

                                      KroMignonK JonBJ 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);

                                        S Offline
                                        S Offline
                                        SimonSchroeder
                                        wrote on last edited by
                                        #40

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

                                        thank you for your reply I have changed it but there are some missing points

                                        I am not sure that these points are actually missing. As far as I can tell you draw the points as blue squares with a white border (on a white background). If you look closely a lot of points are almost vanishing in the drawing (and some will vanish altogether). This is because the points are to close together (and some unfortunate pattern in your data) that the points overlap excactly so that you only see the white border of neighboring points (actually you don't see them as they are white on white). This makes it seem as if the points are missing.

                                        Try changing either the background color or the color of the borders of the data points. Or remove the border to be comparable to Excel (if that is what you want). I can't help you with the right functions as I have never used these charts.

                                        1 Reply Last reply
                                        0
                                        • J julie546

                                          @KroMignon thank you for your answer you helped me a lot,I tried it but it's the same thing, you don't think it's about this instruction ?
                                          QScatterSeries * series = new QScatterSeries;
                                          series->setMarkerShape(QScatterSeries::MarkerShapeRectangle);

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

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

                                          series->setMarkerShape(QScatterSeries::MarkerShapeRectangle);

                                          This will only change the way the point is draw (https://doc.qt.io/qt-5/qscatterseries.html#markerShape-prop).
                                          I don't think this will change anything.

                                          Are you sure you have exported all points in your CSV file?
                                          For me, it looks like positions are missed.

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

                                          1 Reply Last reply
                                          0

                                          • Login

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