Difference between revisions of "Gnuplot in cpp"

From AIRWiki
Jump to: navigation, search
(How to plot using gnuplot in your C/C++ project)
 
Line 16: Line 16:
 
# You should download gnuplot-cpp library. I suggest you to use my version LINKHERE because the official one [http://code.google.com/p/gnuplot-cpp/ gnuplot-cpp]has problems, (see below).
 
# You should download gnuplot-cpp library. I suggest you to use my version LINKHERE because the official one [http://code.google.com/p/gnuplot-cpp/ gnuplot-cpp]has problems, (see below).
 
#To use the plotting library you should only need to include: "gnuplot-cpp/gnuplot_i.hpp"
 
#To use the plotting library you should only need to include: "gnuplot-cpp/gnuplot_i.hpp"
 +
# A code snippet is here presented that simply plots a 2D set of points:
 +
<code>
 +
    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
 +
 +
</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