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

Viewed 117659

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!

14 Answers

MathGL have many plot types, C/Fortran interface and basic data analysis

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

You have Qwt which is mature. There is a 3D version lurking somewhere. However, I have never been satisfied with the aesthetic result.

It may be worth waiting for Qt3D to come out to write something better yourself easily.

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 :)

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.

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

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

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.

Related