2013-07-10 62 views
7

我想用ggplot2R之間繪製多個盒形圖相互之間而不是彼此相鄰。 下面是一個例子:使用R和ggplot2在一個x位置繪製兩個盒圖

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)爲中心,而紅色和綠色的只有一半的寬度,並繪製在其共享的loc值(1.0)的左側和右側。 我想讓它們和藍色的寬度相同,並且直接在上面繪製它們。

我該如何做到這一點?

請注意,我確信箱線圖不會重疊用於我將要顯示的數據,就像它們不適用於給定示例數據一樣。

回答

9

使用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"

2

主要討論的是:here

簡言之,可以使用geom_boxplot(position=position_dodge(0))。可以指定不同'position_dodge'值的方框之間的距離。

+0

雖然它不如'position =「identity」'更清晰([建議](http://stackoverflow.com/a/17575793/2451238)[@joran](http://stackoverflow.com/ users/324364)),'position = position_dodge(0)'似乎是等價的。 – mschilli

相關問題