Visualizing Geodesics
In Makie there exist lines and scatterlines. On manifolds a line segment is generalised to “the shortest curve with zero intrinsic acceleration”, or shortest_geodesic. Similarly here we introduce geodesics(M, points) to generate a piecewise (shortest) geodesics curve and scattergeodesics(M, points) when the points should also be marked.
ManifoldMakie.geodesics — Function
geodesics(M, points)Creates a connected geodesic plot connecting all or points sequentially.
NaN values are displayed as gaps in the line.
Plot type
The plot type alias for the geodesics function is Geodesics.
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[].
closed = false — Set the curve to be closed by connecting the last and first point as well
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. The values to cycle through are defined by the parent Theme. Multiple cycled attributes can be set by passing a vector. Elements can
- directly refer to a cycled attribute, e.g.
:color - map a cycled attribute to a palette attribute, e.g.
:linecolor => :color - map multiple cycled attributes to a palette attribute, e.g.
[:linecolor, :markercolor] => :color
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 (fast approximate anti-aliasing, GLMakie only). Note that some plots implement a better native anti-aliasing solution (scatter, text, lines). For them fxaa = true generally lowers quality. Plots that show smoothly interpolated data (e.g. image, surface) may also degrade in quality as fxaa = true can cause blurring.
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.
joinstyle = @inherit joinstyle — Controls the rendering at corners. Options are :miter for sharp corners, :bevel for "cut off" corners, and :round for rounded corners. If the corner angle is below miter_limit, :miter is equivalent to :bevel to avoid long spikes.
linecap = @inherit linecap — Sets the type of line cap used. Options are :butt (flat without extrusion), :square (flat with half a 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 screen units
lowclip = automatic — The color for any value below the colorrange.
miter_limit = @inherit miter_limit — Sets the minimum inner join angle below which miter joins truncate. See also Makie.miter_distance_to_angle.
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
samples = 100 — Set the number of samples used per geodesic
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 — Controls the inheritance or directly sets the transformations of a plot. Transformations include the transform function and model matrix as generated by translate!(...), scale!(...) and rotate!(...). They can be set directly by passing a Transformation() object or inherited from the parent plot or scene. Inheritance options include:
:automatic: Inherit transformations if the parent and childspaceis compatible:inherit: Inherit transformations:inherit_model: Inherit only model transformations:inherit_transform_func: Inherit only the transform function:nothing: Inherit neither, fully disconnecting the child's transformations from the parent
Another option is to pass arguments to the transform!() function which then get applied to the plot. For example transformation = (:xz, 1.0) which rotates the xy plane to the xz plane and translates by 1.0. For this inheritance defaults to :automatic but can also be set through e.g. (:nothing, (:xz, 1.0)).
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 gets rendered or not.
ManifoldMakie.scattergeodesics — Function
scattergeodesics(M, points)Plots a scatter of points on a manifold M and geodesics between them. This plot recipe follows scatterlines very closely.
Plot type
The plot type alias for the scattergeodesics function is ScatterGeodesics.
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[].
closed = false — Set the curve to be closed by connecting the last and first point as well
color = @inherit linecolor — The color of the line, and by default also of the scatter markers.
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. The values to cycle through are defined by the parent Theme. Multiple cycled attributes can be set by passing a vector. Elements can
- directly refer to a cycled attribute, e.g.
:color - map a cycled attribute to a palette attribute, e.g.
:linecolor => :color - map multiple cycled attributes to a palette attribute, e.g.
[:linecolor, :markercolor] => :color
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).
depthsorting = false — Enables depth-sorting of markers which can improve border artifacts. Currently supported in GLMakie only.
distancefield = nothing — Optional distancefield used for e.g. font and bezier path rendering. Will get set automatically.
font = "default" — Sets the font to be used for character markers
fxaa = false — Adjusts whether the plot is rendered with fxaa (fast approximate anti-aliasing, GLMakie only). Note that some plots implement a better native anti-aliasing solution (scatter, text, lines). For them fxaa = true generally lowers quality. Plots that show smoothly interpolated data (e.g. image, surface) may also degrade in quality as fxaa = true can cause blurring.
glowcolor = (:black, 0.0) — Sets the color of the glow effect around the marker.
glowwidth = 0.0 — Sets the size of a glow effect around the marker.
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.
joinstyle = @inherit joinstyle — Controls the rendering at corners. Options are :miter for sharp corners, :bevel for "cut off" corners, and :round for rounded corners. If the corner angle is below miter_limit, :miter is equivalent to :bevel to avoid long spikes.
linecap = @inherit linecap — Sets the type of line cap used. Options are :butt (flat without extrusion), :square (flat with half a 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 screen units
lowclip = automatic — The color for any value below the colorrange.
marker = @inherit marker — Sets the scatter marker.
marker_offset = Vec3f(0) — The offset of the marker from the given position in markerspace units. An offset of 0 corresponds to a centered marker.
markercolor = Makie.automatic — Sets the color of scatter markers. These default to color
markercolormap = Makie.automatic — Sets the colormap for scatter markers. This defaults to colormap
markercolorrange = Makie.automatic — Sets the colorrange for scatter markers. This defaults to colorrange
markersize = @inherit markersize — Sets the size of the marker by scaling it relative to its base size which can differ for each marker. A Real scales x and y dimensions by the same amount. A Vec or Tuple with two elements scales x and y separately. An array of either scales each marker separately. Humans perceive the area of a marker as its size which grows quadratically with markersize, so multiplying markersize by 2 results in a marker that is 4 times as large, visually.
markerspace = :pixel — Sets the space in which markersize is given. See Makie.spaces() for possible inputs
miter_limit = @inherit miter_limit — Sets the minimum inner join angle below which miter joins truncate. See also Makie.miter_distance_to_angle.
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
rotation = Billboard() — Sets the rotation of the marker. A Billboard rotation is always around the depth axis.
samples = 100 — Set the number of samples used per geodesic
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.
strokecolor = @inherit markerstrokecolor — Sets the color of the outline around a marker.
strokewidth = @inherit markerstrokewidth — Sets the width of the outline around a marker.
transform_marker = false — Controls whether the model matrix (without translation) applies to the marker itself, rather than just the positions. (If this is true, scale! and rotate! will affect the marker.
transformation = :automatic — Controls the inheritance or directly sets the transformations of a plot. Transformations include the transform function and model matrix as generated by translate!(...), scale!(...) and rotate!(...). They can be set directly by passing a Transformation() object or inherited from the parent plot or scene. Inheritance options include:
:automatic: Inherit transformations if the parent and childspaceis compatible:inherit: Inherit transformations:inherit_model: Inherit only model transformations:inherit_transform_func: Inherit only the transform function:nothing: Inherit neither, fully disconnecting the child's transformations from the parent
Another option is to pass arguments to the transform!() function which then get applied to the plot. For example transformation = (:xz, 1.0) which rotates the xy plane to the xz plane and translates by 1.0. For this inheritance defaults to :automatic but can also be set through e.g. (:nothing, (:xz, 1.0)).
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 gets rendered or not.