2013-11-21 6 views
5

मैं इस सरल कोड (डेटा + barplot) है y- अक्ष मूल्य के एक समारोह के रूप में रंगों के साथ barplot:ggplot2:

dat <- c('Jan','Feb','Mar', 'Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') 
val <- c(-2.5, 3, 2.5, -3.3, -1, 0.2, 6, 4.3, 5.5, 2, -1.9, -2.3) 
df <- data.frame(dat, val) 
bar <- ggplot(data = df, aes(x = factor(dat, levels = month.abb), y = val)) + 
    geom_bar(stat = 'identity') 
print(bar) 

कहीं और मैं निम्नलिखित पट्टिका का उपयोग एक हीटमैप बनाया:

# Palette 
LtoM <-colorRampPalette(c('red', 'yellow')) 
Mid <- "snow3" 
MtoH <-colorRampPalette(c('lightgreen', 'darkgreen')) 

कि द्वारा कहा जाता है:

scale_fill_gradient2(low = LtoM(100), mid = Mid, high = MtoH(100)) 

अब मैं अपने barplot के लिए एक समान रंग पैलेट उपयोग करना चाहते हैं, कि मैं सह चाहते हैं ऊंचाई के एक समारोह होने के लिए प्रत्येक बार में लॉर (अधिकतम वाई के लिए लाल से कुछ ग्रेड अधिकतम वाई के लिए हरा)।

मैं यह कैसे कर सकता हूं, कृपया?

उत्तर

3

आप मूल रूप से अपने वर्तमान कोड के साथ हैं। बस scale_fill_gradient फ़ंक्शन जोड़ें।

bar <- ggplot(data = df, aes(x = factor(dat, levels = month.abb), y = val, 
       fill=val)) + 
     geom_bar(stat = 'identity') + 
     scale_fill_gradient2(low=LtoM(100), mid='snow3', 
     high=MtoH(100), space='Lab') 

custom colors

हालांकि, scale_fill_gradient2 ढाल-आईएनजी की देखभाल करने के लिए अनुमति बहुत अच्छी तरह से

bar <- ggplot(data = df, aes(x = factor(dat, levels = month.abb), y = val, 
       fill=val)) + 
     geom_bar(stat = 'identity') + 
     scale_fill_gradient2(low='red', mid='snow3', high='darkgreen', space='Lab') 

generated colors

+0

lilster जवाब देने के लिए धन्यवाद काम करता है। असल में मुझे पता था कि आपका पहला ग्राफ कैसे प्राप्त करें, लेकिन यह ठीक नहीं है कि मैं क्या कर रहा हूं। मैं वैल = 2 ('लाल' और 'हरा' होने पर सभी सलाखों को वैल = 5 (और बीच में एक रंग स्केल) कहूंगा। यह प्रत्येक बार रंग (समान रूप से) के प्रतिनिधित्व के मूल्य के आधार पर अलग है। मुझे आशा है कि मैं अब थोड़ा स्पष्ट हूं – tagoma

+0

मुझे लगता है कि मुझे यहां अधिक जानकारी चाहिए। 'मैं चाहता हूं कि सभी सलाखों वैल = -2 हो' लाल 'और' हरा 'जब वैल = 5 (और बीच में एक रंग स्केल)।' <- मैंने पोस्ट किए गए दोनों ग्राफ इसे संतुष्ट करने लगते हैं। 'यह प्रत्येक बार रंग (समान रूप से) के मूल्य के आधार पर अलग है। <- यह अलग है, लेकिन मेरे उत्तरों में, न तो रंग समान रूप से रंगीन होते हैं। स्केल भरने वाले ग्रेडियेंट ने अपना न्यूनतम मान "reddest" होने के लिए सेट किया है, आपका अधिकतम मान "हरित" होना चाहिए, और उसके बाद रंग का स्केल होना चाहिए। क्या आप वर्णन कर सकते हैं कि आप जो चाहते हैं उससे अलग है, शायद एक छवि फ़ाइल अटैच – lilster

+0

हैलो लिलस्टर आपके धैर्य के लिए धन्यवाद :) मैं इस तरह की एक साजिश 'जैसे' आकर्षित करना चाहता हूं: //www.quinn-curtis .com/QCChar96.jpg आप देखते हैं, किसी भी वाई मान पर सभी बार एक ही रंग के होते हैं और रंग y मान का एक कार्य होता है। – tagoma