A custom plot can be created by using attributes
. The attributes can be set through keyword arguments. A list of attributes
for a plot object, pltobj
, can be viewed via pltobj.attributes
as in:
fig, ax, pltobj = scatterlines(1:10)
pltobj.attributes
ComputeGraph():
Inputs:
:alpha => Input(:alpha, 1.0)
:arg1 => Input(:arg1, 1:10)
:clip_planes => Input(:clip_planes, Plane3f[])
:color => Input(:color, nothing)
:colormap => Input(:colormap, viridis)
:colorrange => Input(:colorrange, Makie.Automatic())
:colorscale => Input(:colorscale, identity)
:cycle => Input(:cycle, [:color])
:cycle_index => Input(:cycle_index, 1)
:depth_shift => Input(:depth_shift, 0.0)
:dim_conversions => Input(:dim_conversions, Makie.DimConversions((Observable{Union{Nothing, Makie.AbstractDimConversion}}(nothing), Observable{Union{Nothing, Makie.AbstractDimConversion}}(nothing), Observable{Union{Nothing, Makie.AbstractDimConversion}}(nothing))))
:f32c => Input(:f32c, Makie.LinearScaling([1.0, 1.0, 1.0], [0.0, 0.0, 0.0]))
:fxaa => Input(:fxaa, true)
:highclip => Input(:highclip, Makie.Automatic())
:inspectable => Input(:inspectable, true)
:inspector_clear => Input(:inspector_clear, Makie.Automatic())
:inspector_hover => Input(:inspector_hover, Makie.Automatic())
:inspector_label => Input(:inspector_label, Makie.Automatic())
:joinstyle => Input(:joinstyle, miter)
:linecap => Input(:linecap, butt)
:linestyle => Input(:linestyle, nothing)
:linewidth => Input(:linewidth, 1.5)
:lowclip => Input(:lowclip, Makie.Automatic())
:marker => Input(:marker, circle)
:markercolor => Input(:markercolor, Makie.Automatic())
:markercolormap => Input(:markercolormap, Makie.Automatic())
:markercolorrange => Input(:markercolorrange, Makie.Automatic())
:markersize => Input(:markersize, 9)
:miter_limit => Input(:miter_limit, 1.0471975511965976)
:model => Input(:model, [1.0 0.0 0.0 0.0; 0.0 1.0 0.0 0.0; 0.0 0.0 1.0 0.0; 0.0 0.0 0.0 1.0])
:nan_color => Input(:nan_color, transparent)
:overdraw => Input(:overdraw, false)
:palette_lookup => Input(:palette_lookup, Dict(:color => :color))
:palettes => Input(:palettes, Attributes())
:space => Input(:space, data)
:ssao => Input(:ssao, false)
:strokecolor => Input(:strokecolor, black)
:strokewidth => Input(:strokewidth, 0)
:transform_func => Input(:transform_func, (identity, identity))
:transformation => Input(:transformation, automatic)
:transparency => Input(:transparency, false)
:visible => Input(:visible, true)
Outputs:
:alpha => Computed(:alpha, #undef)
:arg1 => Computed(:arg1, 1:10)
:args => Computed(:args, ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 1:10))
:clip_planes => Computed(:clip_planes, #undef)
:color => Computed(:color, #undef)
:colormap => Computed(:colormap, #undef)
:colorrange => Computed(:colorrange, #undef)
:colorscale => Computed(:colorscale, #undef)
:convert_kwargs => Computed(:convert_kwargs, NamedTuple())
:converted => Computed(:converted, (Point{2, Float64}[[1.0, 1.0], [2.0, 2.0], [3.0, 3.0], [4.0, 4.0], [5.0, 5.0], [6.0, 6.0], [7.0, 7.0], [8.0, 8.0], [9.0, 9.0], [10.0, 10.0]],))
:cycle => Computed(:cycle, Cycle([[:color] => :color], false))
:cycle_index => Computed(:cycle_index, #undef)
:depth_shift => Computed(:depth_shift, #undef)
:dim_conversions => Computed(:dim_conversions, #undef)
:dim_converted => Computed(:dim_converted, ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 1:10))
:f32c => Computed(:f32c, #undef)
:fxaa => Computed(:fxaa, #undef)
:highclip => Computed(:highclip, #undef)
:inspectable => Computed(:inspectable, #undef)
:inspector_clear => Computed(:inspector_clear, #undef)
:inspector_hover => Computed(:inspector_hover, #undef)
:inspector_label => Computed(:inspector_label, #undef)
:joinstyle => Computed(:joinstyle, #undef)
:linecap => Computed(:linecap, #undef)
:linestyle => Computed(:linestyle, #undef)
:linewidth => Computed(:linewidth, #undef)
:lowclip => Computed(:lowclip, #undef)
:marker => Computed(:marker, #undef)
:markercolor => Computed(:markercolor, #undef)
:markercolormap => Computed(:markercolormap, #undef)
:markercolorrange => Computed(:markercolorrange, #undef)
:markersize => Computed(:markersize, #undef)
:miter_limit => Computed(:miter_limit, #undef)
:model => Computed(:model, #undef)
:nan_color => Computed(:nan_color, #undef)
:overdraw => Computed(:overdraw, #undef)
:palette_lookup => Computed(:palette_lookup, Dict(:color => :color))
:palettes => Computed(:palettes, #undef)
:positions => Computed(:positions, Point{2, Float64}[[1.0, 1.0], [2.0, 2.0], [3.0, 3.0], [4.0, 4.0], [5.0, 5.0], [6.0, 6.0], [7.0, 7.0], [8.0, 8.0], [9.0, 9.0], [10.0, 10.0]])
:real_markercolor => Computed(:real_markercolor, #undef)
:real_markercolormap => Computed(:real_markercolormap, #undef)
:real_markercolorrange => Computed(:real_markercolorrange, #undef)
:space => Computed(:space, data)
:ssao => Computed(:ssao, #undef)
:strokecolor => Computed(:strokecolor, #undef)
:strokewidth => Computed(:strokewidth, #undef)
:transform_func => Computed(:transform_func, #undef)
:transformation => Computed(:transformation, #undef)
:transparency => Computed(:transparency, #undef)
:visible => Computed(:visible, #undef)
Asking for help in the REPL
as ?ablines
or help(ablines)
for any given plotting function will show you their corresponding attributes plus a short description on how to use that specific function. For example, for ablines
:
help(ablines)
ablines(intercepts, slopes; attrs...)
Creates a line defined by f(x) = slope * x + intercept crossing a whole
Scene with 2D projection at its current limits. You can pass one or multiple
intercepts or slopes.
Plot type
=========
The plot type alias for the ablines function is ABLines.
Attributes
==========
alpha = 1.0 — The alpha value of the colormap or color attribute. Multiple
alphas like in plot(alpha=0.2, color=(:red, 0.5), will get multiplied.
clip_planes = @inherit clip_planes automatic — Clip planes offer a way to do
clipping in 3D space. You can set a Vector of up to 8 Plane3f planes here,
behind which plots will be clipped (i.e. become invisible). By default clip
planes are inherited from the parent plot or scene. You can remove parent
clip_planes by passing Plane3f[].
color = @inherit linecolor — The color of the line.
colormap = @inherit colormap :viridis — Sets the colormap that is sampled
for numeric colors. PlotUtils.cgrad(...), Makie.Reverse(any_colormap) can be
used as well, or any symbol from ColorBrewer or PlotUtils. To see all
available color gradients, you can call Makie.available_gradients().
colorrange = automatic — The values representing the start and end points of
colormap.
colorscale = identity — The color transform function. Can be any function,
but only works well together with Colorbar for identity, log, log2, log10,
sqrt, logit, Makie.pseudolog10, Makie.Symlog10, Makie.AsinhScale,
Makie.SinhScale, Makie.LogScale, Makie.LuptonAsinhScale, and
Makie.PowerScale.
cycle = [:color] — Sets which attributes to cycle when creating multiple
plots.
depth_shift = 0.0 — Adjusts the depth value of a plot after all other
transformations, i.e. in clip space, where -1 <= depth <= 1. This only
applies to GLMakie and WGLMakie and can be used to adjust render order (like
a tunable overdraw).
fxaa = false — Adjusts whether the plot is rendered with fxaa
(anti-aliasing, GLMakie only).
highclip = automatic — The color for any value above the colorrange.
inspectable = @inherit inspectable — Sets whether this plot should be seen
by DataInspector. The default depends on the theme of the parent scene.
inspector_clear = automatic — Sets a callback function (inspector, plot) ->
... for cleaning up custom indicators in DataInspector.
inspector_hover = automatic — Sets a callback function (inspector, plot,
index) -> ... which replaces the default show_data methods.
inspector_label = automatic — Sets a callback function (plot, index,
position) -> string which replaces the default label generated by
DataInspector.
linecap = @inherit linecap — Sets the type of linecap used, i.e. :butt (flat
with no extrusion), :square (flat with 1 linewidth extrusion) or :round.
linestyle = nothing — Sets the dash pattern of the line. Options are :solid
(equivalent to nothing), :dot, :dash, :dashdot and :dashdotdot. These can
also be given in a tuple with a gap style modifier, either :normal, :dense
or :loose. For example, (:dot, :loose) or (:dashdot, :dense).
For custom patterns have a look at Makie.Linestyle.
linewidth = @inherit linewidth — Sets the width of the line in pixel units
lowclip = automatic — The color for any value below the colorrange.
model = automatic — Sets a model matrix for the plot. This overrides
adjustments made with translate!, rotate! and scale!.
nan_color = :transparent — The color for NaN values.
overdraw = false — Controls if the plot will draw over other plots. This
specifically means ignoring depth checks in GL backends
space = :data — Sets the transformation space for box encompassing the plot.
See Makie.spaces() for possible inputs.
ssao = false — Adjusts whether the plot is rendered with ssao (screen space
ambient occlusion). Note that this only makes sense in 3D plots and is only
applicable with fxaa = true.
transformation = :automatic — No docs available.
transparency = false — Adjusts how the plot deals with transparency. In
GLMakie transparency = true results in using Order Independent Transparency.
visible = true — Controls whether the plot will be rendered or not.
ablines has the following function signatures:
(Vector, Vector)
(Vector, Vector, Vector)
(Matrix)
Available attributes for ABLines are:
alpha
clip_planes
color
colormap
colorrange
colorscale
cycle
depth_shift
highclip
inspectable
inspector_clear
inspector_hover
inspector_label
linecap
linestyle
linewidth
lowclip
nan_color
overdraw
space
ssao
transparency
visible
Not only the plot objects have attributes, in the next Section we will see that also the Axis
and Figure
objects do.