重新订购ggplot2图例(时间序列)

时间:2018-01-28 01:50:06

标签: r ggplot2 legend timeserieschart

在花了大部分时间寻找解决方案之后,即使在阅读了很多关于它的帖子后,我似乎也没想到这一点。

制作一个包含3行的时间序列图(链接到图表下方,请点击),图例读取(从上到下)BR Def,BR Grow和BR Mod但我希望它读取(从上到下) BR Def,BR Mod和BR Grow。

我想完美的方法是重新排序因子水平,但我似乎无法做到。

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'))

Link to Graph

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先需要稍微整理数据,以便所有数据都在一个变量中,另一个变量指示每个数据点所引用的3个类别中的哪一个。该变量应该是一个因子,并使用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()

enter image description here