577 Stars
Updated Last
10 Months Ago
Started In
September 2017

From the japanese word Maki-e, which is a technique to sprinkle lacquer with gold and silver powder. Data is basically the gold and silver of our age, so let's spread it out beautifully on the screen!


Build status:



pkg> add Makie
pkg> test Makie

If you plan to use Makie#master, you likely also need to check out AbstractPlotting#master and GLMakie#master.


On Linux, you also need to add the following to get GLFW to build (if you don't have those already):


sudo apt-get install cmake xorg-dev


sudo dnf install cmake libXrandr-devel libXinerama-devel libXcursor-devel


Makie is the metapackage for a rich ecosystem, which consists of GLMakie.jl, CairoMakie.jl and WGLMakie.jl (the backends); AbstractPlotting.jl (the bulk of the package); and StatsMakie.jl (statistical plotting support, as in StatsPlots.jl).

MakieLayout.jl is a layout manager for Makie. It brings grid layouts, a new 2D axis, and widgets like sliders and buttons that behave well in a layout to Makie.

There is experimental support for using Plots.jl and RecipesBase.jl recipes in MakieRecipes.jl, and a prototype TeX plotting implementation with vector support in MakieTeX.jl.

Examples, and test infrastructure, are in MakieGallery.jl.

You can also follow Makie on twitter to get the latest, outstanding examples: image


Interactive MakieLayout example by AlexisRenchon:






Using Juno with Makie

The default OpenGL backend for Makie is not interactive in the Juno plotpane - it just shows a PNG instead. To get full interactivity, you can run AbstractPlotting.inline!(false).

If that fails, you can disable the plotpane in Atom's settings by going to Juno - Settings - UI Options - Then, make sure Enable Plot Plane is not checked.

Using IJulia / Jupyter Notebook with Makie

Currently, only non-interactive plots are supported. (See the issues #15 and #266.)

You may need to run AbstractPlotting.inline!(true) in order for plots to appear.


You can compile a binary for Makie and add it to your system image for fast plotting times with no JIT overhead. To do that, you need to check out the additional packages for precompilation. Then you can build a system image like this:

using Pkg
# add PackageCompiler and other dependencies
pkg"add PackageCompiler"
# Make sure you have v1.0 or higher of PackageCompiler!

using PackageCompiler

# This will create a system image in the current directory, which you can
# use by launching Julia with `julia -J ./MakieSys.so`.
    precompile_execution_file=joinpath(pkgdir(Makie), "test", "test_for_precompile.jl")

Should the display not work after compilation, call AbstractPlotting.__init__() immediately after using Makie.

Examples from the documentation:

Mouse interaction:

Animating a surface:

Complex examples