boost.plot: integrating plotting in a C++ native application: general questions about which tools to use
Hello, I am writing an application with a native C++ computation engine (library) that generates plotable data 2d and 3d, and a plotting engine. I am trying to determine what tools/libraries to use for the plotting engine. My graphs are all time series in the x axis (typically dates but maybe day numbers). I have a y axis and sometimes a z axis as well. Data is available in std::vector/list< pair<> > or std::vector/list< boost::tuple<> >, sometimes std::map<k,v>, perhaps later boost::multi_array<2> or <3> as well, or in fact just native arrays of pairs or boost::tuples. Decisions are made by the users, tweaking parameters and seeing how the plots change. The application user interface will be as: 1. win command line and just the plotting being graphical 2. Linux command line and just the plotting being graphical 3. win .net interface - input of parameters to the computing engine, and the plotting being graphical 4. Linux with X (maybe gtk/qt) - input of parameters to the computing engine, and the plotting being graphical And the results of the computation will then need to be plotted. So far, I have seen these solutions: ***1 - With 1,2,3 and 4, I can see a write the numbers to a file, call the external process on windows that runs gnuplot that runs a script file to plot the file. Both 2D (y(x)) and 3D(z(x,y)) visualizations are pretty flexible, in particular 3D visualizations allow to rotate the graph and view from different angles. But this process seems tortuous, gnuplot accepts piped data on linux but not on windows without mingw/cigwin. It would be preferable to not generate intermediary files, especially if that is very large. There is also a gnuplot c++ interface, but that doesn't avoid running the gnuplot external process. ***2 - I've come across boost.plot and it generates svg files which have only 2D if I understood correctly, SVG doesn't express 3D, and then use a browser (chrome) or that tool that uses SVG as its native format, or use ImageDisplay for e.g.( this comes with c++ dev library, perhaps that helps to plot directly the svg without running the process externally ) Cons: no 3d (rotating and different angles) and still require external programs. ***3 - I don't know .net but it seems c# is more convenient for the GUI part (inputting parameters, selecting options), running the c++ computation engine, and .net probably has some plotting part (don't know about 3D plots and rotating though) Cons: non portable solution - how would c# plotting interact with native c++ stl? ***4 - gtk/qt : does it have plotting features? It is ported to linux and win, does the windows port requires cygwin/mingw? How does it interact with STL containers? The solution is ideally the quickest-to-deploy and most portable, with windows not requiring cygwin/mingw, and not needing to run an external process. The need for portability comes from hardware requirements machines with a large number of processor cores run linux, while smaller boxes run win. I appreciate there are a lot of questions here, that deal with many topics and I thank everyone for answers or suggestions, Regards,
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Hicham Mouline Sent: Tuesday, December 15, 2009 4:17 PM To: boost-users@lists.boost.org Subject: [Boost-users] boost.plot: integrating plotting in a C++ nativeapplication: general questions about which tools to use Hello, ... ***4 - gtk/qt : does it have plotting features? It is ported to linux and win, does the windows port requires cygwin/mingw? How does it interact with STL containers? I've been very happy using Qt with QwtPlot for scientific plotting. http://qwt.sourceforge.net/ Good luck, Randy _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Ormond, Randy Sent: 15 December 2009 22:40 To: boost-users@lists.boost.org Subject: Re: [Boost-users] boost.plot: integrating plotting in a C++ nativeapplication: general questions about which tools to use -----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Hicham Mouline Sent: Tuesday, December 15, 2009 4:17 PM To: boost-users@lists.boost.org Subject: [Boost-users] boost.plot: integrating plotting in a C++ nativeapplication: general questions about which tools to use Hello, ... ***4 - gtk/qt : does it have plotting features? It is ported to linux and win, does the windows port requires cygwin/mingw? How does it interact with STL containers? I've been very happy using Qt with QwtPlot for scientific plotting. <http://qwt.sourceforge.net/> http://qwt.sourceforge.net/ Good luck, Does it plots 3D as well? Thanks,
________________________________ From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Hicham Mouline Sent: Wednesday, December 16, 2009 6:16 AM To: boost-users@lists.boost.org Subject: Re: [Boost-users] boost.plot: integrating plotting in a C++nativeapplication: general questions about which tools to use From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Ormond, Randy Sent: 15 December 2009 22:40 To: boost-users@lists.boost.org Subject: Re: [Boost-users] boost.plot: integrating plotting in a C++ nativeapplication: general questions about which tools to use -----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Hicham Mouline Sent: Tuesday, December 15, 2009 4:17 PM To: boost-users@lists.boost.org Subject: [Boost-users] boost.plot: integrating plotting in a C++ nativeapplication: general questions about which tools to use Hello, ... ***4 - gtk/qt : does it have plotting features? It is ported to linux and win, does the windows port requires cygwin/mingw? How does it interact with STL containers? I've been very happy using Qt with QwtPlot for scientific plotting. http://qwt.sourceforge.net/ <http://qwt.sourceforge.net/> Good luck, Does it plots 3D as well? Thanks, (Sorry for the awkward indenting, not sure the best way to avoid top-posting in MS Outlook) QwtPlot does not do 3-d plots, but Qt has an interface for OpenGL. Good luck, Randy
Ormond, Randy wrote:
(Sorry for the awkward indenting, not sure the best way to avoid top-posting in MS Outlook)
QwtPlot does not do 3-d plots, but Qt has an interface for OpenGL.
There is a QwtPlot3D though : http://qwtplot3d.sourceforge.net/ -- Maxime
Hicham Mouline schrieb:
*From:* boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] *On Behalf Of *Ormond, Randy *Sent:* 15 December 2009 22:40 *To:* boost-users@lists.boost.org *Subject:* Re: [Boost-users] boost.plot: integrating plotting in a C++ nativeapplication: general questions about which tools to use
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Hicham Mouline Sent: Tuesday, December 15, 2009 4:17 PM To: boost-users@lists.boost.org Subject: [Boost-users] boost.plot: integrating plotting in a C++ nativeapplication: general questions about which tools to use
Hello,
...
***4 - gtk/qt : does it have plotting features? It is ported to linux and
win, does the windows port requires cygwin/mingw?
How does it interact with STL containers?
I've been very happy using Qt with QwtPlot for scientific plotting.
Good luck,
Does it plots 3D as well?
Thanks,
------------------------------------------------------------------------
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Scroll down on http://qwt.sourceforge.net/ to "Related projects" There is a link to a project called qwtplot3D: http://qwtplot3d.sourceforge.net/ maybe that is what you are looking for Regards, Martin
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Hicham Mouline Sent: Tuesday, December 15, 2009 10:17 PM To: boost-users@lists.boost.org Subject: [Boost-users] boost.plot: integrating plotting in a C++ native application: general questions about which tools to use
I am writing an application with a native C++ computation engine (library) that generates plotable data 2d and 3d, and a plotting engine. I am trying to determine what tools/libraries to use for the plotting engine.
***2 - I've come across boost.plot and it generates svg files which have only 2D if I understood correctly, SVG doesn't express 3D, and then use a browser (chrome) or that tool that uses SVG as its native format, or use ImageDisplay for e.g.( this comes with c++ dev library, perhaps that helps to plot directly the svg without running the process externally ) Cons: no 3d (rotating and different angles) and still require external programs.
I presume you have seen Inkscape and Inkview for display - but they are still external programs but callable, and perhaps more easily (closely bound) than a browser? (I no plans for a 3D plot of SVG plotting - 3D is a quite different animal). Pros - SVG plot files are tiny and very smart ;-) Paul --- Paul A. Bristow Prizet Farmhouse Kendal, UK LA8 8AB +44 1539 561830, mobile +44 7714330204 pbristow@hetp.u-net.com
participants (5)
-
BaDBuTz
-
Hicham Mouline
-
Maxime van Noppen
-
Ormond, Randy
-
Paul A. Bristow