2011-12-10 15 views
6

को stat_smooth बाधा मैं अपने प्लॉट के 2 भागों के लिए सबसे उपयुक्त के दो विभिन्न लाइनों की गणना करना चाहते हैं। मैं डेटा सबसेट सकता है, लेकिन सोच रहा था कि क्या यह एक सीमा है जिस पर stat_smooth संचालित होगा निर्धारित करना संभव है।एक विशिष्ट दायरे

उदाहरण के लिए, मैं के लिए अक्षां> 100 अक्षां < 100 और एक के लिए इस डेटा, एक करने के लिए दो अलग-अलग लाइनों फिट करने के लिए करना चाहते हैं।

test<-data.frame(ecdf=c(0.02040816,0.04081633,0.06122449,0.08163265,0.10204082,0.14285714,0.14285714,0.16326531,0.24489796,0.24489796,0.24489796,0.24489796,0.26530612,0.28571429,0.30612245,0.32653061,0.36734694,0.36734694,0.38775510,0.40816327,0.42857143,0.46938776,0.46938776,0.48979592,0.53061224,0.53061224,0.59183673,0.59183673,0.59183673,0.61224490,0.63265306,0.65306122,0.67346939,0.69387755,0.71428571,0.73469388,0.75510204,0.77551020,0.79591837,0.81632653,0.83673469,0.85714286,0.87755102,0.89795918,0.91836735,0.93877551,0.95918367,0.97959184,0.99900000),lat=c(50.7812,66.4062,70.3125,97.6562,101.5620,105.4690,105.4690,109.3750,113.2810,113.2810,113.2810,113.2810,125.0000,136.7190,148.4380,164.0620,167.9690,167.9690,171.8750,175.7810,183.5940,187.5000,187.5000,191.4060,195.3120,195.3120,234.3750,234.3750,234.3750,238.2810,261.7190,312.5000,316.4060,324.2190,417.9690,507.8120,511.7190,562.5000,664.0620,683.5940,957.0310,1023.4400,1050.7800,1070.3100,1109.3800,1484.3800,1574.2200,1593.7500,1750.0000)) 

p <- ggplot(test, aes(lat, ecdf)) 
p+geom_point()+scale_y_probit()+scale_x_log10()+ stat_smooth(method = "lm") 

plot

+0

मेरा मानना ​​है कि एक अलग समूह चर बनाने और उसके बाद करने के लिए है कि ऐसा करने के लिए एक ही रास्ता 'stat_smooth' में' aes' को इसे पारित। – joran

उत्तर

10

तुम हमेशा कुछ इस तरह कर सकता है:

p + geom_point() + scale_y_probit() + scale_x_log10() + 
geom_smooth(data=subset(test, lat>100), method = "lm") + 
geom_smooth(data=subset(test, lat<=100), method = "lm") 

लेकिन यह पहली बार एक कारक (यहाँ latcat) कि अंक के दो समूहों आप चाहते हैं के निशान को परिभाषित करने के शायद प्राथमिकता दी जाती है अलग से चिकनी। फिर, अपने सौंदर्य में कारक शामिल हैं, और geom_smooth() आप के लिए काम करते के बाकी क्या करेंगे:

test$latcat <- cut(test$lat, 
        breaks = c(-Inf, 100, Inf), 
        labels = c("<=100", ">100")) 

p <- ggplot(test, aes(lat, ecdf, colour = latcat)) 
p + geom_point() + scale_y_probit() + scale_x_log10() + 
geom_smooth(method = "lm") 

enter image description here

+0

धन्यवाद जोश, कि एकदम सही है! – FGiorlando

संबंधित मुद्दे