Every call to mirror_slope_plot() returns a standard
ggplot object. This means you customise it with the same
+ syntax you already use, rather than learning
package-specific options.
p <- mirror_slope_plot(
md,
trt_colors = mirror_palette("colorblind"),
show_difference = TRUE,
show_slowing = TRUE
)
p +
labs(subtitle = "Exploratory analysis") +
theme(
plot.background = element_rect(fill = "grey98", color = NA),
axis.text = element_text(size = 11)
)mirror_palette() returns a two-colour vector for the
reference and comparator arms. Three palettes are provided. The
colourblind-safe palette is recommended for publication.
mirror_palette("default")
#> [1] "#6B6B6B" "#005CB9"
mirror_palette("colorblind")
#> [1] "#999999" "#0072B2"
# Reverse if you want the stronger colour on the reference arm
mirror_palette("colorblind", reversed = TRUE)
#> [1] "#0072B2" "#999999"You may also pass any named or unnamed length-two vector of your own colours:
mirror_slope_plot(
md,
trt_colors = c("#4D4D4D", "#1B7837"),
show_difference = TRUE,
show_slowing = TRUE,
title = "Custom colours"
)base_size scales all text proportionally. Increase it
for slides or posters, decrease it for dense multi-panel figures.
mirror_slope_plot(
md,
trt_colors = mirror_palette("colorblind"),
show_difference = TRUE,
show_slowing = TRUE,
base_size = 14,
title = "Larger base size for presentation"
)Supply outcome_label and benefit_label to
match your therapeutic area. Note that supplying
benefit_label uses that text verbatim; omit it to get the
auto-computed \dQuote{X% less decline} form.
mirror_slope_plot(
md,
trt_colors = mirror_palette("colorblind"),
show_slowing = TRUE,
outcome_label = "worsening",
title = "Custom outcome terminology"
)The package renders one two-arm comparison per plot. To show several
endpoints together, build each plot separately and combine them with a
layout package such as patchwork. This keeps
mirrorslope focused while giving you full control over the
arrangement.
library(patchwork)
# A second endpoint
set.seed(9)
df2 <- df
df2$AVAL <- c(rbind(rep(0, n),
c(rnorm(n / 2, -8, 4), rnorm(n / 2, -5, 4))))
md2 <- prep_mirror_data(df2, trt_levels = c("Placebo", "Active"),
time_baseline = "Baseline", time_endpoint = "Week 24",
value_label = "% Change (Secondary Endpoint)")
md2 <- add_summary(md2, c("Placebo" = -8.1, "Active" = -4.8),
stat_label = "LS-Mean")
md2 <- add_difference(md2, estimate = 3.3, p_value = 0.04)
pa <- mirror_slope_plot(md, trt_colors = mirror_palette("colorblind"),
show_difference = TRUE, show_slowing = TRUE,
title = "Primary endpoint")
pb <- mirror_slope_plot(md2, trt_colors = mirror_palette("colorblind"),
show_difference = TRUE, show_slowing = TRUE,
title = "Secondary endpoint")
pa / pbFor a shared y-axis across panels, set the same y_lim on
each plot so the scales align.
Pass save_path to write the figure directly, or use
ggplot2::ggsave() on the returned object. A vector format
(PDF or SVG) is preferable for print; raster formats should be at least
300 dpi.