Visualize your data using a few simple building blocks that can be
composed using + and *. AlgebraOfGraphics puts a new algebraic spin
on the grammar of graphics idea known from R’s
ggplot2 package.
Visualizations are powered by Makie and you have its full capabilities available to tweak figures produced by AlgebraOfGraphics.
using AlgebraOfGraphics, CairoMakie
penguins = AlgebraOfGraphics.penguins()
set_aog_theme!()
update_theme!(Axis = (; width = 150, height = 150))
spec = data(penguins) * mapping(:bill_length_mm, :bill_depth_mm)
draw(spec)by_color = spec * mapping(color = :species)
draw(by_color)with_regression = by_color * (linear() + visual(alpha = 0.3))
draw(with_regression)facetted = with_regression * mapping(col = :sex)
draw(facetted)draw(facetted, scales(Color = (; palette = :Set1_3)))If you use AlgebraOfGraphics for a scientific publication, please acknowledge and support our work by citing our JOSS paper the following way:
Krumbiegel & Vertechi, (2026). AlgebraOfGraphics.jl: A Makie-powered algebraic grammar of graphics for Julia.
Journal of Open Source Software, 11(123), 10894, https://doi.org/10.21105/joss.10894
BibTeX entry:
@article{Krumbiegel2026,
doi = {10.21105/joss.10894},
url = {https://doi.org/10.21105/joss.10894},
year = {2026},
publisher = {The Open Journal},
volume = {11},
number = {123},
pages = {10894},
author = {Krumbiegel, Julius and Vertechi, Pietro},
title = {{AlgebraOfGraphics.jl}: A {Makie}-powered algebraic grammar of graphics for {Julia}},
journal = {Journal of Open Source Software}
}See CONTRIBUTING.md for how to get help, report bugs, and contribute code or documentation.
Analyses rely on StatsBase.jl, Loess.jl, KernelDensity.jl, and GLM.jl. Some of their documentation is transcribed here.




