I got help on here to use the facet-wrap for my dumbbell plot but I want to create space for my graph. This is the current graph with facet_wrap. So I just want the y-ticks to appear once(i.e., on the left plots) that
data10A <- structure(list(Session = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), conditon2 = structure(c(10L,
4L, 12L, 6L, 11L, 5L, 1L, 7L, 3L, 9L, 2L, 8L, 10L, 4L, 12L, 6L,
11L, 5L, 1L, 7L, 3L, 9L, 2L, 8L), .Label = c("CEN_LLL", "CTL_LLL",
"IPS_LLL", "CEN_RRR", "CTL_RRR", "IPS_RRR", "CEN_RLR", "CTL_RLR",
"IPS_RLR", "CEN_LRL", "CTL_LRL", "IPS_LRL"), class = "factor"),
Trial_type = structure(c(2L, 1L, 2L, 1L, 2L, 1L, 1L, 2L,
1L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L,
2L), .Label = c("Retention", "Transfer"), class = "factor"),
NormalizedJerk_102 = c(1270.168699, 2099.703957, 3259.268053,
1152.257445, 3810.890123, 4601.918336, 1792.371775, 1288.768888,
2699.08162, 1650.968794, 2018.457394, 6159.567785, 931.350429,
1053.84252, 1611.673955, 1034.363607, 5352.195367, 2499.83996,
1560.678962, 915.3845866, 1948.757464, 1341.815274, 2113.732859,
2051.140838), NormalizedJerk_104 = c(853.7034116, 924.8554548,
2268.966702, 675.7160839, 2442.874632, 1603.954653, 1010.111276,
794.1752256, 1313.813984, 1197.638788, 1039.577947, 3125.131019,
561.2311988, 767.7541159, 1019.744071, 769.6067294, 2232.404471,
1292.509181, 884.8343164, 663.0273865, 1230.369444, 717.8466364,
1536.027898, 1027.358586), key = c("Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk", "Change in normalized jerk",
"Change in normalized jerk")), row.names = c(NA, -24L), class = c("tbl_df",
"tbl", "data.frame"))
library(ggplot2)
library(dumbbell)
library(ggh4x)
data10A$key <- paste(data10A$Trial_type, data10A$Session, sep = "\n")
dumbbell::dumbbell(data10A, id = "conditon2", key = "key",
leg = "Test",
column1 = "NormalizedJerk_102",
column2 = "NormalizedJerk_104",
delt = 1, lab1 = "Pre-test", lab2 = "Post-test",
p_col1 = "black", p_col2 = "grey40",
textsize = 4, segsize = 1.5,
pointsize = 2.5,
title = "Change in Normalized jerk from Pre- to Post-test")
facet_wrap( ~ key, scales="free", ncol=2)
theme(axis.text.x = element_text(size = 12, face = "bold"),
axis.text.y = element_text(size = 11, face = "bold"),
legend.position = "right",
legend.text = element_text(size = 12),
legend.title = element_text(size = 14),
strip.text = element_text(face = "bold", size = 14, color = "black"))
CodePudding user response:
TBMK your desired result could not achieved by facet_nested
alone. The issue is that with scales="free"
you end up with a "duplicated" y-scale per facet. However, simply dropping scales="free"
is not an option as in that case you end up with a plot showing the unused condition2
categories in each facet.
Therefore one option to achieve your desired result would be to make separate plot for each Trial_Type
and glue them together using e.g. patchwork
. This will allow you to drop scales="free"
. Additionally, to make use of facet_nested(_wrap)
I dropped dumbbell
and constructed the dumbbell chart from scratch using geom_segment
and geom_point
plus geom_text
to add the labels for the differences.
library(ggplot2)
library(ggh4x)
library(patchwork)
library(magrittr)
make_dumbbell <- function(x, max_x) {
n_y <- length(unique(x$conditon2))
x$conditon2 <- as.character(x$conditon2)
ggplot(x, aes(y = conditon2, yend = conditon2))
geom_segment(aes(x = NormalizedJerk_102, xend = NormalizedJerk_104), size = 1.5, color = "gray80")
geom_point(aes(NormalizedJerk_102), size = 2.5, color = "black")
geom_point(aes(NormalizedJerk_104), size = 2.5, color = "grey40")
geom_text(aes(label = scales::number(NormalizedJerk_104 - NormalizedJerk_102, accuracy = .1)),
x = max_x, hjust = 1, fontface = "bold"
)
annotate(geom = "text", label = "DIFF", y = n_y 1, x = max_x, color = "red", fontface = "bold", hjust = 1)
scale_y_discrete(expand = expansion(add = c(.6, 1.6)))
facet_nested_wrap(~ Trial_type Session)
theme_bw()
theme(
axis.text.x = element_text(size = 12, face = "bold"),
axis.text.y = element_text(size = 11, face = "bold"),
legend.position = "right",
legend.text = element_text(size = 12),
legend.title = element_text(size = 14),
strip.text = element_text(face = "bold", size = 14, color = "black")
)
labs(x = NULL, y = NULL)
}
max_x <- 1.25 * max(c(data10A$NormalizedJerk_102, data10A$NormalizedJerk_104))
data10A %>%
split(.$Trial_type) %>%
lapply(make_dumbbell, max_x = max_x) %>%
wrap_plots(ncol = 1)