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 and Makie.Symlog10.
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.