Построение двух 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"))
это приводит к следующему сюжету:
как вы можете видеть, синий 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")
по умолчанию geom_boxplot
использовать position = "dodge"
.
основная дискуссия является: здесь
кратко, можно использовать geom_boxplot(position=position_dodge(0))
. Можно указать расстояние между полями, изменяющими значение "position_dodge".