Построение двух boxplots в одной позиции x с использованием R и ggplot2

Я хотел бы построить несколько boxplots выше / ниже друг друга, а не рядом друг с другом в R С помощью ggplot2. Вот пример:

library("ggplot2")
set.seed(1)
plot_data<-data.frame(loc=c(rep(1,200),rep(2,100)),
                      value=c(rnorm(100,3,.5),rnorm(100,1,.25),2*runif(100)),
                      class=c(rep("A",100),rep("B",100),rep("C",100)))
ggplot(plot_data,aes(x=loc,y=value,group=class)) +
       geom_boxplot(fill=c("red","green","blue"))

это приводит к следующему сюжету:

example plot

как вы можете видеть, синий boxplot сосредоточен вокруг его loc значение (2.0), в то время как красные и зеленые имеют только половину ширины и отображаются слева и справа от их общего loc значение (1.0). Я хочу сделать их обоих ... той же ширины, что и синий, и постройте их прямо друг над другом.

как я могу этого достичь?

обратите внимание, что я уверен, что boxplots не будут перекрываться для данных, которые я собираюсь визуализировать, так же, как и для данных данного примера.

2 ответов


использовать position = "identity":

ggplot(plot_data,aes(x=loc,y=value,group=class)) +
       geom_boxplot(fill=c("red","green","blue"),position = "identity")

enter image description here

по умолчанию geom_boxplot использовать position = "dodge".


основная дискуссия является: здесь

кратко, можно использовать geom_boxplot(position=position_dodge(0)). Можно указать расстояние между полями, изменяющими значение "position_dodge".