2012-07-30 20 views
61

में अतिरिक्त किंवदंतियों को हटाएं मेरे पास एक साधारण डेटा फ्रेम है जिसे मैं ggplot2 का उपयोग करके संयुक्त रेखा और बिंदु साजिश करने की कोशिश कर रहा हूं। अपने डेटा मान इस तरह दिखता है:ggplot2

df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20), 
       group=c(rep("a",10),rep("b",10))) 

और मैं एक साजिश बनाने के लिए कोशिश कर रहा हूँ:

g <- ggplot(df, aes(x=x, y=y, group=group)) 
g <- g + geom_line(aes(colour=group)) 
g <- g + geom_point(aes(colour=group, alpha = .8)) 
g 

परिणाम एक अपवाद के साथ ठीक लग रहा है। इसमें मेरी geom_point परत के लिए अल्फा दिखाकर एक अतिरिक्त किंवदंती है।

Extra Legend for geom_point transparency

मैं समूह रंग दिखा कथा नहीं, बल्कि एक ही है कि मेरी अल्फा सेटिंग दिखाता कैसे रख सकते हैं?

उत्तर

123

सौंदर्य सेट या मैप की एक ggplot कॉल के भीतर हो सकता है।

  • एक सौंदर्य aes(...) में परिभाषित डेटा से मैप किया गया है, और एक किंवदंती बनाया।
  • एक सौंदर्यशास्त्र भी को एक ही मान पर सेट कर सकता है, इसे aes() के बाहर परिभाषित करके।

इस मामले में, यह स्थापित करने के लिएalpha = 0.8 और नक्शाcolour = group आप चाहते हैं प्रकट होता है।

प्लेस aes() परिभाषा के बाहर alpha = 0.8 ऐसा करने के लिए।

g <- ggplot(df, aes(x = x, y = y, group = group)) 
g <- g + geom_line(aes(colour = group)) 
g <- g + geom_point(aes(colour = group), alpha = 0.8) 
g 

enter image description here

किसी भी के लिए मैप किया चर आप उचित scale_... कॉल में guide = 'none' का उपयोग करके एक पौराणिक कथा की उपस्थिति को दबाने कर सकते हैं। जैसे।

g2 <- ggplot(df, aes(x = x, y = y, group = group)) + 
     geom_line(aes(colour = group)) + 
     geom_point(aes(colour = group, alpha = 0.8)) 
g2 + scale_alpha(guide = 'none') 

कौन सा एक समान भूखंड वापस आ जाएगी

संपादित @ Joran की टिप्पणी स्पॉट पर है, मैं अपने जवाब और अधिक व्यापक

+12

यह सही तरीका है ओ पी के बजाय स्थापित करने एक सौंदर्य मैपिंग कर रहा है के बाद से, लेकिन सामान्य रूप में आप 'जी + scale_alpha (गाइड =" कोई नहीं ")' की तरह कुछ का उपयोग कर किसी भी कथा की उपस्थिति को दबाने कर सकते हैं। वास्तव में – joran

+0

। जवाब पर विस्तार किया गया है। यह ओपी मुद्दे के लिए विशिष्ट नहीं, एक व्यापक उत्तर देने के लिए और अधिक समझ में आता है। – mnel

+4

अतिरिक्त स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। यह ggplot के दर्शन को समझने में मेरी मदद करने के लिए एक लंबा रास्ता तय करता है। – Wilduck

0

ggplot2 के पुराने संस्करण के लिए बनाया है (संस्करण 0.9 से पहले .2, 2012 के उत्तरार्ध में जारी), इस उत्तर को काम करना चाहिए:

मैंने इसे colour_scale के साथ करने की कोशिश की और यह काम नहीं किया। ऐसा लगता है कि colour_scale_hue आइटम एक डिफ़ॉल्ट पैरामीटर TRUE के साथ फ़ंक्शन की तरह काम करता है। मैंने scale_colour_hue(legend=FALSE) जोड़ा और यह काम किया।

मुझे यकीन है कि अगर यह

+3

'scale_ *' कॉल में 'किंवदंती' का उपयोग करके बहिष्कृत किया गया है, 'scale_colour_hue (मार्गदर्शक = "कोई नहीं") करने के लिए बेहतर है। – Gregor

+2

ध्यान में रखते हुए कि 'किंवदंती = FALSE' को बहिष्कृत किया गया है, जैसा कि @ शूजा टिप्पणी द्वारा इंगित किया गया है, यह प्रभावी रूप से एक डुप्लिकेट उत्तर है, यानी' गाइड = 'कोई भी' ''स्केल_फिल/रंग *' फ़ंक्शन में जोड़ने के लिए। –

13

बस हिस्सा है जहां आप इसे नहीं करना चाहती के बाद show.legend = F कोड जोड़ ggplot में सभी रंग का पैमाना मदों के लिए मामला है नहीं कर रहा हूँ।

g <- ggplot(df, aes(x=x, y=y, group=group)) 
g <- g + geom_line(aes(colour=group)) 
g <- g + geom_point(aes(colour=group, alpha = .8), show.legend = F)