Julia Makie Recipes

by Krastanov

skill

Create custom Makie plot types using recipes for reusable, themeable visualizations. Use this skill when implementing plot recipes in Makie extensions.

Skill Details

Repository Files

3 files in this skill directory


name: julia-makie-recipes description: Create custom Makie plot types using recipes for reusable, themeable visualizations. Use this skill when implementing plot recipes in Makie extensions.

Julia Makie Recipes

Create custom Makie plot types using recipes. Recipes enable reusable, themeable visualizations that integrate seamlessly with Makie's ecosystem.

This skill focuses on creating recipes as package extensions. See julia-pkgextension for extension setup.

Recipe Types

Type Recipes (Simple Conversions)

Convert custom types to existing plot types:

function Makie.convert_arguments(P::Type{<:Makie.Heatmap}, data::MyType)
    matrix = extract_matrix(data)
    return Makie.convert_arguments(P, matrix)
end

Full Recipes (Custom Plot Types)

Makie.@recipe(CircuitPlot, circuit) do scene
    Makie.Theme(;
        gatewidth = 0.8,
        wirecolor = :black,
    )
end

@recipe Macro Syntax

Makie.@recipe(PlotTypeName, arg1, arg2, ...) do scene
    Makie.Theme(;
        attribute_name = default_value,
    )
end

Generated automatically:

  • Type: const PlotTypeName{ArgTypes} = Plot{plottypename, ArgTypes}
  • Functions: plottypename(args...) and plottypename!(ax, args...)

Implementing plot!

function Makie.plot!(plot::CircuitPlot)
    circuit = plot[:circuit][]  # Get argument value

    # Access attributes
    gw = plot.gatewidth[]

    # Draw using Makie primitives
    Makie.lines!(plot, xs, ys; color = plot.wirecolor)
    Makie.scatter!(plot, points; markersize = 10)
    Makie.poly!(plot, vertices; color = :blue)
    Makie.text!(plot, x, y; text = "label")

    return plot  # Always return plot!
end

Key points:

  • First argument to primitives is plot (the recipe plot object)
  • Access attributes with plot.attribute[] for current value
  • Access attributes with plot.attribute (no []) for Observable (reactive)

Makie Primitives Reference

Primitive Use Case
lines! Continuous lines, wires
linesegments! Disconnected line segments
scatter! Points, markers
poly! Filled polygons, rectangles
text! Labels, annotations
heatmap! 2D color grids

Checklist

  • Add Makie to [weakdeps] and [extensions] in Project.toml
  • Create stub functions in main package (with docstrings)
  • Import stub functions in extension
  • Define recipe with Makie.@recipe
  • Implement Makie.plot! method
  • Always return plot from plot!
  • Create _axis convenience function for complete figures
  • Test with CairoMakie and GLMakie

Reference

Related Skills

  • julia-pkgextension - Package extension setup
  • julia-docs - Documenting extension functionality

Related Skills

Attack Tree Construction

Build comprehensive attack trees to visualize threat paths. Use when mapping attack scenarios, identifying defense gaps, or communicating security risks to stakeholders.

skill

Grafana Dashboards

Create and manage production Grafana dashboards for real-time visualization of system and application metrics. Use when building monitoring dashboards, visualizing metrics, or creating operational observability interfaces.

skill

Matplotlib

Foundational plotting library. Create line plots, scatter, bar, histograms, heatmaps, 3D, subplots, export PNG/PDF/SVG, for scientific visualization and publication figures.

skill

Scientific Visualization

Create publication figures with matplotlib/seaborn/plotly. Multi-panel layouts, error bars, significance markers, colorblind-safe, export PDF/EPS/TIFF, for journal-ready scientific plots.

skill

Seaborn

Statistical visualization. Scatter, box, violin, heatmaps, pair plots, regression, correlation matrices, KDE, faceted plots, for exploratory analysis and publication figures.

skill

Shap

Model interpretability and explainability using SHAP (SHapley Additive exPlanations). Use this skill when explaining machine learning model predictions, computing feature importance, generating SHAP plots (waterfall, beeswarm, bar, scatter, force, heatmap), debugging models, analyzing model bias or fairness, comparing models, or implementing explainable AI. Works with tree-based models (XGBoost, LightGBM, Random Forest), deep learning (TensorFlow, PyTorch), linear models, and any black-box model

skill

Pydeseq2

Differential gene expression analysis (Python DESeq2). Identify DE genes from bulk RNA-seq counts, Wald tests, FDR correction, volcano/MA plots, for RNA-seq analysis.

skill

Query Writing

For writing and executing SQL queries - from simple single-table queries to complex multi-table JOINs and aggregations

skill

Pydeseq2

Differential gene expression analysis (Python DESeq2). Identify DE genes from bulk RNA-seq counts, Wald tests, FDR correction, volcano/MA plots, for RNA-seq analysis.

skill

Scientific Visualization

Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib/seaborn/plotly with publication styles. For quick exploration use seaborn or plotly directly.

skill

Skill Information

Category:Skill
Last Updated:1/22/2026