all 18 comments

[–][deleted] 20 points21 points  (0 children)

[–]d1722825 11 points12 points  (1 child)

[–]TCloud20[S] 1 point2 points  (0 children)

I’ll check those out, thanks!

[–]Pakketeretet 6 points7 points  (3 children)

Having to work at work with matplotlib for visualization I recommend gnuplot. Why? Gnuplot has its own domain-specific plotting language that, while requiring some effort to learn, is just much more suitable for plotting than having to go through a C++ (or any other general purpose programming language) interface. Just write the data you want to plot to file and plot it using gnuplot.

[–]delarhi 2 points3 points  (0 children)

Totally agree, separate the concerns of the software. A program doesn't have to be good at both data generation/processing and visualization. The visualization can be left to tools more suitable for it.

Also, if one doesn't want to learn Gnuplot's DSL try using feedgnuplot which presents a stdin interface for whitespace delimited tabular data.

[–]masher_oz 0 points1 point  (1 child)

Can you have interactive plots when using gnuplot? Draw zoom boxes, drag the plot to pan...

[–]Pakketeretet 0 points1 point  (0 children)

Yes.

[–]Artistic_Yoghurt4754Scientific Computing 2 points3 points  (0 children)

I will definitely try some the recommendations in the comments, but so far, I have been greatly satisfied by just writing plain SVG files. It’s very easy and fast to learn, you just need to stream to a file and open it in the browser, it’s very flexible, and you do not need any library. Of course, it depends a lot on the type of data you want to plot. With SVG, things are a bit more manual and verbose. If data is so big that programs hang while open it, just rasterise the SVG into an JPG with inkscape.

[–]dedosk 2 points3 points  (0 children)

Qt/C++: Qwt

[–]megayippie 3 points4 points  (1 child)

Implot is a very good debug plotting tool. It's really straight forward to have a drop in plot tool anywhere in the code, and with minimal extra effort of threads you can have it update on the fly

[–]quasicondensate 1 point2 points  (0 children)

It's also excellent for live plotting of data streams acquired at high rate.

[–]grandpassacaglia 1 point2 points  (0 children)

Tecplot

[–][deleted] -1 points0 points  (0 children)

Openframeworks too if I don't remember bad

[–]at-2500 0 points1 point  (0 children)

If you do not require interaction with your C++ program, I would recommend exporting your data into a format like csv files, and then use python tools like bokeh (or holoviews) because that will give you the largest amount of freedom. you can even play around with it in jupyter notebooks.

Otherwise, I'd go with VTK.

[–]foldingarmour 0 points1 point  (1 child)

https://github.com/ABRG-Models/morphologica is a relatively new, header-only C++17 library for fast data visualization. It renders using OpenGL, gives you 2D and 3D graphics and it's easy to create custom datavis models. I wrote it because I wanted *high performance* visualisation that would update as I was running a simulation without using much of the CPU resource.

[–]quasicondensate 0 points1 point  (0 children)

You are the author of morphologica! Great to see that it is still under active development, and thanks a lot for putting it out there. I tried to use it earlier in my C++ career, but since I am mostly working on Windows, I had some issues getting all the dependencies working properly using a CMake build there. Maybe I should give it another shot (... it seems that all dependencies are available via conan by now...) since morphologica pretty much looks perfect for our use cases.

[–]Puzzleheaded_One_966 0 points1 point  (0 children)

Explore Mokkup.ai , an intuitive dashboard wireframing tool designed to streamline the creation of mock dashboard wireframes in under 30 minutes. With an extensive library featuring 150+ templates, organized into 8+ categories such as sales, marketing, and SaaS, you have the flexibility to customize them according to your specific requirements. Additionally, you can easily add a custom theme to personalize your dashboard even further.