Боковые боксы для данных с несколькими метками в 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)

Другие вопросы по тегам