Как изменить порядок цвета линий в geom_line () в ggplot? - PullRequest
0 голосов
/ 06 мая 2018

Я хотел бы изменить цвет линий на этом графике, чтобы они имели «естественный» или оригинальный RColorBrewer порядок цветов. Этот код создает следующий сюжет:

df <- data_frame(GeoName = rep(LETTERS, 3)) %>% 
    arrange(GeoName) %>% 
    mutate(year = rep(c(2009, 2010, 2011), 26),
           percent_change = sample(seq(-3, 3, .1), 78, T))

#create my color ramp function
YlGnBu <- colorRampPalette(RColorBrewer::brewer.pal(9, 'YlGnBu'))


df %>% 
    ggplot(aes(year,
               percent_change,
               group = GeoName,
               # order = GeoName,               <- does not accomplish my goal
               color = GeoName))+
    geom_point(show.legend = F)+
    geom_line(show.legend = F)+
    scale_color_manual(values = YlGnBu(n_distinct(df$GeoName)))+ # color function 
    scale_x_continuous(breaks = c(2009, 2010, 2011))+              # from above
    theme(panel.background = element_blank(),
          panel.grid = element_blank(),
          axis.line = element_line(color = 'black')) 

enter image description here

1 Ответ

0 голосов
/ 06 мая 2018

Вам нужно превратить GeoName в фактор и расставить его уровни в правильном порядке. Например, мы можем раскрасить по значению в 2009 году:

library(ggplot2)
library(dplyr)

df <- data_frame(GeoName = rep(LETTERS, 3)) %>% 
  arrange(GeoName) %>% 
  mutate(year = rep(c(2009, 2010, 2011), 26),
         percent_change = sample(seq(-3, 3, .1), 78, T))

# here is the change:
df$GeoName <- factor(
                df$GeoName,
                levels = (filter(df, year == 2009) %>%
                  arrange(desc(percent_change)))$GeoName)

#create my color ramp function
YlGnBu <- colorRampPalette(RColorBrewer::brewer.pal(9, 'YlGnBu'))


df %>% 
  ggplot(aes(year,
             percent_change,
             group = GeoName,
             color = GeoName))+
  geom_point(show.legend = F)+
  geom_line(show.legend = F)+
  scale_color_manual(values = YlGnBu(n_distinct(df$GeoName)))+ # color function 
  scale_x_continuous(breaks = c(2009, 2010, 2011))+              # from above
  theme(panel.background = element_blank(),
        panel.grid = element_blank(),
        axis.line = element_line(color = 'black')) 

enter image description here

Поскольку линии перекрещиваются, они могут быть в естественном порядке только в течение одного года. Вам нужно выбрать тот, который лучше всего подходит для истории, которую вы хотите рассказать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...