Axis3
Attributes
alignmode
Defaults to Inside()
The alignment of the scene in its suggested bounding box.
aspect
Defaults to (1.0, 1.0, 2 / 3)
Controls the lengths of the three axes relative to each other.
Options are:
A three-tuple of numbers, which sets the relative lengths of the x, y and z axes directly
:data
which sets the length ratios equal to the limit ratios of the axes. This results in an "unsquished" look where a cube in data space looks like a cube and not a cuboid.:equal
which is a shorthand for(1, 1, 1)
using CairoMakie
fig = Figure()
Axis3(fig[1, 1], aspect = (1, 1, 1), title = "aspect = (1, 1, 1)")
Axis3(fig[1, 2], aspect = (2, 1, 1), title = "aspect = (2, 1, 1)")
Axis3(fig[2, 1], aspect = (1, 2, 1), title = "aspect = (1, 2, 1)")
Axis3(fig[2, 2], aspect = (1, 1, 2), title = "aspect = (1, 1, 2)")
fig
using CairoMakie
using FileIO
fig = Figure()
brain = load(assetpath("brain.stl"))
ax1 = Axis3(fig[1, 1], aspect = :equal, title = "aspect = :equal")
ax2 = Axis3(fig[1, 2], aspect = :data, title = "aspect = :data")
for ax in [ax1, ax2]
mesh!(ax, brain, color = :gray80)
end
fig
azimuth
Defaults to 1.275pi
The azimuth (left / right) angle of the camera.
At azimuth = 0
, the camera looks at the axis from a point on the positive x axis, and rotates to the right from there with increasing values. At the default value 1.275π, the x axis goes to the right and the y axis to the left.
using CairoMakie
fig = Figure()
for (i, azimuth) in enumerate([0, 0.1, 0.2, 0.3, 0.4, 0.5])
Axis3(fig[fldmod1(i, 3)...], azimuth = azimuth * pi,
title = "azimuth = $(azimuth)π", viewmode = :fit)
end
fig
backgroundcolor
Defaults to :transparent
The background color
dim1_conversion
Defaults to nothing
Global state for the x dimension conversion.
dim2_conversion
Defaults to nothing
Global state for the y dimension conversion.
dim3_conversion
Defaults to nothing
Global state for the z dimension conversion.
elevation
Defaults to pi / 8
The elevation (up / down) angle of the camera. Possible values are between -pi/2 (looking from the bottom up) and +pi/2 (looking from the top down).
using CairoMakie
fig = Figure()
for (i, elevation) in enumerate([0, 0.05, 0.1, 0.15, 0.2, 0.25])
Axis3(fig[fldmod1(i, 3)...], elevation = elevation * pi,
title = "elevation = $(elevation)π", viewmode = :fit)
end
fig
halign
Defaults to :center
The horizontal alignment of the scene in its suggested bounding box.
height
Defaults to nothing
The height setting of the scene.
limits
Defaults to (nothing, nothing, nothing)
The limits that the user has manually set. They are reinstated when calling reset_limits!
and are set to nothing by autolimits!
. Can be either a tuple (xlow, xhigh, ylow, yhigh, zlow, zhigh) or a tuple (nothing_or_xlims, nothing_or_ylims, nothing_or_zlims). Are set by xlims!
, ylims!
, zlims!
and limits!
.
perspectiveness
Defaults to 0.0
This setting offers a simple scale from 0 to 1, where 0 looks like an orthographic projection (no perspective) and 1 is a strong perspective look. For most data visualization applications, perspective should be avoided because it makes interpreting the data correctly harder. It can be of use, however, if aesthetics are more important than neutral presentation.
using CairoMakie
fig = Figure()
for (i, perspectiveness) in enumerate(range(0, 1, length = 6))
ax = Axis3(fig[fldmod1(i, 3)...]; perspectiveness, protrusions = (0, 0, 0, 15),
title = ":perspectiveness = $(perspectiveness)")
hidedecorations!(ax)
end
fig
protrusions
Defaults to 30
The protrusions control how much gap space is reserved for labels etc. on the sides of the Axis3
. Unlike Axis
, Axis3
currently does not set these values automatically depending on the properties of ticks and labels. This is because the effective protrusions also depend on the rotation and scaling of the axis cuboid, which changes whenever the Axis3
shifts in the layout. Therefore, auto-updating protrusions could lead to an endless layout update cycle.
The default value of 30
for all sides is just a heuristic and might lead to collisions of axis decorations with the Figure
boundary or other plot elements. If that's the case, you can try increasing the value(s).
The protrusions
attribute accepts a single number for all sides, or a tuple of (left, right, bottom, top)
.
using CairoMakie
fig = Figure(backgroundcolor = :gray97)
Box(fig[1, 1], strokewidth = 0) # visualizes the layout cell
Axis3(fig[1, 1], protrusions = 100, viewmode = :stretch,
title = "protrusions = 100")
fig
using CairoMakie
fig = Figure(backgroundcolor = :gray97)
Box(fig[1, 1], strokewidth = 0) # visualizes the layout cell
ax = Axis3(fig[1, 1], protrusions = (0, 0, 0, 20), viewmode = :stretch,
title = "protrusions = (0, 0, 0, 20)")
hidedecorations!(ax)
fig
targetlimits
Defaults to Rect3f(Vec3f(0, 0, 0), Vec3f(1, 1, 1))
The limits that the axis tries to set given other constraints like aspect. Don't set this directly, use xlims!
, ylims!
or limits!
instead.
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
title
Defaults to ""
The axis title string.
titlealign
Defaults to :center
The horizontal alignment of the title.
titlecolor
Defaults to @inherit :textcolor :black
The color of the title
titlefont
Defaults to :bold
The font family of the title.
titlegap
Defaults to 4.0
The gap between axis and title.
titlesize
Defaults to @inherit :fontsize 16.0f0
The title's font size.
titlevisible
Defaults to true
Controls if the title is visible.
valign
Defaults to :center
The vertical alignment of the scene in its suggested bounding box.
viewmode
Defaults to :fitzoom
The view mode affects the final projection of the axis by fitting the axis cuboid into the available space in different ways.
:fit
uses a fixed scaling such that a tight sphere around the cuboid touches the frame edge. This means that the scaling doesn't change when rotating the axis (the apparent size of the axis stays the same), but not all available space is used. The chosenaspect
is maintained using this setting.:fitzoom
uses a variable scaling such that the closest cuboid corner touches the frame edge. When rotating the axis, the apparent size of the axis changes which can result in a "pumping" visual effect. The chosenaspect
is also maintained using this setting.:stretch
pulls the cuboid corners to the frame edges such that the available space is filled completely. The chosenaspect
is not maintained using this setting, so:stretch
should not be used if a particular aspect is needed.
using CairoMakie
fig = Figure()
for (i, viewmode) in enumerate([:fit, :fitzoom, :stretch])
for (j, elevation) in enumerate([0.1, 0.2, 0.3] .* pi)
Label(fig[i, 1:3, Top()], "viewmode = $(repr(viewmode))", font = :bold)
# show the extent of each cell using a box
Box(fig[i, j], strokewidth = 0, color = :gray95)
ax = Axis3(fig[i, j]; viewmode, elevation, protrusions = 0, aspect = :equal)
hidedecorations!(ax)
end
end
fig
width
Defaults to nothing
The width setting of the scene.
xautolimitmargin
Defaults to (0.05, 0.05)
The relative margins added to the autolimits in x direction.
xgridcolor
Defaults to RGBAf(0, 0, 0, 0.12)
The x grid color
xgridvisible
Defaults to true
Controls if the x grid is visible
xgridwidth
Defaults to 1
The x grid width
xlabel
Defaults to "x"
The x label
xlabelalign
Defaults to Makie.automatic
The x label align
xlabelcolor
Defaults to @inherit :textcolor :black
The x label color
xlabelfont
Defaults to :regular
The x label font
xlabeloffset
Defaults to 40
The x label offset
xlabelrotation
Defaults to Makie.automatic
The x label rotation in radians
xlabelsize
Defaults to @inherit :fontsize 16.0f0
The x label size
xlabelvisible
Defaults to true
Controls if the x label is visible
xreversed
Defaults to false
Controls if the x axis goes rightwards (false) or leftwards (true) in default camera orientation.
using CairoMakie
using FileIO
fig = Figure()
brain = load(assetpath("brain.stl"))
ax1 = Axis3(fig[1, 1], title = "xreversed = false")
ax2 = Axis3(fig[2, 1], title = "xreversed = true", xreversed = true)
for ax in [ax1, ax2]
mesh!(ax, brain, color = getindex.(brain.position, 1))
end
fig
xspinecolor_1
Defaults to :black
The color of x spine 1 where the ticks are displayed
xspinecolor_2
Defaults to :black
The color of x spine 2 towards the center
xspinecolor_3
Defaults to :black
The color of x spine 3 opposite of the ticks
xspinesvisible
Defaults to true
Controls if the x spine is visible
xspinewidth
Defaults to 1
The x spine width
xtickcolor
Defaults to :black
The x tick color
xtickformat
Defaults to Makie.automatic
The x tick format
xticklabelcolor
Defaults to @inherit :textcolor :black
The x ticklabel color
xticklabelfont
Defaults to :regular
The x ticklabel font
xticklabelpad
Defaults to 5
The x ticklabel pad
xticklabelsize
Defaults to @inherit :fontsize 16.0f0
The x ticklabel size
xticklabelsvisible
Defaults to true
Controls if the x ticklabels are visible
xticks
Defaults to WilkinsonTicks(5; k_min = 3)
The x ticks
xticksize
Defaults to 6
The size of the xtick marks.
xticksvisible
Defaults to true
Controls if the x ticks are visible
xtickwidth
Defaults to 1
The x tick width
xypanelcolor
Defaults to :transparent
The color of the xy panel
xypanelvisible
Defaults to true
Controls if the xy panel is visible
xzpanelcolor
Defaults to :transparent
The color of the xz panel
xzpanelvisible
Defaults to true
Controls if the xz panel is visible
yautolimitmargin
Defaults to (0.05, 0.05)
The relative margins added to the autolimits in y direction.
ygridcolor
Defaults to RGBAf(0, 0, 0, 0.12)
The y grid color
ygridvisible
Defaults to true
Controls if the y grid is visible
ygridwidth
Defaults to 1
The y grid width
ylabel
Defaults to "y"
The y label
ylabelalign
Defaults to Makie.automatic
The y label align
ylabelcolor
Defaults to @inherit :textcolor :black
The y label color
ylabelfont
Defaults to :regular
The y label font
ylabeloffset
Defaults to 40
The y label offset
ylabelrotation
Defaults to Makie.automatic
The y label rotation in radians
ylabelsize
Defaults to @inherit :fontsize 16.0f0
The y label size
ylabelvisible
Defaults to true
Controls if the y label is visible
yreversed
Defaults to false
Controls if the y axis goes leftwards (false) or rightwards (true) in default camera orientation.
using CairoMakie
using FileIO
fig = Figure()
brain = load(assetpath("brain.stl"))
ax1 = Axis3(fig[1, 1], title = "yreversed = false")
ax2 = Axis3(fig[2, 1], title = "yreversed = true", yreversed = true)
for ax in [ax1, ax2]
mesh!(ax, brain, color = getindex.(brain.position, 2))
end
fig
yspinecolor_1
Defaults to :black
The color of y spine 1 where the ticks are displayed
yspinecolor_2
Defaults to :black
The color of y spine 2 towards the center
yspinecolor_3
Defaults to :black
The color of y spine 3 opposite of the ticks
yspinesvisible
Defaults to true
Controls if the y spine is visible
yspinewidth
Defaults to 1
The y spine width
ytickcolor
Defaults to :black
The y tick color
ytickformat
Defaults to Makie.automatic
The y tick format
yticklabelcolor
Defaults to @inherit :textcolor :black
The y ticklabel color
yticklabelfont
Defaults to :regular
The y ticklabel font
yticklabelpad
Defaults to 5
The y ticklabel pad
yticklabelsize
Defaults to @inherit :fontsize 16.0f0
The y ticklabel size
yticklabelsvisible
Defaults to true
Controls if the y ticklabels are visible
yticks
Defaults to WilkinsonTicks(5; k_min = 3)
The y ticks
yticksize
Defaults to 6
The size of the ytick marks.
yticksvisible
Defaults to true
Controls if the y ticks are visible
ytickwidth
Defaults to 1
The y tick width
yzpanelcolor
Defaults to :transparent
The color of the yz panel
yzpanelvisible
Defaults to true
Controls if the yz panel is visible
zautolimitmargin
Defaults to (0.05, 0.05)
The relative margins added to the autolimits in z direction.
zgridcolor
Defaults to RGBAf(0, 0, 0, 0.12)
The z grid color
zgridvisible
Defaults to true
Controls if the z grid is visible
zgridwidth
Defaults to 1
The z grid width
zlabel
Defaults to "z"
The z label
zlabelalign
Defaults to Makie.automatic
The z label align
zlabelcolor
Defaults to @inherit :textcolor :black
The z label color
zlabelfont
Defaults to :regular
The z label font
zlabeloffset
Defaults to 50
The z label offset
zlabelrotation
Defaults to Makie.automatic
The z label rotation in radians
zlabelsize
Defaults to @inherit :fontsize 16.0f0
The z label size
zlabelvisible
Defaults to true
Controls if the z label is visible
zreversed
Defaults to false
Controls if the z axis goes upwards (false) or downwards (true) in default camera orientation.
using CairoMakie
using FileIO
fig = Figure()
brain = load(assetpath("brain.stl"))
ax1 = Axis3(fig[1, 1], title = "zreversed = false")
ax2 = Axis3(fig[2, 1], title = "zreversed = true", zreversed = true)
for ax in [ax1, ax2]
mesh!(ax, brain, color = getindex.(brain.position, 3))
end
fig
zspinecolor_1
Defaults to :black
The color of z spine 1 where the ticks are displayed
zspinecolor_2
Defaults to :black
The color of z spine 2 towards the center
zspinecolor_3
Defaults to :black
The color of z spine 3 opposite of the ticks
zspinesvisible
Defaults to true
Controls if the z spine is visible
zspinewidth
Defaults to 1
The z spine width
ztickcolor
Defaults to :black
The z tick color
ztickformat
Defaults to Makie.automatic
The z tick format
zticklabelcolor
Defaults to @inherit :textcolor :black
The z ticklabel color
zticklabelfont
Defaults to :regular
The z ticklabel font
zticklabelpad
Defaults to 10
The z ticklabel pad
zticklabelsize
Defaults to @inherit :fontsize 16.0f0
The z ticklabel size
zticklabelsvisible
Defaults to true
Controls if the z ticklabels are visible
zticks
Defaults to WilkinsonTicks(5; k_min = 3)
The z ticks
zticksize
Defaults to 6
The size of the ztick marks.
zticksvisible
Defaults to true
Controls if the z ticks are visible
ztickwidth
Defaults to 1
The z tick width