Difference between revisions of "Gnuplot in cpp"

From AIRWiki
Jump to: navigation, search
Line 20: Line 20:
 
     if(ANIMATIONON){
 
     if(ANIMATIONON){
 
         // GNUPLOT
 
         // GNUPLOT
 
 
         // GNUPLOT INITIALIZATION
 
         // GNUPLOT INITIALIZATION
 
         Gnuplot gp("My plot");
 
         Gnuplot gp("My plot");
Line 38: Line 37:
 
         {
 
         {
 
             cout << ge.what() << endl;
 
             cout << ge.what() << endl;
        }
+
        }
 
+
 
       } // END GNUPLOT
 
       } // END GNUPLOT
  
 
</code>
 
</code>

Revision as of 12:53, 4 November 2009

How to plot using gnuplot in your C/C++ programs


This is a little guide that shows you how you can add a plotting function in your C/C++ program. This approach has some advantages and disadvantages:

PROS - You don't need to write on files or similar and plot in a second moment through a Matlab/Octave/Gnuplot script

CONTRAS - You don't have all the potentiality of Matlab/Octave plotting even if you can program your plotting utilities

HOW TO


  1. You should download gnuplot-cpp library. I suggest you to use my version LINKHERE because the official one gnuplot-cpphas problems, (see below).
  2. To use the plotting library you should only need to include: "gnuplot-cpp/gnuplot_i.hpp"
  3. A code snippet is here presented that simply plots a 2D set of points:

   if(ANIMATIONON){
        // GNUPLOT
        // GNUPLOT INITIALIZATION
        Gnuplot gp("My plot");
        //std::vector<double> x,y; // this are the vector containing (x,y) points
        // END GNUPLOT INITIALIZATION
        try {
           gp.remove_tmpfiles(); // it is always better to do it
           gp.reset_plot(); // delete the plot (like Matlab figure())
           cout << endl << endl << "*** user-defined lists of points (x,y)" << endl;
           gp.set_grid();
           gp.set_style("points").plot_xy(x,y,"user-defined points 2d");
           //sleep(1);  
           //usleep(3e5);
        }
        catch (GnuplotException ge)
        {
           cout << ge.what() << endl;
       }
     } // END GNUPLOT