Существует несколько вариантов решения проблемы:
@ eipi10 предлагает в комментарии выше использовать atop()
:
p.data <- data.frame(Main = rep("Ratio", 100),
CAT = c('A','B','C','D'),
value = rnorm(100, mean = 1.5, sd = 1.5))
p.text <- data.frame(Main = "Ratio",
CAT = 'B',
value = 7,
lab = "Text")
p <- ggplot(data = p.data, aes(x = CAT, y = value, fill = CAT)) +
geom_boxplot() +
scale_y_continuous(breaks = c(0:6), limits = c(0,8)) +
facet_wrap(~ Main, scales = 'fixed', nrow = 1, ncol = 1) +
geom_text(data = p.text, hjust = 0, parse = TRUE,
label = "atop(paste(bold(CMV): f ^ 2, \" = 0.04, p = 0.003\"),
bold(MDD): n.s.)")
p
Тем не менее, я привередлив в форматировании и хотел бы, чтобы обе строки были выровнены по левому краю. Итак, я просто создам еще одну строку во фрейме данных p.text
с меньшим значением, чтобы разместить еще один geom_text
:
p.text <- data.frame(Main = "Ratio",
CAT = 'B',
value = c(7, 6),
lab = "Text")
p <- ggplot(data = p.data, aes(x = CAT, y = value, fill = CAT)) +
geom_boxplot() +
scale_y_continuous(breaks = c(0:6), limits = c(0,8)) +
facet_wrap(~ Main, scales = 'fixed', nrow = 1, ncol = 1) +
geom_text(data = p.text[1,], hjust = 0, parse = TRUE,
label = "paste(bold(CMV): f ^ 2, \" = 0.04, p = 0.003\")") +
geom_text(data = p.text[2,], hjust = 0, parse = TRUE,
label = "paste(bold(MDD): n.s.)")
p
Мне нужно отрегулировать значение, чтобы получить правильный интервал между строками, но это будет работать.