diff --git a/docs/src/plots.md b/docs/src/plots.md index 713968a1..2644d6e8 100644 --- a/docs/src/plots.md +++ b/docs/src/plots.md @@ -36,10 +36,16 @@ Makie.rainclouds(A) ## AlgebraOfGraphics.jl -AlgebraOfGraphics.jl is a high-level plotting library built on top of Makie.jl that provides a declarative "grammar of graphics" for creating complex visualizations. It allows you to construct plots using algebraic operations like `*` and `+`, making it easy to create sophisticated graphics with minimal code. +AlgebraOfGraphics.jl is a high-level plotting library built on top of Makie.jl that provides a declarative algebra for creating complex visualizations, similar to `ggplot2`'s "grammar of graphics" in R. It allows you to construct plots using algebraic operations like `*` and `+`, making it easy to create sophisticated graphics with minimal code. Any `DimensionalArray` is also a `Tables.jl` table, so it can be used with `AlgebraOfGraphics.jl` directly. You can indicate columns in `mapping` with Symbols directly (like `:X` or `:Y`), **or** you can use the `Dim` type directly (like `X` or `Y`)! +!!! note + If your dimensional array is not named, then you can access the data as the **`:unnamed`** column. + Otherwise, the data is accessible by its name. + +Let's start with a simple example, and plot a 2-D dimarray as a scatter plot, colored by its value. + ```@example Makie using DimensionalData, AlgebraOfGraphics, CairoMakie CairoMakie.activate!(type = :svg) # hide @@ -49,8 +55,28 @@ A = DimArray(rand(10, 10), (X(1:10), Y(1:10)), name = :data) data(A) * mapping(X, Y; color = :data) * visual(Scatter) |> draw ``` +Don't restrict yourself to standard visualizations! You can use all of AlgebraOfGraphics' features. + +Let's plot each X-slice, faceted in Y: + +```@example Makie +data(A) * mapping(X, :data; layout = Y => nonnumeric) * visual(Lines) |> draw +``` +This approach is also applicable to `DimStack`s, since they also convert to DimTables. Let's see an example here. + +We'll construct a DimStack with the `:data` layer being our DimArray `A`, and an X-only variable `:color` that we'll use to color the line. + +```@example Makie +color_vec = DimVector(1:10, X) +ds = DimStack((; data = A, color = color_vec)) + +data(ds) * mapping(X, :data; color = :color, layout = Y => nonnumeric) * visual(Lines) |> draw +``` +!!! note + If you wish to subset your DimArray, you can't pass selectors like `X(1 .. 2)` to AlgebraOfGraphics. + Instead, subset the DimArray you pass to `data` - this is a very cheap operation. ## Test series plots