【问题标题】:Re-ordering ggplot2 legend (time series)重新排序ggplot2图例(时间序列)
【发布时间】:2018-01-28 01:50:05
【问题描述】:

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

用 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

任何帮助将不胜感激。

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅How to Ask 页面以获得澄清此问题的帮助。
  • 我进行了一些更改以使其更清晰,但我不知道我能清晰多少,因为在我看来,我看到了正确陈述的问题。英语不是我的主要语言,可能会出现一些问题。你能告诉我你想不通的地方吗?问题只是重新排序 ggplot2 图表中的图例,因为 ggplot2 不尊重数据框列的显示方式。

标签: r ggplot2 legend timeserieschart


【解决方案1】:

您首先需要稍微整理一下数据,以便所有数据都在一个变量中,另一个变量指示每个数据点所指的 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多