2014-01-22 37 views
1

我有一个boxplot,并且想要为每个boxplot单独添加简单的水平线和geom_hline为每个geomp_boxplot绘制单独的geom_hline

我从R.箱线图例如尝试的问题是:

  • 的线条横跨整个情节,而不是仅仅箱线图。
  • 他们是箱线图背后.. ;-)

感谢提前任何帮助。

### ADDING Lines 
    somelines <- data.frame(value=c(0.2,0.3,0.4,0.6,0.7),boxplot.nr=c(1,2,3,4,5)) 

    abc <- adply(matrix(rnorm(100), ncol = 5), 2, quantile, c(0, .25, .5, .75, 1)) 
    b <- ggplot(abc, aes(x = X1, ymin = `0%`, lower = `25%`, middle = `50%`, upper = `75%`, ymax = `100%`)) + 
     geom_hline(aes(yintercept= value),somelines) 
    b + geom_boxplot(stat = "identity") 
    b + geom_boxplot(stat = "identity") + coord_flip() 
    b + geom_boxplot(aes(fill = X1), stat = "identity") 

my try

回答

1

您可以使用geom_segment()添加这些行。对于行的开始使用boxplot.nr-0.5,对于行的末尾使用boxplot.nr+0.5,对于y和明的使用value。在geom_segment()的内部还要加上inherit.aes=FALSE以确保geom_segment()不会查找用于boxplot填充的变量X1

ggplot(abc, aes(x = X1, ymin = `0%`, lower = `25%`, middle = `50%`, 
            upper = `75%`, ymax = `100%`)) + 
    geom_boxplot(aes(fill = X1), stat = "identity")+ 
    geom_segment(data=somelines,aes(x=boxplot.nr-0.5,xend=boxplot.nr+0.5, 
         y=value,yend=value),inherit.aes=FALSE,color="orange",size=1.5) 

同样的结果也可以与第二个呼叫被atchieved到geom_boxplot() - 因为只有一个在每个水平somelines对象,则箱图将显示为线值。

ggplot(abc, aes(x = X1, ymin = `0%`, lower = `25%`, middle = `50%`, 
       upper = `75%`, ymax = `100%`)) + 
    geom_boxplot(aes(fill = X1), stat = "identity")+ 
    geom_boxplot(data=somelines,aes(factor(boxplot.nr),value), 
       inherit.aes=FALSE,color="orange",size=1.5) 

enter image description here

+0

太好了!非常感谢这个答案,我不知道这一点。 – dmeu

相关问题