我想在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"))
这导致以下情节:
如您所见,蓝色箱线图以loc
值(2.0)为中心,而红色和绿色的宽度仅为其宽度的一半,并绘制在共享{{1}的左右两侧值(1.0)。
我想让它们都与蓝色宽度相同,并将它们直接绘制在彼此之上。
我怎样才能做到这一点?
请注意,我确信箱形图对于我要显示的数据不会重叠,就像它们不适用于给定的示例数据一样。
答案 0 :(得分:10)
使用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"
。
答案 1 :(得分:2)
主要讨论是:here
简而言之,可以使用//tr[count(./td)>=count(following-sibling::tr/td) and
count(./td)>=count(preceding-sibling::tr/td)]
。可以指定改变'position_dodge'值的方框之间的距离。