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

C++GraphWxwidgetsPlot

C++ Problem Overview


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!

C++ Solutions


Solution 1 - C++

Even though this thread is old but gold. QCustomPlot is very recommendable as well to complement this list.

Solution 2 - C++

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

Solution 3 - C++

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

Solution 4 - C++

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.

Solution 5 - C++

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

Solution 6 - C++

u can use DISLIN

it is quite neat!

Solution 7 - C++

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

Solution 8 - C++

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

Solution 9 - C++

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

Solution 10 - C++

We use an ancient version of ComponentOne Chart.

Solution 11 - C++

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.

Solution 12 - C++

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

Solution 13 - C++

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

Solution 14 - C++

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser38290View Question on Stackoverflow
Solution 1 - C++Sharky BamboozleView Answer on Stackoverflow
Solution 2 - C++abalakinView Answer on Stackoverflow
Solution 3 - C++dmckee --- ex-moderator kittenView Answer on Stackoverflow
Solution 4 - C++Alexandre C.View Answer on Stackoverflow
Solution 5 - C++GantView Answer on Stackoverflow
Solution 6 - C++KansaiRobotView Answer on Stackoverflow
Solution 7 - C++SteveLView Answer on Stackoverflow
Solution 8 - C++jfsView Answer on Stackoverflow
Solution 9 - C++KevView Answer on Stackoverflow
Solution 10 - C++John DiblingView Answer on Stackoverflow
Solution 11 - C++Nitin BhideView Answer on Stackoverflow
Solution 12 - C++SeikaView Answer on Stackoverflow
Solution 13 - C++cdron77View Answer on Stackoverflow
Solution 14 - C++luiscubalView Answer on Stackoverflow