有没有办法限制ggplot2中的vline长度

问题描述:

我正试图在使用ggplot vline和hline的线图上显示一个截距,但是希望线路在图上的截取点处停止。这可能无论是在ggplot还是有另一种解决方案有没有办法限制ggplot2中的vline长度

library(ggplot2) 

pshare <- data.frame() 

for (i in 1:365) { 
    pshare <- rbind(pshare,c(i, pbirthday(i,365,coincident=3))) 
} 

names(pshare) <- c("number","probability") 

x25 <- qbirthday(prob = 0.25, classes = 365, coincident = 3) #61 
x50 <- qbirthday(prob = 0.50, classes = 365, coincident = 3) 
x75 <- qbirthday(prob = 0.75, classes = 365, coincident = 3) 

p <- qplot(number,probability,data=subset(pshare,probability<0.99)) 

p <- p + geom_vline(xintercept = c(x25,x50,x75)) 
p <- p + geom_hline(yintercept = c(0.25,0.5,0.75)) 
p 

因此,举例来说,我想0.25/61线结束时,他们对剧情

TIA

+7

使用'geom_segment'代替,与'Inf'或'-Inf'到盘区强制到边界在另一个方向上。 – joran 2012-01-31 18:50:55

+0

@joran听起来对我来说是一个很好的答案!为什么不把它作为答案? – Justin 2012-01-31 19:17:46

+0

@Justin因为我试图在完成工作的同时养活我的修补程序,所以我很满意用一个可能的答案对问题进行“种子”,并将细节留给其他人。 – joran 2012-01-31 19:31:17

扩大满足以@joran评论为一个答案和例子

geom_vline绘制整个阴谋;这是它的目的。 geom_segment只会在特定的终点之间绘制。它有助于使用相关信息制作一个数据框来绘制线条。

probs <- c(0.25, 0.50, 0.75) 
marks <- data.frame(probability = probs, 
        number = sapply(probs, qbirthday, classes=365, coincident=3)) 

通过这种方式,使线条仅进入交叉点更容易。

qplot(number,probability,data=subset(pshare,probability<0.99)) + 
    geom_segment(data=marks, aes(xend=-Inf, yend=probability)) + 
    geom_segment(data=marks, aes(xend=number, yend=-Inf)) 

enter image description here

+0

谢谢。 v优雅 – pssguy 2012-01-31 22:28:19