2016-08-04 6 views
6

मैं छायांकित आत्मविश्वास श्रेणियों को आकर्षित करने के लिए ggplot2 में geom_ribbon का उपयोग करना चाहता हूं। लेकिन अगर लाइनों में से एक लाइन सेट वाई सीमा से बाहर जाती है, तो रिबन को साजिश के किनारे तक फैले बिना काट दिया जाता है।जीजीप्लॉट रिबन वाई सीमाओं पर कट ऑफ

मिनिमल उदाहरण

x <- 0:100 
y1 <- 10+x 
y2 <- 50-x 

ggplot() + theme_bw() + 
    scale_x_continuous(name = "x", limits = c(0,100)) + 
    scale_y_continuous(name = "y", limits = c(-20,100)) + 
    geom_ribbon(aes(x=x, ymin=y2-20, ymax=y2+20), alpha=0.2, fill="#009292") +  
    geom_line(aes(x=x , y=y1)) + 
    geom_line(aes(x=x , y=y2)) 

enter image description here

क्या मैं चाहता हूँ एक ही व्यवहार पुन: पेश करने के रूप में मैं आधार आर, जहां छायांकन बढ़त

plot(x, y1, type="l", xlim=c(0,100),ylim=c(-20,100)) 
lines(x,y2) 
polygon(c(x,rev(x)), c(y2-20,rev(y2+20)), col="#00929233", border=NA) 

तक फैली में साजिश रचने के साथ मिलता है enter image description here

+0

'scale_y_continuous में उपयोग करते हुए' OOB = तराजू :: squish'() 'कॉल उपयोगी है लेकिन अपनी ही कलाकृतियों में से कुछ बनाता है ... –

+0

की [सीमा संभावित डुप्लिकेट निकाले बिना अक्ष ggplot2 डेटा (सीमाओं के बाहर): ज़ूम] (http://stackoverflow.com/questions/25685185/limit-ggplot2-axes-without-removing-data-outside-limits-zoom) – aosmith

उत्तर

9

जांच lem यह है कि limits सभी डेटा को हटा रहा है जो इसकी सीमा के भीतर नहीं है। आप जो चाहते हैं वह पहले प्लॉट करना है और फिर ज़ूम इन करना है। यह coord_cartesian का उपयोग करके किया जा सकता है।

ggplot() + theme_bw() + 
    geom_ribbon(aes(x=x, ymin=y2-20, ymax=y2+20), alpha=0.2, fill="#009292") +  
    geom_line(aes(x=x , y=y1)) + 
    geom_line(aes(x=x , y=y2)) + 
    coord_cartesian(ylim = c(-25, 100), xlim =c(0,100)) 

enter image description here

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