2012-01-31 34 views
6

में vline लंबाई को सीमित करने का कोई तरीका है, मैं ggplot vline और hline का उपयोग करके लाइन ग्राफ़ पर एक अवरोध दिखाने की कोशिश कर रहा हूं लेकिन ग्राफ़ पर अवरोध के बिंदु पर लाइनों को समाप्त करना चाहता हूं। उदाहरण के लिए, मैं समाप्त करने के लिए 0.25/61 लाइनों चाहते हैं इस ggplot में संभव या तो है या वहाँ एक और समाधान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 

तो है, जब वे साजिश

TIA

+7

उपयोग 'दूसरी दिशा में सीमा के विस्तार के लिए मजबूर करने के बजाय geom_segment',' Inf' या '-Inf' साथ। – joran

+0

@joran जो मेरे लिए एक अच्छा जवाब की तरह लगता है! इसे उत्तर के रूप में क्यों पोस्ट न करें? – Justin

+0

@ जस्टिन क्योंकि मैं काम पूरा करने के दौरान अपने एसओ फिक्स को खिलाने की कोशिश कर रहा हूं, इसलिए मैं संभावित उत्तर के साथ प्रश्न "बीज" करने के लिए संतुष्ट था, और विवरण किसी और को छोड़ देता हूं। – joran

उत्तर

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

धन्यवाद। वी सुरुचिपूर्ण – pssguy