2013-08-28 5 views
6

scale_color_gradientn मैं इसggplot सेट मैन्युअल

BP  R2  LOG10 
96162057 0.2118000 2.66514431 
96162096 0.0124700 0.31749391 
96162281 0.0008941 0.07012148 
96163560 0.5011000 2.48505399 
96163638 0.8702000 3.37778598 

की तरह एक डेटा फ्रेम है और मैं LOG10 के खिलाफ बीपी साजिश, और R2 द्वारा अंक रंग करने के लिए चाहते हैं। आर 2 0-1 से निरंतर मूल्य हैं।

myplot <- read.cvs("mytable.csv",head=TRUE) 
attach(myplot) 
ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point() 

अभी तक, बहुत अच्छा है। हालांकि मैं मैन्युअल रूप से चयनित अंतराल और रंगों में आर 2 रंगों को प्रदर्शित करना चाहता हूं, जैसे (यदि मेरे पास अलग-अलग मान थे)।

ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point() + 
     scale_color_manual(breaks= c("1","0.8","0.6","0.4","0.2","0"), 
       values = c("red","yellow","green","lightblue","darkblue")) 
Error: Continuous value supplied to discrete scale 

यह सुंदर दिखता है, लेकिन मैं रंग स्वयं को सेट करता हूं।

ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point(shape=1) + 
       scale_colour_gradientn(colours = rainbow(10)) 

तो, (लाल, पीले कैसे मैं मैन्युअल रूप से निरंतर मूल्यों (1-0.8, 0.8-0.6, 0.6-0.4, 0.4-0.2, 0.2-0) से अंतराल का चयन कर सकते हैं और उन्हें अपने पसंद के हिसाब से रंग , हरा, प्रकाश, darkblue)? रंगों के बीच एक चिकनी ढाल शांत होगा, लेकिन महत्वपूर्ण नहीं है।

उत्तर

7

आप scale_colour_gradientn() का उपयोग कर सकते हैं और फिर अपना खुद का colours= और values= प्रदान कर सकते हैं। मान प्रत्येक रंग के लिए अंतराल देंगे।

ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point() + 
    scale_colour_gradientn(colours = c("red","yellow","green","lightblue","darkblue"), 
         values=c(1.0,0.8,0.6,0.4,0.2,0)) 

enter image description here

+0

धन्यवाद बहुत सारे डिज़िस, पूरी तरह हल करता है! क्या आपके पास ग्रेडियेंट के बिना समाधान भी है, बल्कि 1-0.8 = लाल, 0.8-0.6 = पीले, और इसी तरह के सभी मूल्य हैं? – user2724998

+0

फिर आपको कट() फ़ंक्शन का उपयोग करके अपने डेटा को अंतराल में विभाजित करना चाहिए और उन अंतरालों को अलग-अलग मानों के रूप में उपयोग करना चाहिए। –

+0

ठीक है, फिर से धन्यवाद! – user2724998

3

के बाद 4 साल के इस पोस्ट पर टिप्पणी: यह ध्यान रखें कि "मूल्यों" 0 और 1, 0 के बीच अपने चर मान मैप निम्नतम और 1 उच्चतम मूल्य जा रहा है महत्वपूर्ण है। इस उदाहरण में यह संयोग से वैरिएबल के मानों को फिट करता है जो 0 से 1 तक हैं (मुझे आशा है कि मैं बकवास नहीं कहूंगा, लेकिन कम से कम मेरे छोटे अनुभव में यह मामला है)