ggplot

2013-11-25 13 views
5

में डेटा की श्रेणियों को हाइलाइट करने के लिए पृष्ठभूमि को अनुकूलित करें मैं डेटा की श्रेणियों को हाइलाइट करने के लिए अपने ggplot में पृष्ठभूमि रंग सेट करना चाहता हूं। विशेष रूप से, मैं नारंगी के साथ [-0.1,0.1], हरे, [-0.25,-0.1) और (0.1,0.25] के साथ हाइलाइट करना चाहता हूं। दूसरे शब्दों में, मुझे जो कुछ चाहिए वह कुछ अल्फा-पारदर्शिता के साथ सलाखों हैं जिनकी वाई-सीमा साजिश की वाई सीमा है, और एक्स-सीमाएं मेरे द्वारा निर्धारित की जाती हैं।ggplot

आदर्श रूप से, मुझे ऐसा कुछ चाहिए जो coord_cartesian(...) (vline(...,size = X) सेटिंग के रूप में संवेदनशील) के प्रति संवेदनशील नहीं होगा। इसके अतिरिक्त, किसी भी डेटा से कुछ स्वतंत्र होना अच्छा होगा, और पूरी तरह साजिश निर्देशांक पर आधारित होगा। मैंने geom_segment की कोशिश की, लेकिन मैं इसे समझ नहीं पाया कि काम करने वाली चौड़ाई कैसे सेट करें।

library(ggplot2) 
x <- c(seq(-1, 1, by = .001)) 
y <- rnorm(length(x)) 
df <- as.data.frame(x=x,y=y) 

ggplot(df,aes(x,y)) + 
    geom_point(aes(y*abs(x)),alpha=.2,size=5) + 
    theme_bw() + 
    coord_cartesian(xlim = c(-.5,.5),ylim=c(-1,1)) 

example

+0

उपयोग 'geom_rect'। – Roland

उत्तर

9

आप geom_rect() के साथ "सलाखों" जोड़ सकते हैं और -Inf और Inf करने के लिए ymin और ymax मूल्य निर्धारित कर सकते हैं। लेकिन @sc_evens के अनुसार this question को जवाब आप geom_point() को data और aes() ले जाएँ और ggplot() खाली छोड़ दें यह सुनिश्चित करें कि geom_rect() कार्यों के alpha= अपेक्षा के अनुरूप करने के लिए है।

ggplot()+ 
    geom_point(data=df,aes(x=y*abs(x),y=y),alpha=.2,size=5) + 
    geom_rect(aes(xmin=-0.1,xmax=0.1,ymin=-Inf,ymax=Inf),alpha=0.1,fill="green")+ 
    geom_rect(aes(xmin=-0.25,xmax=-0.1,ymin=-Inf,ymax=Inf),alpha=0.1,fill="orange")+ 
    geom_rect(aes(xmin=0.1,xmax=0.25,ymin=-Inf,ymax=Inf),alpha=0.2,fill="orange")+ 
    theme_bw() + 
    coord_cartesian(xlim = c(-.5,.5),ylim=c(-1,1)) 

enter image description here

+1

मैं सिर्फ आपके साथ जांचना चाहता हूं: यदि आप "नारंगी" 'अल्फा' में से एक को उदा। 0.1, और दूसरा 0.9 तक, क्या यह आयताकारों की उपस्थिति को बदलता है? अर्थात। क्या 'अल्फा' कम से कम 'geom_rect' में अपेक्षित तरीके से काम करता है? अगर मैं यहाँ कुछ गलत कर रहा हूं तो अग्रिम क्षमा करें। – Henrik

+0

@ हेनरिक अल्फा के साथ समस्या को इंगित करने के लिए धन्यवाद - मेरा उत्तर अपडेट किया गया। –

+0

मुझे अस्पष्ट लग रहा था कि मैं पहले 'geom_rect' और' अल्फा 'के साथ संघर्ष कर रहा था। मैं पागल हो जाने से ठीक पहले, मैंने छोड़ दिया और इसके बजाए 'एनोटेट' के लिए चला गया। इस 'मुद्दे' को स्पष्ट करने के लिए बहुत बहुत धन्यवाद @ डिडिज़िस एलिफर्ट्स! – Henrik

8

आप annotate, जो xmin और xmax मूल्यों का वैक्टर लेता कोशिश कर सकते हैं।

ggplot(df,aes(x,y)) + 
    geom_point(aes(y*abs(x)), alpha =.2, size = 5) + 
    annotate("rect", xmin = c(-0.1, -0.25, 0.1), xmax = c(0.1, -0.1, 0.25), 
      ymin = -1, ymax = 1, 
      alpha = 0.2, fill = c("green", "orange", "orange")) + 
    theme_bw() + 
    coord_cartesian(xlim = c(-.5,.5),ylim=c(-1,1)) 

enter image description here