2012-01-31 27 views
6

Tôi đang cố gắng hiển thị chặn trên biểu đồ đường bằng ggplot vline và hline nhưng muốn các dòng dừng tại điểm chặn trên biểu đồ. Đây có phải là có thể hoặc trong ggplot hoặc là có một giải phápCó cách nào để giới hạn độ dài vline trong ggplot2

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 

Vì vậy, ví dụ, tôi muốn các 0.25/61 đường chấm dứt khi họ gặp nhau trên cốt truyện

TIA

+7

Sử dụng 'geom_segment' thay vào đó, với 'Inf' hoặc' -Inf' để buộc các mức độ đến ranh giới theo một hướng khác. – joran

+0

@joran có vẻ như là một câu trả lời hay cho tôi! tại sao không đăng nó như là một câu trả lời? – Justin

+0

@Justin Vì tôi đang cố gắng sửa chữa SO của tôi trong khi cũng nhận được công việc làm, vì vậy tôi đã được nội dung để "hạt giống" câu hỏi với một câu trả lời có thể, và để lại các chi tiết cho người khác. – joran

Trả lời

17

Mở rộng nhận xét của @joran vào một câu trả lời và ví dụ

geom_vline vẽ toàn bộ cách trên cốt truyện; đó là mục đích của nó. geom_segment sẽ chỉ vẽ giữa các điểm kết thúc cụ thể. Nó giúp tạo khung dữ liệu với thông tin liên quan để vẽ các đường.

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

Với điều này, làm cho các đường chỉ đến giao lộ dễ dàng hơn.

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

Cảm ơn. v tao nhã – pssguy

Các vấn đề liên quan