Боковые боксы для данных с несколькими метками в R?
Я провожу предварительный анализ данных о взаимосвязи между
goodreads_score
и три логические независимые переменные:
fiction
,
best_seller
, а также
english
.
set.seed(1)
N <- 100
p <- rep(0.5, N)
id <- c(1, N)
fiction <- factor(rbinom(length(p), 1, p))
best_seller <- factor(rbinom(length(p), 1, p))
english <- factor(rbinom(length(p), 1, p))
goodreads_score <- runif(100, 0, 5)
df <- data.frame(id, fiction, best_seller, english, goodreads_score)
Я знаю, как нарисовать коробчатую диаграмму для одной независимой переменной:
ggplot(df, aes(x=fiction, y=goodreads_score)) +
geom_boxplot(colour = "#3366FF", outlier.shape = NA) +
geom_jitter(position=position_jitter(width=.1, height=0.1))
Интересно, могу ли я поместить все три метки в один график (с тремя рядом стоящими группами)?
1 ответ
Решение
Это может удовлетворить ваши потребности:
df2 <- tidyr::gather(df, key = category, value = value,
fiction:english, factor_key = TRUE )
ggplot(df2, aes(x=value, y=goodreads_score)) +
geom_boxplot(colour = "#3366FF", outlier.shape = NA) +
geom_jitter(position=position_jitter(width=.1, height=0.1)) +
facet_wrap(~category, scale="free")
Если, с другой стороны, вы ищете группировку всех категорий на основе значений индикаторов, вы можете сделать следующее:
df2 <- tidyr::gather(df, key = category, value = value,
fiction:english, factor_key = TRUE )
df2$cat_value <- paste0(df2$category,":",df2$value)
df2$cat_value <- factor(df2$cat_value ,
levels=c("fiction:0", "best_seller:0", "english:0",
"fiction:1", "best_seller:1", "english:1"))
ggplot(df2, aes(x=cat_value, y=goodreads_score)) +
geom_boxplot(colour = "#3366FF", outlier.shape = NA) +
geom_jitter(position=position_jitter(width=.1, height=0.1)) +
geom_vline(xintercept = 3.5, color = "red", linetype = "dashed", size = 1.4)