Sample-данные:
df <- data.frame("SL" = runif(50, 2.2, 5.8), "LMX" = runif(50, 1.8, 5.5))
У меня есть много разных переменных, для каждой из которых я хочу построить коробочный график с кодом ниже. Чтобы все панели имели одинаковый размер, я определил поля графика, чтобы на него не влияла длина имени переменной. Поэтому теперь я хочу добавить имя переменной за пределами панели слева.
Однако это оказывается сложнее, чем ожидалось. Я знаю, что эта проблема уже поднималась, но ни одно из решений не работает со мной (rnorm или geom_text).
Любая помощь очень ценится, спасибо:)
df %>%
select("Servant Leadership" = SL) %>%
gather(key = "variable", value = "value") -> n
n$variable <- factor(n$variable, levels = c("Servant Leadership"))
ggplot(data = n, aes(y = value, x = as.numeric(variable))) +
stat_summary(fun.data = min.mean.sd.max, geom = "boxplot", col = "#323232", fill = "#EFC76C") +
scale_fill_identity() +
scale_x_continuous(breaks = as.numeric(unique(n$variable)), minor_breaks = NULL,
labels = "", expand = c(0.12, 0.12)) +
scale_y_continuous(breaks = c(1, 2, 3, 4, 5, 6, 7)) +
expand_limits(y = c(1, 7)) + coord_flip() + labs(x = "", y = "") +
theme(text = element_text(size = 15), panel.background = element_rect(fill = "#EAEDED"),
panel.border = element_rect(fill=NA, color = "grey", size = 0.5, linetype = "solid")) +
theme(plot.margin=unit(c(0.2, 0.2, 0, 4),"cm"))
Я забыл этот код, который запускал раньше:
min.mean.sd.max <- function(x) {
r <- c(min(x), mean(x) - sd(x), mean(x), mean(x) + sd(x), max(x))
names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
r
}
И вот пакеты, которые я использую (возможно, не все в этом коде):
library(reshape)
library(scales)
library(ggplot2)
library(dplyr)
library(tidyr)