Sunday, March 6, 2011

Is there any 'out-of-the-box' 2D/3D plotting library for C++?

Hello all,

I looked at the different options for plotting functions (or other types of graphs) in an interactive window. I mostly use wxWidgets but I'd be open to any other "interfaces".

Looking at what is available, here is what I've found:

wxPlot: Not updated since 2006. But it would be a good candidate if it was...

wxMathPlot: Very new, not mature, few features (still active?)

libgraph: Outdated, not rebust, 2D only and outputs images only.

koolplot: Too basic, no control over the created window.

EasyBMP: Very basic, only images output.

plotutils: Command line only.

plplot: C and C++ API are barely maintained. It is in fact on this that wxPlot is based. Could be a could candidate also if C and C++ interface we're updated.

Any comments? Ideas?

Thanks!

From stackoverflow
  • Might wxChart be an option? I have not used it myself however and it looks like it hasnt been updated for a while.

  • Just an idea: Use Python as embeddable scripting language to plot your graphs. Python has a plethora of plotting libraries.

    ConcernedOfTunbridgeWells : If you don't mind embedding a Python interpreter you get a whole lot of other benefits from having a scripting lanaguage in your application, plus access to the sort of libraries you've linked to. +1
  • OpenGL. It WILL be hard and possibly rewriting the wheel, though. Keep in mind that OpenGL is a general 3D library, and not a specific plot library, but you can implement plotting based on it.

  • I found the game library Allegro easy to use back in the day. Might be worth a look.

  • We use an ancient version of ComponentOne Chart.

  • AntiGrain Geometry (AGG). http://www.antigrain.com/. Its an opensource 2D vector graphics library. Its a standalone library with no additional dependencies. Has good documentation. Python plotting library matplotlib uses AGG as one of backends.

  • Have a look at wxArt2d it is a complete framework for 2d editing and plotting. See the screenshots for more examples.

    Some interesting features:

    • Reading and writing SVG and CVG
    • Several views of the same document
    • Changes are updated when idle
    • Optimized drawing of 2d objects
  • Hey! I'm the developer of wxMathPlot! The project is active: I just took a long time to get a new release, because the code needed a partial rewriting to introduce new features. Take a look to the new 0.1.0 release: it is a great improvement from old versions. Anyway, it doesn't provide 3D (even if I always thinking about it...).

    Tim : is it able to plot in "real time"? (or near real time)
    Tim : To be clear - I want to be able to update from a data source and draw as new points arrive.
  • I programmatically provide required input files to GNUPlot executable and invoke it using system() function. It is suitable to my situation since I only want to visualize my data during research. But if you want the plotting functionality integrated into your executable file, maybe this is not for you :)

  • I'm all about ROOT for these needs. Pretty heavy if you don't need all the analysis support, though.

0 comments:

Post a Comment