The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Customizing the Hierarchy Diagram
autoplot.ackwards() exposes a large number of arguments
for controlling the appearance of the hierarchy diagram. This vignette
is a visual reference: each section demonstrates one group of arguments
with rendered figures so you can see the effect before writing any
code.
All options shown here are presentation-only — they
do not change which factors were extracted or how the between-level
correlations were computed. Options that change which nodes
appear (drop_pruned, compress_levels) are
specific to the Forbes pruning extension and are covered in
vignette("ackwards-forbes").
Setup
library(ackwards)
bfi <- na.omit(bfi25)
x <- ackwards(bfi, k_max = 5, cor = "polychoric")
The default diagram for reference:
plot of chunk base
Factors are labeled m{k}f{j} (level k, factor j). Two
edge aesthetics carry the between-level correlations, and each one comes
with its own legend: arrow thickness encodes the
magnitude |r|, and edge color encodes the direction
(blue = positive, red–orange = negative). Level labels on the left count
factors per level.
Primary-parent edges are always positive after sign alignment; a red
(negative) edge is therefore a genuine secondary relationship,
not an artifact.
Encoding sign and magnitude
You choose which aesthetic carries which piece of information.
sign_by picks the channel for direction and
magnitude_by picks the channel for |r|. No aesthetic is
ever mapped without a matching legend.
sign_by — how direction is shown
sign_by = "color" (the default) uses
color_pos/color_neg. "linetype"
draws positive edges solid and negative edges dashed, freeing color for
a single-hue figure. "both" uses color and
linetype together — negatives get a distinct double-dash so they still
read in greyscale — and merges the two into a single “Direction” legend.
"none" drops sign encoding entirely.
autoplot(x, sign_by = "linetype")
plot of chunk sign-by
autoplot(x, sign_by = "both")
plot of chunk sign-by
magnitude_by — how |r| is shown
By default magnitude_by = "linewidth" maps |r| to arrow
thickness with a |r| legend. Set
magnitude_by = "none" for uniform-width edges (see also
edge_linewidth, below, to pin a specific width).
autoplot(x, magnitude_by = "none")
plot of chunk magnitude-by
Filtering edges
cut_show — minimum |r| to display
Edges below cut_show are hidden entirely. Raising it
produces a sparser diagram that emphasises only the strongest
connections.
# Default cut_show = 0.3 (already shown above)
autoplot(x, cut_show = 0.5)
plot of chunk cut-show
Edge colors
color_pos / color_neg — custom direction
colors
The default blue/red palette can be replaced with any colors
recognised by R. British spellings (colour_pos,
colour_neg) are accepted as aliases.
autoplot(x, color_pos = "darkorchid", color_neg = "darkorange")
plot of chunk colours
When sign is not encoded by color
(sign_by = "linetype" or "none"), all edges
take the single color_edge (default black) — the basis for
the Forbes (2023) publication style (see the worked example at the end
of this vignette).
Monochrome mode
mono = TRUE — a black-and-white convenience
wrapper
mono = TRUE is shorthand for
sign_by = "linetype" with black edges: solid lines are
positive correlations, dashed lines are negative.
magnitude_by still applies, so linewidth
continues to encode |r|.
plot of chunk mono
mono suits black-and-white figures where the reader must
distinguish positive from negative edges. To label the edges with their
exact values as well, add show_r = TRUE (documented
next).
Correlation labels
show_r / r_digits — annotate edges with r
values
show_r = TRUE draws the rounded (signed) correlation at
each edge midpoint. r_digits controls the number of decimal
places (default 2).
autoplot(x, show_r = TRUE)
plot of chunk show-r
autoplot(x, show_r = TRUE, r_digits = 1)
plot of chunk show-r-digits
Node labels
node_labels — rename individual factors
node_labels is a named character vector mapping factor
IDs to display strings. Unspecified factors keep any name attached with
set_factor_labels(), falling back to their
m{k}f{j} labels. If you have already labelled the object
with set_factor_labels() (see
vignette("ackwards-interpret")), those names appear on the
diagram automatically and node_labels is only needed to
override a particular node for this one plot.
autoplot(x, node_labels = c(
m5f1 = "Neuro.",
m5f2 = "Extra.",
m5f3 = "Consc.",
m5f4 = "Agree.",
m5f5 = "Open."
))
plot of chunk node-labels
Multi-line labels are supported via \n:
autoplot(x, node_labels = c(
m5f1 = "Neuro-\nticism",
m5f2 = "Extra-\nversion"
))
plot of chunk node-labels-multiline
label_template() — generate the scaffold
Typing out every factor ID is tedious for large objects.
label_template() generates the full named vector in
canonical diagram order and prints a copy-pasteable c(...)
literal you can edit and pass back to node_labels. It also
offers the Forbes (2023) letter convention ("A1",
"B1", "B2", …) as a built-in style:
autoplot(x, node_labels = label_template(x, style = "forbes"))
plot of chunk label-template-forbes
For the full naming workflow — reading factors, the sign convention,
and choosing labels across the hierarchy — see
vignette("ackwards-interpret").
Structural simplifications
primary_only = TRUE — show only primary-parent
edges
Setting primary_only = TRUE keeps only the single
strongest edge per factor (its primary parent), producing a clean tree.
Because skip-level edges are never primary, this also suppresses curved
arcs when pairs = "all" was used.
autoplot(x, primary_only = TRUE)
plot of chunk primary-only
Level labels
show_level_labels / level_label_size
Level labels (“1 factor”, “2 factors”, …) are shown by default on the
left margin. They can be hidden or resized.
autoplot(x, show_level_labels = FALSE)
plot of chunk level-labels-off
autoplot(x, show_level_labels = TRUE, level_label_size = 4)
plot of chunk level-labels-size
Arrowheads
show_arrows = FALSE — plain line ends
By default, edges end with closed arrowheads. Setting
show_arrows = FALSE draws plain line ends. This applies to
both straight edges and curved skip-level arcs.
autoplot(x, show_arrows = FALSE)
plot of chunk no-arrows
Layout orientation
direction = "horizontal" — left-to-right layout
By default levels stack top-to-bottom (level 1 at top).
direction = "horizontal" lays them out left-to-right (level
1 at left), which fits wide slides and posters; the level labels move to
the bottom margin.
autoplot(x, direction = "horizontal")
plot of chunk direction
Legend
legend = FALSE — suppress all guides
legend = FALSE removes all legends from the plot. Most
useful when the diagram is self-explanatory or the legend duplicates
information conveyed by labels.
autoplot(x, legend = FALSE)
plot of chunk no-legend
Saving plots
autoplot() returns an ordinary ggplot
object, so save it with ggplot2::ggsave():
p <- autoplot(x, direction = "horizontal")
ggplot2::ggsave("hierarchy.png", p, width = 9, height = 5, dpi = 300)
ackwards does not re-export ggsave() — that
would move ggplot2 from Suggests into Imports — so call it
from ggplot2 directly.
Diagnostic scree / criteria plot:
autoplot.suggest_k()
suggest_k() also has its own autoplot()
method, producing a multi-panel scree / parallel-analysis / VSS
diagnostic. It is documented in depth in
vignette("ackwards-suggest-k"); here we only note that the
same autoplot() generic covers it.
sk <- suggest_k(bfi, seed = 42)
#> ℹ Running parallel analysis (20 iterations, PC + FA)...
#> ✔ Running parallel analysis (20 iterations, PC + FA)... [176ms]
#>
#> ℹ Running MAP and VSS...
#> ✔ Running MAP and VSS... [53ms]
#>
#> ℹ Running Comparison Data (CD)...
#> ✔ Running Comparison Data (CD)... [5.9s]
#>
autoplot(sk)
plot of chunk suggest_k_plot
References
Forbes, M. K. (2023). Improving hierarchical models of individual
differences: An extension of Goldberg’s bass-ackward method.
Psychological Methods. https://doi.org/10.1037/met0000546
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.