2015-04-06 8 views
6

Mi dispiace non posso offrire un'immagine a causa della reputazione limitata ho su questo sito ...Come impostare l'intervallo di colori di scale_colour_brewer() in ggplot2? (Tavolozza selezionata)

ho usato il seguente codice per generare il mio grafico a linee in R:

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

Ho usato la palette "Arance" perché voglio generare una serie di linee con colori simili mentre diversi.

Tuttavia, il colore della gamma inferiore/superiore è troppo leggero, quindi voglio impostare un limite per la tavolozza per evitare colori biancastri.

So che dovrei specificare qualcosa come scale_color_gradient(low = "green", high = "red"), ma come posso trovare il colore specificato con una tavolozza data?

Grazie mille!

risposta

4

Dato che si dispone di una scala discreta, si dovrebbe essere in grado di creare manualmente il set di colori e utilizzare scale_color_manual senza troppi problemi.

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 

Ora usano brewer.pal e 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 

Se si dispone di più di 6 categorie, è possibile utilizzare colorRampPalette con i colori di confine dalla chiamata brewer.pal in precedenza. Tuttavia, ora la scelta dello schema della palette richiede più riflessione (forse perché ggplot2 non lo fa automaticamente per le scale discrete).

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