Изменение порядка легенды ggplot2 (временной ряд)

Проведя большую часть дня в поисках решений, я, кажется, не понимаю этого, даже после прочтения МНОГО сообщений об этом.

Создание графика временных рядов с 3 линиями (ссылка на график ниже, нажмите), легенда гласит (сверху вниз) BR Def, BR Grow и BR Mod, но я хочу, чтобы он читался (сверху вниз) BR Def, Модификация BR и рост BR.

Я предполагаю, что идеальным способом было бы изменить порядок уровней фактора, но я, кажется, не в состоянии.

MF <- read_csv(paste0("https://raw.githubusercontent.com/LuisSousaSilva/",
                      "Articles-and-studies/master/MF.csv"), 
               col_types = cols(BR_Def = col_number(), 
                                BR_Grow = col_number(), BR_Mod = col_number(), 
                                Date = col_date(format = "%Y-%m-%d")))

ggplot(MF, aes(x = Date)) +
  geom_line(aes(y = BR_Def, colour ='BR Def')) +
  geom_line(aes(y = BR_Mod, colour ='BR Mod')) +
  geom_line(aes(y = BR_Grow, colour ='BR Grow'))

Ссылка на график

Любая помощь будет оценена по достоинству.


person LuisSilva    schedule 28.01.2018    source источник
comment
Пожалуйста, уточните вашу конкретную проблему или добавьте дополнительные детали, чтобы выделить именно то, что вам нужно. В том виде, в котором он сейчас написан, трудно точно сказать, о чем вы спрашиваете. См. страницу Как задать вопрос, чтобы получить разъяснения по этому вопросу.   -  person Pratibha    schedule 28.01.2018
comment
Я внес некоторые изменения, чтобы сделать его более ясным, но я не знаю, насколько яснее я могу быть, поскольку, на мой взгляд, я вижу, что вопрос сформулирован правильно. Английский не является моим основным языком, и могут возникнуть некоторые проблемы. Скажите, пожалуйста, что вы не можете понять? Проблема заключается в простом изменении порядка легенды на диаграмме ggplot2, поскольку ggplot2 не учитывает способ отображения столбцов фрейма данных.   -  person LuisSilva    schedule 28.01.2018


Ответы (1)


Сначала вам нужно несколько привести данные в порядок, чтобы все данные находились в одной переменной, а другая переменная указывала, к какой из трех категорий относится каждая из точек данных. Эта переменная должна быть фактором, и используйте forcats::fct_relevel, чтобы установить порядок, в котором вы хотите, чтобы он отображался на графике.

library(tidyverse)

MF <- MF %>% 
  gather(key = categories, value = values, -Date) %>% 
  mutate(categories = categories %>% 
           factor() %>% 
           fct_relevel("BR_Def", "BR_Mod"))

ggplot(MF, aes(x = Date, y = values, colour = categories)) +
  geom_line()

введите здесь описание изображения

person Phil    schedule 28.01.2018