2014-09-05 88 views
1

假设我有这个data.frame垂直线添加到GGPLOT2,但不是每一个方面

my.df <- structure(list(mean = c(0.045729661, 0.030416531, 0.043202944, 
0.025600973, 0.040526913, 0.046167044, 0.029352414, 0.021477789, 
0.027580529, 0.017614864, 0.020324659, 0.027547972, 0.0268722, 
0.030804717, 0.021502093, 0.008342398, 0.02295506, 0.022386184, 
0.030849534, 0.017291356, 0.030957321, 0.01871551, 0.016945678, 
0.014143042, 0.026686185, 0.020877973, 0.028612298, 0.013227244, 
0.010710895, 0.024460647, 0.03704981, 0.019832982, 0.031858501, 
0.022194059, 0.030575241, 0.024632496, 0.040815748, 0.025595652, 
0.023839083, 0.026474704, 0.033000706, 0.044125751, 0.02714219, 
0.025724641, 0.020767752, 0.026480009, 0.016794441, 0.00709195 
), std.dev = c(0.007455271, 0.006120299, 0.008243454, 0.005552582, 
0.006871527, 0.008920899, 0.007137174, 0.00582671, 0.007439398, 
0.005265133, 0.006180637, 0.008312494, 0.006628951, 0.005956211, 
0.008532386, 0.00613411, 0.005741645, 0.005876588, 0.006640122, 
0.005339993, 0.008842722, 0.006246828, 0.005532832, 0.005594483, 
0.007268493, 0.006634795, 0.008287031, 0.00588119, 0.004479003, 
0.006333063, 0.00803285, 0.006226441, 0.009681048, 0.006457784, 
0.006045368, 0.006293256, 0.008062195, 0.00857954, 0.008160441, 
0.006830088, 0.008095485, 0.006665062, 0.007437581, 0.008599525, 
0.008242957, 0.006379928, 0.007168385, 0.004643819), parent.origin = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("maternal", 
"paternal"), class = "factor"), group = structure(c(4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("F1i:F", 
"F1i:M", "F1r:F", "F1r:M"), class = "factor"), replicate = c(1, 
2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 
5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 
2, 3, 4, 5, 6)), .Names = c("mean", "std.dev", "parent.origin", 
"group", "replicate"), row.names = c(NA, -48L), class = "data.frame") 

我敢策划这样:

library(ggplot2) 


    p1 <- ggplot(data = my.df, aes(factor(replicate), color = factor(parent.origin))) 
    p1 <- p1 + geom_boxplot(aes(fill = factor(parent.origin),lower = mean - std.dev, upper = mean + std.dev, middle = mean, ymin = mean - 3*std.dev, ymax = mean + 3*std.dev), position = position_dodge(width = 0), width = 0.5, alpha = 0.5, stat="identity") + facet_wrap(~group, ncol = 4)+scale_fill_manual(values = c("red","blue"),labels = c("maternal","paternal"),name = "parental allele")+scale_colour_manual(values = c("red","blue"),labels = c("maternal","paternal"),name = "parental allele") 
    p1 <- p1 + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_rect(fill = 'white', colour = 'white'), legend.position = "none")+theme(strip.background=element_rect(fill="white")) 

主要生产:

enter image description here

我想要做的是向左侧添加黑色垂直线左侧面,右侧面右侧(即,左侧和右侧的y轴线),以及第二和第三侧面之间的另一个 - 正中间。

我知道geom_vline是我应该使用的函数,但我只能让它为每个方面添加一行。但是我想要的是至少我如何看待它的线条独立于各个方面。

这可能吗?

回答

1

这是可能的。添加以下行:

p1 <- p1 + geom_vline(data=data.frame(x= c(0,7,7), group = levels(my.df$group)[-3]), aes(xintercept = x), size=2)