Skip to content

Colorbar

A Colorbar needs a colormap and a tuple of low/high limits. The colormap's axis will then span from low to high along the visual representation of the colormap. You can set ticks in a similar way to Axis.

Here's how you can create Colorbars manually.

julia
using CairoMakie

fig = Figure()

Axis(fig[1, 1])

# vertical colorbars
Colorbar(fig[1, 2], limits = (0, 10), colormap = :viridis,
    flipaxis = false)
Colorbar(fig[1, 3], limits = (0, 5),
    colormap = cgrad(:Spectral, 5, categorical = true), size = 25)
Colorbar(fig[1, 4], limits = (-1, 1), colormap = :heat,
    highclip = :cyan, lowclip = :red, label = "Temperature")

# horizontal colorbars
Colorbar(fig[2, 1], limits = (0, 10), colormap = :viridis,
    vertical = false)
Colorbar(fig[3, 1], limits = (0, 5), size = 25,
    colormap = cgrad(:Spectral, 5, categorical = true), vertical = false)
Colorbar(fig[4, 1], limits = (-1, 1), colormap = :heat,
    label = "Temperature", vertical = false, flipaxis = false,
    highclip = :cyan, lowclip = :red)

fig

If you pass a plotobject, a heatmap or contourf, the Colorbar is set up automatically such that it tracks these objects' relevant attributes like colormap, colorrange, highclip and lowclip. If you want to adjust these attributes afterwards, change them in the plot object, otherwise the Colorbar and the plot object will go out of sync.

julia
using CairoMakie

xs = LinRange(0, 20, 50)
ys = LinRange(0, 15, 50)
zs = [cos(x) * sin(y) for x in xs, y in ys]

fig = Figure()

ax, hm = heatmap(fig[1, 1][1, 1], xs, ys, zs)
Colorbar(fig[1, 1][1, 2], hm)

ax, hm = heatmap(fig[1, 2][1, 1], xs, ys, zs, colormap = :grays,
    colorrange = (-0.75, 0.75), highclip = :red, lowclip = :blue)
Colorbar(fig[1, 2][1, 2], hm)

ax, hm = contourf(fig[2, 1][1, 1], xs, ys, zs,
    levels = -1:0.25:1, colormap = :heat)
Colorbar(fig[2, 1][1, 2], hm, ticks = -1:0.25:1)

ax, hm = contourf(fig[2, 2][1, 1], xs, ys, zs,
    colormap = :Spectral, levels = [-1, -0.5, -0.25, 0, 0.25, 0.5, 1])
Colorbar(fig[2, 2][1, 2], hm, ticks = -1:0.25:1)

fig

Experimental Categorical support

Warning

This feature might change outside breaking releases, since the API is not yet finalized

You can create a true categorical map with good default ticks, by wrapping a colormap into Makie.Categorical(cmap):

julia
using CairoMakie
fig, ax, pl = barplot(1:3; color=1:3, colormap=Makie.Categorical(:viridis))
Colorbar(fig[1, 2], pl)
fig

We can't use cgrad(...; categorical=true) for this, since it has an ambiguous meaning for true categorical values.

Attributes

alignmode

Defaults to Inside()

The align mode of the colorbar in its parent GridLayout.

bottomspinecolor

Defaults to RGBf(0, 0, 0)

The color of the bottom spine.

bottomspinevisible

Defaults to true

Controls if the bottom spine is visible.

colormap

Defaults to @inherit :colormap :viridis

The colormap that the colorbar uses.

colorrange

Defaults to nothing

The range of values depicted in the colorbar.

flip_vertical_label

Defaults to false

Flips the colorbar label if the axis is vertical.

flipaxis

Defaults to true

Flips the axis to the right if vertical and to the top if horizontal.

halign

Defaults to :center

The horizontal alignment of the colorbar in its suggested bounding box.

height

Defaults to Auto()

The height setting of the colorbar.

highclip

Defaults to nothing

The color of the high clip triangle.

label

Defaults to ""

The color bar label string.

labelcolor

Defaults to @inherit :textcolor :black

The label color.

labelfont

Defaults to :regular

The label font family.

labelpadding

Defaults to 5.0

The gap between the label and the ticks.

labelrotation

Defaults to Makie.automatic

The label rotation in radians.

labelsize

Defaults to @inherit :fontsize 16.0f0

The label font size.

labelvisible

Defaults to true

Controls if the label is visible.

leftspinecolor

Defaults to RGBf(0, 0, 0)

The color of the left spine.

leftspinevisible

Defaults to true

Controls if the left spine is visible.

limits

Defaults to nothing

The range of values depicted in the colorbar.

lowclip

Defaults to nothing

The color of the low clip triangle.

minortickalign

Defaults to 0.0

The alignment of minor ticks on the axis spine

minortickcolor

Defaults to :black

The tick color of minor ticks

minorticks

Defaults to IntervalsBetween(5)

The tick locator for the minor ticks

minorticksize

Defaults to 3.0

The tick size of minor ticks

minorticksvisible

Defaults to false

Controls if minor ticks are visible

minortickwidth

Defaults to 1.0

The tick width of minor ticks

nsteps

Defaults to 100

The number of steps in the heatmap underlying the colorbar gradient.

rightspinecolor

Defaults to RGBf(0, 0, 0)

The color of the right spine.

rightspinevisible

Defaults to true

Controls if the right spine is visible.

scale

Defaults to identity

The axis scale

size

Defaults to 12

The width or height of the colorbar, depending on if it's vertical or horizontal, unless overridden by width / height

spinewidth

Defaults to 1.0

The line width of the spines.

tellheight

Defaults to true

Controls if the parent layout can adjust to this element's height

tellwidth

Defaults to true

Controls if the parent layout can adjust to this element's width

tickalign

Defaults to 0.0

The alignment of the tick marks relative to the axis spine (0 = out, 1 = in).

tickcolor

Defaults to RGBf(0, 0, 0)

The color of the tick marks.

tickformat

Defaults to Makie.automatic

Format for ticks.

ticklabelalign

Defaults to Makie.automatic

The horizontal and vertical alignment of the tick labels.

ticklabelcolor

Defaults to @inherit :textcolor :black

The color of the tick labels.

ticklabelfont

Defaults to :regular

The font family of the tick labels.

ticklabelpad

Defaults to 3.0

The gap between tick labels and tick marks.

ticklabelrotation

Defaults to 0.0

The rotation of the ticklabels.

ticklabelsize

Defaults to @inherit :fontsize 16.0f0

The font size of the tick labels.

ticklabelspace

Defaults to Makie.automatic

The space reserved for the tick labels. Can be set to Makie.automatic to automatically determine the space needed, :max_auto to only ever grow to fit the current ticklabels, or a specific value.

ticklabelsvisible

Defaults to true

Controls if the tick labels are visible.

ticks

Defaults to Makie.automatic

The ticks.

ticksize

Defaults to 5.0

The size of the tick marks.

ticksvisible

Defaults to true

Controls if the tick marks are visible.

tickwidth

Defaults to 1.0

The line width of the tick marks.

topspinecolor

Defaults to RGBf(0, 0, 0)

The color of the top spine.

topspinevisible

Defaults to true

Controls if the top spine is visible.

valign

Defaults to :center

The vertical alignment of the colorbar in its suggested bounding box.

vertical

Defaults to true

Controls if the colorbar is oriented vertically.

width

Defaults to Auto()

The width setting of the colorbar. Use size to set width or height relative to colorbar orientation instead.