# \[ANN\] AlgebraOfGraphics.jl: data visualizations powered by Makie

**URL:** <https://discourse.julialang.org/t/ann-algebraofgraphics-jl-data-visualizations-powered-by-makie/43631>\
**Category:** Package Announcements\
**Tags:** package, announcement, plotting, algebraofgraphics\
**Created:** [July 24, 2020, 6:34pm UTC](https://discourse.julialang.org/t/ann-algebraofgraphics-jl-data-visualizations-powered-by-makie/43631 "2020-07-24T18:34:06Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![piever](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/piever/32/1815_2.png) [@piever](https://discourse.julialang.org/u/piever)\
**Post date:** [July 24, 2020, 6:34pm UTC](https://discourse.julialang.org/t/ann-algebraofgraphics-jl-data-visualizations-powered-by-makie/43631/1 "2020-07-24T18:34:06Z")

</div>

I’m happy to announce [AlgebraOfGraphics.jl](https://github.com/JuliaPlots/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](http://vita.had.co.nz/papers/layered-grammar.pdf) 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](http://juliaplots.org/AlgebraOfGraphics.jl/dev/generated/tutorial/)). These basic types can then be combined using two operators: `+` (add as separate layers) and `*` (combine information, within the same layer).

Small demo:

```julia
# 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

```

 ![irisplot](https://global.discourse-cdn.com/julialang/original/3X/4/f/4f3179a8f64a0b633403c672743e95cb4475e52a.png)

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](https://github.com/vega/voyager)), but in pure julia, so that it is easier to add custom analyses to the UI.

For more detail see [the docs](http://juliaplots.org/AlgebraOfGraphics.jl/dev) or the [juliacon talk](https://live.juliacon.org/talk/BMNWLJ) next Friday.

---

<div class="post-metadata">

**Author:** ![Zach\_Christensen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zach_christensen/32/7220_2.png) [@Zach\_Christensen](https://discourse.julialang.org/u/Zach_Christensen)\
**Post date:** [July 24, 2020, 7:12pm UTC](https://discourse.julialang.org/t/ann-algebraofgraphics-jl-data-visualizations-powered-by-makie/43631/2 "2020-07-24T19:12:58Z")

</div>

I’d give you more hearts but I can only give one.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [July 24, 2020, 8:03pm UTC](https://discourse.julialang.org/t/ann-algebraofgraphics-jl-data-visualizations-powered-by-makie/43631/3 "2020-07-24T20:03:16Z")

</div>

Beautiful!

---

<div class="post-metadata">

**Author:** ![Jakob](https://avatars.discourse-cdn.com/v4/letter/j/71c47a/32.png) [@Jakob](https://discourse.julialang.org/u/Jakob)\
**Post date:** [July 25, 2020, 7:36pm UTC](https://discourse.julialang.org/t/ann-algebraofgraphics-jl-data-visualizations-powered-by-makie/43631/4 "2020-07-25T19:36:03Z")

</div>

Amazing! This makes me very happy as an R user 🙂

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [July 29, 2020, 9:52pm UTC](https://discourse.julialang.org/t/ann-algebraofgraphics-jl-data-visualizations-powered-by-makie/43631/5 "2020-07-29T21:52:50Z")

</div>

> [@piever](#):
>
> on the style of the excellent [voyager](https://github.com/vega/voyager)

You can already use voyager from Julia, see [DataVoyager.jl](https://github.com/queryverse/DataVoyager.jl)!
