Fastest, simplest, least resource-hungry and prettiest visualization package right now? (Feb/March 2022)

Please note I don’t want to depreciate anyone or any package, but I really wanted to know. I did see some threads, but there didn’t seem to be any definitive conclusion, and time-wise we are now at a later point. So I thought to ask this question.

The ones I myself came across are

  • Gadfly.jl
  • VegaLite.jl
  • gnuplot.jl (maybe with Gaston.jl)
  • GR

Can you compare and recommend? And which one would work most nicely in the most different setups (like if you’d use Jupyter Lab, REPL, etc.)?

I really shouldn’t spend too much time on researching all these possibilities.

Why do you think this question is easier to answer today than it was several months ago?
If you ask a dozen people on this forum, you may get at least half a dozen different answers.
“Best” is very subjective. Perhaps if you started with a list of what it is you want
(I mean a realistic list, because I don’t think you will get all the things you mention in the thread subject in a single package), your research will converge quickly to the plotting package that is best for you.

5 Likes

Makie.jl

4 Likes

You only get to choose 2 out of 4, if not 1.

  1. Fastest: GR, makie ?
  2. Simplest: Plots, gnuplot?
  3. Least resource hungry: GR, Makie?
  4. Prettiest (very subjective, let’s include the most customizable too): Pyplot, Makie, Vega?

I can’t say that JS plotting can ever be fastest or simplest or even prettiest. I guess they’d fall as a compromise between all

I really shouldn’t spend too much time on researching all these possibilities.

Then choose Plots, and use the underlying backend directly when you feel its limitations. Unless you know what you need and your options, my bet would be to just use “Plots”. Other packages are more suited for specific needs, I feel

Please tell us more about

  • your “problem” ( ~ business domain ),
  • the expected visualization output ( print, web, 3D, animated )
  • The data type ( geo, graph, or just a simple 2d table (csv) … )
  • and the amount of data, ( pre-aggregated, detailed)
  • other relevant info ( ~ your background in debugging )

least resource-hungry

for embedded computing - with minimal memory? like Raspberry Pi 1GB?

prettiest visualization package right now?

it is subjective. :slight_smile:
for me: https://deck.gl/ ( You have to generate “json” API from Julia )

" deck.gl is designed to simplify high-performance, WebGL-based visualization of large data sets. Users can quickly get impressive visual results with minimal effort by composing existing layers, or leverage deck.gl’s extensible architecture to address custom needs.
deck.gl maps data (usually an array of JSON objects) into a stack of visual layers - e.g. icons, polygons, texts; and look at them with views : e.g. map, first-person, orthographic."

Fastest/least resource hungry is a bit more complicated: Makie is indeed incredibly fast after it has been imported, but its import is very expensive currently (and given its capabilities it would probably always be much more expensive than something like GR).

Fastest, simplest, least resource-hungry and prettiest visualization package right now?

ASCIIPlots.jl

  1. Damn Fast
  2. Damn simple
  3. Damn least resource hungry
  4. Damn pretty on my text only terminal
9 Likes

@PetrKryslUCSD, thanks for your comment. I think what’s best is not subjective, because there are principles, values, things, that can be fairly judged or measured, the same way you say that a crooked line is crooked and a straight one is straight, the same way everyone (even those who know nothing of it) recognizes when hearing it that great orchestral music is greater and more beautiful than simple short pop music, the same way a sports car is faster than a truck, the same way you recognize something has some property and the other one doesn’t have it, the same way you see that something works well with something and the other doesn’t, the same way you see that using something takes less resources than using another.

Maybe you are right that I won’t find what I’m looking for, but I wouldn’t call what’s best subjective.

Thanks. I noticed that too. So I didn’t include it in my list.

I thank you all for your comments.

Seeing your comments, and thinking on them, I’m thinking of GR or VegaLite for now. From what I can tell they both seem fast, they don’t seem very resource-hungry, looks good, can be used for 2d. (No interest in 3d)

As for my use cases, @ImreSamu, it will mostly be general statistics, descriptive and inferential, frequency distributions, any amount of data, etc. As for debugging, I’d like to do that as little as possible. I’m writing this sort of quickly, I don’t have much time :sweat_smile:

How would we call/run deck from Julia? Calling C libs I know but this js business is very alien to me.

This package https://github.com/joshday/PlotlyLight.jl/blob/master/src/PlotlyLight.jl shows how with Plotly this is done in a handful of lines primarily by overloading the Base.show method for an object.

2 Likes