我试图在ggplot上使用position_dodge来获取共享相同类别(cat)的两个不同信号(ind)的框图。当具有一个信号的数据类别而不是另一个信号的类别时,具有数据的信号的框图覆盖了所有的水平间隔,并且不遵循该特定类别的position_dodge指令。有没有办法使ggplot执行躲避规则?如下面的例子所示,信号x没有类别B的数据,所以它丢失了由position_dodge保留的空间。我想避免这种情况。
提前致谢。
data<-data.frame(cat=c('A','A','B','B'),values=c(3,2,1,4,NA,5,6,7,8,9),ind=c('x','x','y','y')) print(ggplot() + scale_colour_hue(guide='none') + geom_Boxplot( aes(x=as.factor(cat),y=values,fill=ind),position=position_dodge(width=.60),data=data,outlier.size = 1.2,na.rm=T))
进度更新
经过一些解决方法,我想出了我正在寻找的结果…(种)
data <- data.frame( cat=c('A',9,0),'x')) p <- ggplot() + scale_colour_hue(guide='none') + geom_Boxplot(aes(x=as.factor(cat),na.rm=T) + geom_line(aes(x=x,y=y),data=data.frame(x=c(0,3),y=rep(0,2)),size = 1,col='white') print(p)
有些人对我想要的效果感到震惊。 faceting不给我我正在寻找的效果。我正在寻找的最终图表如下所示:
如果您注意到,y = 10处的白色主要刻度标记比其他刻度标记厚。这条粗线是geom_line,大小= 1,隐藏不需要的Boxplots。
我希望我们可以更加无缝地组合不同的geom对象。我将这报告为Hadley的github的错误,但Hadley表示这是position_dodge的设计行为。我想我以非标准的方式使用ggplot2,解决办法是解决这些问题的方法。无论如何,我希望这有助于一些R人推动ggplot的功能进一步。