2013-01-02 29 views
11

मैं दो अर्द्ध पारदर्शी रिबन एक साथ प्लॉट कर रहा हूं। scale_fill_manual भाग के बिना नीचे दिए गए कोड का उपयोग करके, मैं मूल रूप से जो चाहता हूं वह "red" नामक एक पौराणिक कथा के साथ मिलता है, और blue और red लेबल करता है। scale_fill_manual भाग जोड़ने से मुझे किंवदंती और उसकी प्रविष्टियों का नाम देने की अनुमति मिलती है, लेकिन मैं पौराणिक कथाओं में रंगीन आयतों की पारदर्शिता खो देता हूं। sessionInfo कीजीजीप्लॉट किंवदंती पारदर्शिता दिखाती है और रंग भरती है

x=1:10 
y1=1:10 
y2=2:11 
y3=10:1 
y4=9:0 
dt=data.frame(x,y1,y2,y3,y4) 
library(ggplot2)  
ggplot(dt)+ 
    geom_ribbon(aes(x=x,ymin=y1,ymax=y2,fill='red'), 
       alpha=0.4,)+ 
    geom_ribbon(aes(x=x,ymin=y3,ymax=y4,fill='blue'), 
       alpha=0.5)+ 
    scale_fill_manual(name='legendname', 
        values=c('red','blue'), 
        labels=c('one','two')) 

उत्पादन()

R version 2.15.2 (2012-10-26) 
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] scales_0.2.3 ggplot2_0.9.3 plyr_1.8  reshape2_1.2.2 

loaded via a namespace (and not attached): 
[1] colorspace_1.2-0 dichromat_1.2-4 digest_0.6.0  grid_2.15.2  gtable_0.1.2  labeling_0.1  
[7] MASS_7.3-22  munsell_0.4  proto_0.3-10  RColorBrewer_1.0-5 rstudio_0.97.248 stringr_0.6.2  
[13] tools_2.15.2 

वहाँ इसी तरह के मुद्दों (Customize legend in ggplot, https://stats.stackexchange.com/questions/5007/how-can-i-change-the-title-of-a-legend-in-ggplot2, आदि) के समाधान के लिए एक बहुत हैं, लेकिन मैं कुछ भी है कि यह विशेष रूप से संबोधित करते हैं नहीं मिल रहा।

अग्रिम धन्यवाद

उत्तर

14

में आप जोड़कर कथा में सौंदर्यशास्त्र ओवरराइड कर सकते हैं:

+ guides(fill = guide_legend(override.aes= list(alpha = 0.4))) 
अपने ggplot कॉल करने के लिए

लेकिन ggplot में सबसे चीजों के साथ के रूप में, यह शायद आसान है एक तरीका है कि कई geom_ribbon बनाता में अपने डेटा की व्यवस्था करने के अनावश्यक कॉल:

dt1 <- data.frame(x = c(x,x), 
        ymin = c(y1,y3), 
        ymax = c(y2,y4), 
        grp = rep(c('red','blue'),each = 10)) 
ggplot(data = dt1,aes(x = x,ymin = ymin, ymax = ymax,fill = grp)) + 
    geom_ribbon(alpha = 0.4) + 
    scale_fill_manual(name = "legendname", 
         values = c('red','blue'), 
         labels = c('one','two')) 

enter image description here

+1

यह समाधान मेरे लिए काम करता है, मैं के रूप में केवल 1 स्तर की पारदर्शिता की आवश्यकता होती है [0.4]। क्या आप इस बात पर टिप्पणी कर सकते हैं कि प्रत्येक रिबन में अद्वितीय पारदर्शिता होने पर समाधान कैसे बदल जाएगा? – RyanStochastic

+0

@RyanStochastic 'अल्फा' एक सौंदर्य है जो स्वयं को किसी अन्य की तरह एक चर के लिए मैप किया जा सकता है। तो आप 'अल्फा = जीआरपी' को मैप करेंगे और शायद 'scale_alpha_manual' घटक जोड़ देंगे। – joran

+0

आपकी सभी मदद के लिए धन्यवाद। – RyanStochastic