Skip to content

dendrogram

Makie.dendrogram Function
julia
dendrogram(x, y; kwargs...)

Draw a dendrogram, with leaf nodes specified by x and y coordinates, and parent nodes identified by merges.

Arguments

  • x: x positions of leaf nodes

  • y: y positions of leaf nodes (default = 0)

Keywords

  • merges: specifies connections between nodes (see below)

Plot type

The plot type alias for the dendrogram function is Dendrogram.

source

Examples

julia
using CairoMakie
using CairoMakie

# Positions of leaf nodes
leaves = Point2f[
    (1,0),
    (2,0.5),
    (3,1),
    (4,2),
    (5,0)
]

# connections between nodes which merge into a new node
merges = [
    (1, 2), # creates node 6
    (6, 3), # 7
    (4, 5), # 8
    (7, 8), # 9
]

dendrogram(leaves, merges)
julia
using CairoMakie
using CairoMakie

leaves = Point2f[(1,0), (2,0.5), (3,1), (4,2), (5,0)]
merges = [(1, 2), (6, 3), (4, 5), (7, 8)]

# Adding groups for each leaf node will result in branches of a common group
# to be colored the same (based on colormap). Branches with miss-matched groups
# use ungrouped_color
f, a, p = dendrogram(leaves, merges,
    groups = [1, 1, 2, 3, 3],
    colormap = [:red, :green, :blue],
    ungrouped_color = :black)

# Makie.dendrogram_node_positions(plot) can be used to get final node positions
# of all nodes. The N input nodes are the first N returned
textlabel!(a, map(ps -> ps[1:5], Makie.dendrogram_node_positions(p)), text = ["A", "A", "B", "C", "C"],
    shape = Circle(Point2f(0.5), 0.5), keep_aspect = true)
f
julia
using CairoMakie
using CairoMakie

leaves = Point2f[(1,0), (2,0.5), (3,1), (4,2), (5,0)]
merges = [(1, 2), (6, 3), (4, 5), (7, 8)]

f, a, p = dendrogram(leaves, merges, rotation = :right, branch_shape = :tree)
dendrogram!(a, leaves, merges, origin = (4, 4), rotation = :left, color = :orange)
f
julia
using CairoMakie
using CairoMakie

leaves = Point2f[(1,0), (2,0.5), (3,1), (4,2), (5,0)]
merges = [(1, 2), (6, 3), (4, 5), (7, 8)]

f = Figure()
a = PolarAxis(f[1, 1])
dendrogram!(a, leaves, merges, linewidth = 3, color = :black, linestyle = :dash, origin = Point2f(0, 1))
f

Attributes

alpha

Defaults to 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.

branch_shape

Defaults to :box

Specifies how node connections are drawn. Can be :tree for direct lines or :box for rectangular lines. Other styles can be defined by overloading dendrogram_connectors!(::Val{:mystyle}, points, parent, child1, child2) which should add the points connecting the parent node to its children to points.

clip_planes

Defaults to @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

Defaults to @inherit linecolor

The color of the line.

colormap

Defaults to @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

Defaults to automatic

The values representing the start and end points of colormap.

colorscale

Defaults to 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

Defaults to [:color]

Sets which attributes to cycle when creating multiple plots.

depth

Defaults to automatic

Scales the dendrogram so that the maximum distance between the root node and leaf nodes is depth. By default no scaling is applied, i.e. the depth or height of the dendrogram is derived from the given nodes and connections. (For this each parent node is at least 1 unit above its children.)

depth_shift

Defaults to 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

Defaults to false

Adjusts whether the plot is rendered with fxaa (anti-aliasing, GLMakie only).

groups

Defaults to nothing

Sets a group id for each leaf node. Branches that merge nodes of the same group will use their group to look up a color in the given colormap. Branches that merge different groups will use ungrouped_color.

highclip

Defaults to automatic

The color for any value above the colorrange.

inspectable

Defaults to @inherit inspectable

Sets whether this plot should be seen by DataInspector. The default depends on the theme of the parent scene.

inspector_clear

Defaults to automatic

Sets a callback function (inspector, plot) -> ... for cleaning up custom indicators in DataInspector.

inspector_hover

Defaults to automatic

Sets a callback function (inspector, plot, index) -> ... which replaces the default show_data methods.

inspector_label

Defaults to automatic

Sets a callback function (plot, index, position) -> string which replaces the default label generated by DataInspector.

joinstyle

Defaults to @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

Defaults to @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

Defaults to 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

Defaults to @inherit linewidth

Sets the width of the line in screen units

lowclip

Defaults to automatic

The color for any value below the colorrange.

miter_limit

Defaults to @inherit miter_limit

Sets the minimum inner join angle below which miter joins truncate. See also Makie.miter_distance_to_angle.

model

Defaults to automatic

Sets a model matrix for the plot. This overrides adjustments made with translate!, rotate! and scale!.

nan_color

Defaults to :transparent

The color for NaN values.

origin

Defaults to Point2d(0)

Sets the position of the tree root.

overdraw

Defaults to false

Controls if the plot will draw over other plots. This specifically means ignoring depth checks in GL backends

rotation

Defaults to :down

Sets the rotation of the dendrogram, i.e. where the leaves are relative to the root. Can be :down, :right, :up, :left or a float.

space

Defaults to :data

Sets the transformation space for box encompassing the plot. See Makie.spaces() for possible inputs.

ssao

Defaults to 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

Defaults to :automatic

No docs available.

transparency

Defaults to false

Adjusts how the plot deals with transparency. In GLMakie transparency = true results in using Order Independent Transparency.

ungrouped_color

Defaults to :gray

Sets the color of branches with mixed groups if groups are defined.

visible

Defaults to true

Controls whether the plot will be rendered or not.

width

Defaults to automatic

Scales the dendrogram so that the maximum distance between leaf nodes is width. By default no scaling is applied, i.e. the width of the dendrogram is defined by its arguments.