Skip to content

Makie

Interactive data visualizations and plotting in Julia

Makie

Welcome to Makie!

Makie is a data visualization ecosystem for the Julia programming language, with high performance and extensibility.

It is available for Windows, Mac and Linux.

Makie turns your data into beautiful images or animations, such as this one:

Show me the code
julia
using GLMakie

Base.@kwdef mutable struct Lorenz
    dt::Float64 = 0.01
    σ::Float64 = 10
    ρ::Float64 = 28
    β::Float64 = 8/3
    x::Float64 = 1
    y::Float64 = 1
    z::Float64 = 1
end

function step!(l::Lorenz)
    dx = l.σ * (l.y - l.x)
    dy = l.x * (l.ρ - l.z) - l.y
    dz = l.x * l.y - l.β * l.z
    l.x += l.dt * dx
    l.y += l.dt * dy
    l.z += l.dt * dz
    Point3f(l.x, l.y, l.z)
end

attractor = Lorenz()

points = Observable(Point3f[])
colors = Observable(Int[])

set_theme!(theme_black())

fig, ax, l = lines(points, color = colors,
    colormap = :inferno, transparency = true,
    axis = (; type = Axis3, protrusions = (0, 0, 0, 0),
              viewmode = :fit, limits = (-30, 30, -30, 30, 0, 50)))

record(fig, "lorenz.mp4", 1:120) do frame
    for i in 1:50
        push!(points[], step!(attractor))
        push!(colors[], frame)
    end
    ax.azimuth[] = 1.7pi + 0.3 * sin(2pi * frame / 120)
    notify(points)
    notify(colors)
    l.colorrange = (0, frame)
end

Installation

Makie offers four different backends (more info under What is a backend). We suggest GLMakie for GPU-accelerated, interactive plots, and CairoMakie for static vector graphics.

  • GLMakie (OpenGL based, interactive)

  • CairoMakie (Cairo based, static vector graphics)

  • WGLMakie (WebGL based, displays plots in the browser)

  • RPRMakie (Experimental ray-tracing using RadeonProRender)

Then install it using Julia's package manager Pkg:

julia
using Pkg
Pkg.add("GLMakie")

There's no need to install Makie.jl separately, it is re-exported by each backend package.

First Steps

If you are new to Makie, have a look at Getting started.

For inspiration, visit Beautiful Makie for a collection of interesting plots.

An overview of third-party packages that expand Makie's capabilities is at Ecosystem.

Citing Makie

If you use Makie for a scientific publication, please cite our JOSS paper the following way:

Danisch & Krumbiegel, (2021). Makie.jl: Flexible high-performance data visualization for Julia. Journal of Open Source Software, 6(65), 3349, https://doi.org/10.21105/joss.03349

Show BibTeX
@article{DanischKrumbiegel2021,
  doi = {10.21105/joss.03349},
  url = {https://doi.org/10.21105/joss.03349},
  year = {2021},
  publisher = {The Open Journal},
  volume = {6},
  number = {65},
  pages = {3349},
  author = {Simon Danisch and Julius Krumbiegel},
  title = {{Makie.jl}: Flexible high-performance data visualization for {Julia}},
  journal = {Journal of Open Source Software}
}

Getting Help

  1. Use the REPL ? help mode.

  2. Click this link to open a preformatted topic on the Julia Discourse Page. If you do this manually, please use the category Domain/Visualization and tag questions with Makie to increase their visibility.

  3. For casual conversation about Makie and its development, have a look at the Makie Discord Server. Please direct your usage questions to Discourse and not to Slack, to make questions and answers accessible to everybody.

  4. For technical issues and bug reports, open an issue in the Makie.jl repository which serves as the central hub for Makie and backend issues.