Я делаю boxplots с ggplot с данными, которые классифицируются по 2 факторным переменным. Я бы хотел, чтобы размеры ящиков отображали размер выборки через varwidth = TRUE
, но когда я делаю это, поля перекрываются.
1) Некоторые выборочные данные с структурой 3 x 2
data <- data.frame(group1= sample(c("A","B","C"),100, replace = TRUE),group2= sample(c("D","E"),100, replace = TRUE) ,response = rnorm(100, mean = 0, sd = 1))
2) По умолчанию ящики: ggplot без переменной ширины
ggplot(data = data, aes(y = response, x = group1, color = group2)) + geom_boxplot()
Мне нравится, как показан первый уровень группировки.
Теперь я пытаюсь добавить переменную ширину...
3)... и что я получаю, когда varwidth = TRUE
ggplot(data = data, aes(y = response, x = group1, color = group2)) + geom_boxplot(varwidth = T)
Такое совпадение похоже на то, что я использую color = group2
или group = group2
как в главном вызове ggplot
, так и в операторе geom_boxplot
. Суета с position_dodge
тоже не помогает.
4) Решение, которое мне не нравится визуально, состоит в том, чтобы создать уникальные факторы, объединив мои группы1 и group2
data$grp.comb <- paste(data$group1, data$group2)
ggplot(data = data, aes(y = response, x = grp.comb, color = group2)) + geom_boxplot()
Я предпочитаю группировать вещи, чтобы отразить перекрестную классификацию
5) Путь вперед:
Я хотел бы либо a) выяснить, как либо сделать varwidth = TRUE
не вызывать перекрытия ящиков, либо b) вручную скорректировать пространство между объединенными группами, чтобы поля в пределах 1-го уровня группировки были ближе друг к другу.