ggplot

2013-04-09 22 views
8

के साथ एकाधिक वर्ग बनाएं I ggplot के 'पृष्ठभूमि' रंग में बदलने की कोशिश कर रहा हूं। मैं जो हासिल करना चाहता हूं वह नीचे दिखाया गया साजिश है। मैंने पहले से ही geom_ribbon के साथ कोशिश की है, लेकिन मैं केवल यिन और ymax को परिभाषित कर सकता हूं। यह मुझे केवल दो वर्ग बनाने की अनुमति देता है।ggplot

कोड मैं अब तक का उपयोग करें:

df <- data.frame(x = rnorm(10), y = rnorm(10)) 

ggplot(df) + 
geom_point(aes(x, y)) + 
geom_ribbon(aes(x = x, ymin = min(y), ymax = 0), fill = "red", alpha = .5) + 
geom_ribbon(aes(x = x, ymin = min(0), ymax = max(y)), fill = "blue", alpha = .5) 

और यह परिणाम मैं प्राप्त करना चाहते है:

ggplot example http://i50.tinypic.com/25j8p5z.png

अपने समय के लिए धन्यवाद।

+0

आप शायद 'geom_rect' की सोच रहे हैं? – joran

+0

आप सही हैं! मैं उम्र के लिए ggplot प्रलेखन पृष्ठों पर देख रहा हूं, लेकिन मैंने इसे पूरी तरह याद किया है। – jeroen81

उत्तर

6

अपने जवाब का एक और प्रकार है, तो आप "पृष्ठभूमि" रंग सिर्फ आंकड़ों के चरम पर ग्राफ के किनारे करने के लिए सभी तरह से जाने के लिए और नहीं करना चाहते हैं:

ggplot(df) + 
    geom_rect(xmin = -Inf, xmax = 0, ymin = -Inf, ymax = 0, fill = "red") + 
    geom_rect(xmin = 0, xmax = Inf, ymin = -Inf, ymax = 0, fill = "blue") + 
    geom_rect(xmin = 0, xmax = Inf, ymin = 0, ymax = Inf, fill = "green") + 
    geom_rect(xmin = -Inf, xmax = 0, ymin = 0, ymax = Inf, fill = "yellow") + 
    geom_point(aes(x, y), size = 5) 

enter image description here


संपादित करें: पारदर्शिता

जोड़नासमस्या को छोड़कर "काम कर रहा था" समस्या को छोड़कर geom_rect का उपयोग करके, मूल df डेटा फ्रेम का संदर्भ दिए बिना, df (इस मामले में 10 बार) की प्रत्येक पंक्ति के लिए एक आयताकार खींचा। alpha=0.01 सेट करने से पता चलता है कि पारदर्शिता है, लेकिन 10 वें अपेक्षित स्तर पर। दृष्टिकोण आयताकारों के साथ एनोटेट करना चाहिए था; एनोटेशन geom का केवल एक उदाहरण आकर्षित, मूल डेटा फ्रेम के प्रति पंक्ति एक नहीं:

ggplot(df) + 
    annotate("rect", xmin=-Inf, xmax=0, ymin=-Inf, ymax=0, fill="red", alpha=0.5) + 
    annotate("rect", xmin=0, xmax=Inf, ymin=-Inf, ymax=0, fill="blue", alpha=0.5) + 
    annotate("rect", xmin=0, xmax=Inf, ymin=0, ymax=Inf, fill="green", alpha=0.5) + 
    annotate("rect", xmin=-Inf, xmax=0, ymin=0, ymax=Inf, fill="yellow", alpha=0.5) + 
    geom_point(aes(x, y), size=5) 

enter image description here

+0

धन्यवाद, यह बेहतर दिखता है। – jeroen81

+0

कोई विचार अल्फा के साथ पारदर्शी आयताकार बनाने के लिए कैसे? बस अल्फा = .5 या fill.alpha = .5 काम नहीं करता है। मैंने भी inherent.aes = एफ के साथ कोशिश की लेकिन इसके साथ कोई सफलता नहीं है। – jeroen81

+0

धन्यवाद! मुझे डी एक्स और वाई मानों के साथ एक अलग डीएफ बनाकर समाधान मिला और फिर एईएस (fill = "x") का उपयोग करें। लेकिन आप समाधान बेहतर तरीका है। – jeroen81

3

जोरन से टिप्पणी के बाद। जवाब:

ggplot(df) + 
    geom_rect(aes(xmin = min(x), xmax = 0, ymin = min(y), ymax = 0), fill = "red") + 
    geom_rect(aes(xmin = min(0), xmax = max(x), ymin = min(y), ymax = 0), fill = "blue") + 
    geom_rect(aes(xmin = min(0), xmax = max(x), ymin = 0, ymax = max(y)), fill = "green") + 
    geom_rect(aes(xmin = min(x), xmax = 0, ymin = 0, ymax = max(y)), fill = "yellow") + 
    geom_point(aes(x, y), size = 5)