2015-04-06 4 views
6

Es tut mir leid ich kann nicht ein Bild bieten aufgrund der begrenzten Ruf ich auf dieser Seite haben ...Wie stelle ich den Farbbereich von scale_colour_brewer() in ggplot2 ein? (Palette ausgewählt)

ich den folgenden Code verwendet, um meine Liniendiagramm in R zu erzeugen:

p <- ggplot()+ 
geom_line(data=data, aes(x, y, color=Label))+ scale_colour_brewer(palette="Oranges") 

Ich habe die Palette "Orangen" verwendet, weil ich eine Reihe von Linien mit ähnlichen, aber verschiedenen Farben erzeugen möchte.

Allerdings ist die Farbe des unteren/oberen Bereichs zu hell, daher möchte ich ein Limit für die Palette festlegen, um weißliche Farben zu vermeiden.

Ich weiß, ich sollte etwas wie scale_color_gradient(low = "green", high = "red") angeben, aber wie kann ich die angegebene Farbe mit einer bestimmten Palette finden?

Vielen Dank!

Antwort

4

Da Sie eine diskrete Skala haben, sollten Sie in der Lage sein, die Farben manuell zu erstellen und scale_color_manual ohne große Probleme zu verwenden.

library(ggplot2) 
theme_set(theme_bw()) 
fake_data = data.frame(
    x = rnorm(42), 
    y = rnorm(42), 
    Label = rep(LETTERS[1:7], each = 6)) 

p_too_light <- ggplot()+ geom_line(data=fake_data, aes(x, y, color=Label))+ 
    scale_colour_brewer(palette="Oranges") 
p_too_light 

verwenden Jetzt brewer.pal und http://www.datavis.ca/sasmac/brewerpal.html.

library(RColorBrewer) 
my_orange = brewer.pal(n = 9, "Oranges")[3:9] #there are 9, I exluded the two lighter hues 

p_better <- ggplot()+ geom_line(data=fake_data, aes(x, y, color=Label))+ scale_colour_manual(values=my_orange) 
p_better 

Wenn Sie mehr als 6 Kategorien haben, könnten Sie colorRampPalette mit den Randfarben aus dem brewer.pal Anruf früher verwenden. Das Auswählen des Palettenschemas erfordert jedoch mehr Überlegungen (vielleicht, warum ggplot2 dies nicht automatisch für diskrete Skalen macht).

fake_data2 = data.frame(
    x = rnorm(140), 
    y = rnorm(140), 
    Label = rep(LETTERS[1:20], each = 7)) 

orange_palette = colorRampPalette(c(my_orange[1], my_orange[4], my_orange[6]), space = "Lab") 
my_orange2 = orange_palette(20) 

p_20cat <- ggplot()+ geom_line(data=fake_data2, aes(x, y, color=Label))+ 
    scale_colour_manual(values=my_orange2) 
p_20cat 
Verwandte Themen