2015-04-30 5 views
14

मैं तीन मान श्रेणियों के लिए तीन अलग-अलग रंगों के साथ डेटा पॉइंट प्लॉट करने का प्रयास कर रहा हूं। उदाहरण के लिए:ggplot geom_point() विशिष्ट, अलग-अलग मानों के आधार पर रंगों के साथ

library(ggplot2) 
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(colour = qsec)) 

ऊपर का उत्पादन:

enter image description here

अब, मैं, इस ताकि qseq महत्व देता < 17 काले संशोधित करना चाहते हैं 17 और 19 के बीच मूल्यों ऊपर पीले कर रहे हैं और मूल्यों 1 लाल हैं। मैं विभिन्न दृष्टिकोण की कोशिश की है, लेकिन उनमें से कोई काम करने के लिए लगता है:

  • से here

    ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(fill = qsec)) + 
    scale_fill_gradientn(colours=c("black","yellow","red"), 
    breaks=c(0,17,19), labels=format(c("0","17","19"))) 
    

    लिया यह पैदा करता है:

    enter image description here

    तो, colorbar सही लगता है लेकिन रंग वास्तव में लागू नहीं होते हैं।

  • ggplot2 heatmap with colors for ranged values में दिए गए समाधान आशाजनक प्रतीत होते हैं लेकिन मैं उन्हें geom_point() के साथ काम करने के लिए नहीं मिल सकता।

  • साइडबार में सूचीबद्ध विभिन्न समान पदों के लिए ही चला जाता है।

मैं मैं शायद scale_fill_gradientn के बजाय असतत पैमाने किसी तरह का उपयोग करने के लिए की आवश्यकता होगी एहसास लेकिन scale_color_manual() उपयोग करने के लिए मेरे प्रयास विफल:

ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(color = factor(qsec))) + 
scale_color_manual(values=c("black", "yellow","red") 
Error: Insufficient values in manual scale. 30 needed but only 4 provided. 

मैं अनुमान लगा रहा हूँ मैं किसी भी तरह cut() या factor() का उपयोग करना होगा लेकिन मुझे यह पता लगाना प्रतीत नहीं होता है कि कैसे। कोई सुझाव?

उत्तर

22

आपको संभवत: में अपने मूल्यों cut की जरूरत है:

library(ggplot2) 
ggplot(mtcars, aes(wt, mpg)) + 
    geom_point(aes(colour = cut(qsec, c(-Inf, 17, 19, Inf))), 
      size = 5) + 
    scale_color_manual(name = "qsec", 
        values = c("(-Inf,17]" = "black", 
            "(17,19]" = "yellow", 
            "(19, Inf]" = "red"), 
        labels = c("<= 17", "17 < qsec <= 19", "> 19")) 

resulting plot

+0

हाय @roland इस scale_color_manual geom_line साथ रन की स्थापना चाहेंगे? – pacomet

+0

सभी रंगों पर एक रंग स्केल लागू होता है जिसके लिए रंग मैप किया जाता है। – Roland

+0

मैंने आपके कोड को अपने डेटा में अनुकूलित करने का प्रयास किया है लेकिन सफल नहीं हो सका। मुझे जो चाहिए वह y के मानों के आधार पर एक geom_line() को रंगना है। यह छवि (https://www.dropbox.com/s/du6fjvr71vybhuu/Rplot.png?dl=0) दिखाती है कि मैं क्या देख रहा हूं। शायद मुझे एक प्रश्न खोलना चाहिए। – pacomet

संबंधित मुद्दे