ggplot

2017-02-08 26 views
6
library(ggplot2) 
p <- ggplot(mtcars, aes(wt, mpg)) 
p + geom_point(size=4) 

के साथ अलग-अलग रंगों को कैसे निर्दिष्ट करें मान लीजिए कि आपके ऊपर scatterplot है। आप कैसे निर्दिष्ट कर सकते हैं कि >= 25 mpg अंक red, एक between 20 and 25green और 0-20blue प्लॉट किए जाएंगे?ggplot

क्या यह ggplot विशेष रूप से किया जा सकता है?

उत्तर

6

में name = .. तर्क करने के लिए इसे पारित कर सकते हैं चरण:

सबसे पहले, आप उन समूहों को परिभाषित करते हैं जिनमें अलग-अलग रंग हो सकते हैं; या तो डेटा फ्रेम में या aes के अंदर एक और कॉलम जोड़कर। दूसरी बात यह है

aes(wt, mpg, color = cut(mpg, breaks = c(0, 20, 25, Inf))) 

, एक मैनुअल रंग निर्दिष्ट करने के द्वारा या पैमाने को भरने:: मैं aes यहां इस्तेमाल करेंगे

scale_color_manual(values = c('blue', 'green', 'red'), 
        limits = c('(0,20]', '(20,25]', '(25,Inf]')) 

यह निर्दिष्ट करता है जो रंग (values) का उपयोग करने के लिए और उन्हें करने के लिए आवंटित करने के लिए लेबल जो (limits); ये cut द्वारा उत्पन्न समूह के नाम हैं।

एक साथ लिया गया:

ggplot(mtcars) + 
    aes(wt, mpg, color = cut(mpg, breaks = c(0, 20, 25, Inf))) + 
    geom_point(size = 4) + 
    scale_color_manual(values = c('blue', 'green', 'red'), 
         limits = c('(0,20]', '(20,25]', '(25,Inf]')) 

आप अपने डेटा को एक अलग कॉलम के रूप में समूह जोड़कर कथा शीर्षक सुधार कर सकते हैं, या एक guides समारोह कॉल प्रदान करके:

guides(color = guide_legend(title = 'mpg range')) 
+1

को बहुत उपयोगी समाधान अपडेट करने के लिए आपके सुझाव/आलोचकों का हिस्सा उपयोग किया! अपना समय देने के लिए धन्यवाद :) – Pavlos

2

निश्चित रूप से यह हो सकता है, हालांकि इस प्रकार का काम शायद ggplot() से पहले अपने डेटा फ्रेम के साथ काम करने के लिए सबसे उपयुक्त है। आप इस तरह ifelse() इस्तेमाल कर सकते हैं:

library(ggplot2) 
p <- ggplot(mtcars, aes(wt, mpg)) 
library(ggplot2) 
p <- ggplot(mtcars, aes(wt, mpg)) 
p + geom_point(size=4, aes(color = ifelse(mpg > 25, ">25", 
            ifelse(mpg > 20, "<20", "20-25")))) + 
    scale_color_manual(values = c(">25" = "red", "<20" = "blue", "20-25" = "green"), 
         name = "MPG") 

enter image description here

आप आप दो में ऐसा एक शीर्षक बनाने के लिए guides() कॉल करने के लिए की जरूरत नहीं है तुम scale_color_manual()

+2

सावधान: रंग कोड में नाम साजिश में रंगों के अनुरूप नहीं हैं। यह शुद्ध संयोग है कि वे कम या ज्यादा मैच (वास्तव में वे नहीं करते हैं, वे मेल नहीं खाते हैं)। –

+1

'code_olour_manual (मान = सी ("लाल" = "लाल", "नीला" = "नीला", "हरा" = "हरा") जोड़ने के लिए प्रयास करें)' कोनेड्रुडॉल्फ की समस्या से बचने के लिए। साथ ही, एक बेहतर किंवदंती/शीर्षक प्राप्त करने के लिए 'रंग' चर को डेटासेट कॉलम के रूप में बनाने का प्रयास करें। – AntoniosK

+0

प्रतिक्रिया लोगों के लिए धन्यवाद, मैंने – Nate