Cairo backend for Makie
Author JuliaPlots
10 Stars
Updated Last
3 Months Ago
Started In
October 2018


The Cairo Backend for Makie

Build Status



To add CairoMakie to your environment, simply run the following in the REPL:

]add CairoMakie

If you are using CairoMakie and GLMakie together, you can use each backend's activate! function to switch between them.


Please file all issues in Makie.jl, and mention CairoMakie in the issue text!


As of now, CairoMakie only supports 2D scenes. It is also noticeably slower than GLMakie.


Makie overloads the FileIO interface, so you can save a Scene scene as save("filename.extension", scene). CairoMakie supports saving to PNG, PDF, SVG and EPS.

Additionally, when using CairoMakie, you can scale the resolution or size which you save a figure at, without changing its appearance. This scaling factor is configured by passing keyword arguments to save. PNGs can be scaled by px_per_unit (default 1) and vector graphics (SVG, PDF, EPS) can be scaled by pt_per_unit.

Using CairoMakie with Gtk.jl

You can render onto a GtkCanvas using Gtk, and use that as a display for your scenes.

using Gtk, CairoMakie, AbstractPlotting

canvas = @GtkCanvas()
window = GtkWindow(canvas, "Makie", 500, 500)

function drawonto(canvas, scene)
    @guarded draw(canvas) do _
       resize!(scene, Gtk.width(canvas), Gtk.height(canvas))
       screen = CairoMakie.CairoScreen(scene, Gtk.cairo_surface(canvas), getgc(canvas), nothing)
       CairoMakie.cairo_draw(screen, scene)

scene = heatmap(rand(50, 50)) # or something

drawonto(canvas, scene)
show(canvas); # trigger rendering

Used By Packages

No packages found.