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

Yukarıdaki numarasına sahip olduğunuzu varsayalım. >= 25 mpg olan noktaların red, bir between 20 and 25green ve 0-20blue olarak işaretleneceğini nasıl belirtebilirsiniz?ggplot ile farklı renkler nasıl belirtilir?

Bu, ggplot ile özellikle yapılabilir mi?

cevap

6

yılında name = .. argüman için iletebilirsiniz bir başlık oluşturmak için guides() aramaya gerek yok adimlar:

İlk önce farklı renklere sahip olması gereken grupları tanımlarsınız; veri çerçevesine başka bir sütun ekleyerek ya da aes içinde. Manuel bir renk belirterek, İkinci

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

veya ölçeği doldurmak: Burada aes kullanacağız

Bu ( values) Kullanılacak renk ve atamak için hangi etiketlerin belirten
scale_color_manual(values = c('blue', 'green', 'red'), 
        limits = c('(0,20]', '(20,25]', '(25,Inf]')) 

(limits); Bunlar, cut tarafından oluşturulan gruplamanın adlarıdır.

Birlikte ele alındığında:

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]')) 

Sen verilerinize ayrı bir sütun olarak gruplama ekleyerek efsane başlığı artırabilir veya guides işlev çağrısı sağlayarak: Dikkatli

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

'u çok faydalı bir şekilde güncellemek için önerilerin/eleştirmenlerin bir kısmını kullandım! zaman ayırdığın için teşekkürler :) – Pavlos

2

Elbette bu tür bir çalışma, muhtemelen veri çerçevenizle çalışmak için en uygunsa bile, ggplot(). Böyle ifelse() kullanabilirsiniz:

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

Sen iki Bunu yapmak scale_color_manual()

+2

: rengi Koddaki isimler arsadaki renklere uymuyor. Bu, az ya da çok eşleşmelerinin tesadüfleridir (aslında onlar, eşleşmezler). –

+1

Belirtilen @KonradRudolph probleminden kaçınmak için '+ scale_colour_manual (değerler = c (" kırmızı "=" kırmızı "," mavi "=" mavi "," yeşil "=" yeşil ")) ifadesini eklemeyi deneyin. Ayrıca, daha iyi bir lejant/başlık elde etmek için 'color' değişkenini bir veri kümesi sütunu olarak oluşturmaya çalışın. – AntoniosK

+0

Geri bildiriminiz için teşekkürler, – Nate