As discussed on Slack, it would be super valuable to have a number of "basic" examples of plotting for the docs. At the moment, a new user arrives and sees a bunch of amazing 3D and interactive examples, but not much guidance on how to generate run-of-the-mill plots that might be used much more often, and the advanced examples are a bit overwhelming.
I've come up with a short (not nearly comprehensive) list of basic plots that I do more or less every day, that would be great to have in the Makie docs. If I saw how to do these, there's a good chance I'd make the switch:
Plot Types
Layouts
I also made a notebook with all of these examples and what they look like using StatPlots, which you can see here.
See also #307?
We already have histograms and scatter plots through StatsMakie.
One thing to add to the basics are titles and legends.
Fair enough! Legends are progressing fairly smoothly, but titles not so much :( the best way I can think of now is to vbox a text and plot, but that doesn't work quite right, will have to dig into the implementation.
Well, that's good news. Titles are much easier to add after the fact in illustrator or inkscape.
This seems like a fairly good high-level list, so while evaluating Makie for my
plotting needs I decided to go look through the examples and see which of these
have associated examples already:
The deal-breaker for me right now is actually the lack of legends which is
especially egregious when colors are present representing different factors.
From a documentation perspective, I think the tutorial is relatively good now at
starting simple and building from there. Could use a little more verbiage on
conventions maybe: things like there always being two versions of plotting
commands (scatter and scatter!), the general high-level mental model for
attributes, etc.
Have a look at the master versions of the docs, there's been a fair bit of improvement since the last version! Also, StatsMakie is now exported by Makie.
We do have support for legends, but they are a tad unwieldy at the moment, I will look at putting together a tutorial on that.
Thanks for the feedback!
If StatsMakie is re-exported by Makie while itself depending on Makie, what's the reason for having two separate repos?
And no, no: thank you for what looks to be shaping up as an awesome plotting library.
EDIT: I guess StatsMakie doesn't depend directly on Makie any more. Is there a writeup on the overall architecture of the "post-Plots.jl" Makie ecosystem somewhere? I don't really understand how Makie, AbstractPlotting, and StatsMakie fit together at the moment tbh.
So Makie is sort of the 'metapackage' - it aggregates the packages together and exports their functionality.
Most of the actual plotting gets done in AbstractPlotting. This provides a high-level user interface (with the option to go low of course :P) and decomposes the high level plotting instructions given to it into 'atomic' drawing operations.
These atomic drawing operations are passed to the backends (GLMakie, CairoMakie, ...) for actual drawing.
StatsMakie essentially defines some high-level plotting operations (recipes) using AbstractPlotting. These are then sent to the AbstractPlotting infrastructure and plotted using a backend.
Hope that clears things up! That's just a general overview of the package ecosystem, not getting into nitty-gritty details.
Most helpful comment
So
Makieis sort of the 'metapackage' - it aggregates the packages together and exports their functionality.Most of the actual plotting gets done in
AbstractPlotting. This provides a high-level user interface (with the option to go low of course :P) and decomposes the high level plotting instructions given to it into 'atomic' drawing operations.These atomic drawing operations are passed to the backends (
GLMakie,CairoMakie, ...) for actual drawing.StatsMakieessentially defines some high-level plotting operations (recipes) using AbstractPlotting. These are then sent to the AbstractPlotting infrastructure and plotted using a backend.Hope that clears things up! That's just a general overview of the package ecosystem, not getting into nitty-gritty details.