2015-04-06 9 views
6

Żałuję, że nie może zaoferować obraz ze względu na ograniczoną reputacji mam na tej stronie ...Jak ustawić zakres kolorów scale_colour_brewer() w ggplot2? (Wybrana paleta)

Użyłem następujący kod do generowania mój wykres liniowy w R:

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

Użyłem palety "Pomarańcze", ponieważ chcę wygenerować serię linii o podobnych kolorach przy różnych kolorach.

Kolor dolnego/górnego zakresu jest zbyt jasny, dlatego chcę ustawić limit palety, aby uniknąć białawych kolorów.

Wiem, że powinienem podać coś w rodzaju scale_color_gradient(low = "green", high = "red"), ale jak mogę znaleźć określony kolor na danej palecie?

Wielkie dzięki!

Odpowiedz

4

Skoro masz dyskretną skalę, powinieneś być w stanie ręcznie utworzyć zestaw kolorów i używać scale_color_manual bez większych problemów.

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 

Teraz użyj brewer.pal i 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 

Jeśli masz więcej niż 6 kategorii, możesz użyć colorRampPalette z kolorami granicznymi z połączenia brewer.pal wcześniej. Jednak teraz wybór schematu palety wymaga więcej przemyśleń (może dlatego, że ggplot2 nie robi tego automatycznie dla dyskretnych skal).

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 
Powiązane problemy