I’m happy to announce AlgebraOfGraphics.jl, a visualization package built on top of Makie (and the powerful layout engine MakieLayout). This is the next iteration of StatsMakie.jl, which will be eventually deprecated.
AlgebraOfGraphics implements a version of Grammar of Graphics based on custom types and multiple dispatch. In particular, a combination of custom types ( Style
and Analysis
) can be used to express how data should be grouped, styled, and analyzed (see examples). These basic types can then be combined using two operators: +
(add as separate layers) and *
(combine information, within the same layer).
Small demo:
# select the `x` and `y` columns
cols = style([:SepalLength, :SepalWidth], [:PetalLength :PetalWidth])
# color markers according to the column `Species`
# organize layout according to the two arrays in `cols`
grp = style(layout_x = dims(1), layout_y = dims(2), color = :Species)
# specify scatter plot as well as the analysis
geom = spec(Scatter) + linear
# combine ingredients and draw
data(iris) * cols * grp * geom |> draw
As the library is implemented in pure Julia, users are not limited to pre-built analyses but can implement their own, and they will automatically be integrated in the framework. IMO, the advantage of this systematization is that it becomes easier to make UIs to look at your data (on the style of the excellent voyager), but in pure julia, so that it is easier to add custom analyses to the UI.
For more detail see the docs or the juliacon talk next Friday.