R 通过总观测值修改ggplot中图例的顺序

R 通过总观测值修改ggplot中图例的顺序,r,ggplot2,R,Ggplot2,我正在绘制一个直线图,以原籍国为基础,绘制一个城市在x年内的移民数量。每个国家都被画成自己的线,在五年的时间里与其他国家对比 我想按国家从最大到最小顺序排列x年来的移民总数,而不考虑国家总数,而不是现在的字母顺序 我尝试过使用诸如fct_relevel之类的forcats命令,但除了手动操作之外,找不到任何其他方法,这对于多个图形来说可能很耗时 我的数据框架包含变量年份,国家,以及移民人数,每个观察值都是一个年份-国家对 library(tidyverse) g <- ggplot(mig

我正在绘制一个直线图,以原籍国为基础,绘制一个城市在x年内的移民数量。每个国家都被画成自己的线,在五年的时间里与其他国家对比

我想按国家从最大到最小顺序排列x年来的移民总数,而不考虑国家总数,而不是现在的字母顺序

我尝试过使用诸如fct_relevel之类的forcats命令,但除了手动操作之外,找不到任何其他方法,这对于多个图形来说可能很耗时

我的数据框架包含变量
年份
国家
,以及
移民人数
,每个观察值都是一个年份-国家对

library(tidyverse)
g <- ggplot(migrants, aes(x=year, y=number_migrants, col=country)) + 
geom_line() 
库(tidyverse)

g您需要
fct\u重新排序

library(dplyr)
library(forcats)
migrants %>%
  mutate(
    country = fct_reorder(country, number_migrants, .desc = TRUE)
  ) %>%
  ggplot(migrants, aes(x=year, y=number_migrants, col=country)) + 
  geom_line() 

您需要重新订购
fct\u

library(dplyr)
library(forcats)
migrants %>%
  mutate(
    country = fct_reorder(country, number_migrants, .desc = TRUE)
  ) %>%
  ggplot(migrants, aes(x=year, y=number_migrants, col=country)) + 
  geom_line() 

由于OP没有给出任何关于他们正在使用的包的指示,您可能应该添加
dplyr
forcats
库调用。(好吧,我想OP确实提到了
forcats
,但是对于未来的读者来说,明确依赖关系是很好的。)并且,作为参考,
基本版的
移民$country=reorder(移民$country,-移民$number\u移民)
。我添加了
dplyr
。他确实特别提到了
fct\u releval
,所以我认为他对猫的
很熟悉
forcats
现在也添加了。由于OP没有给出他们正在使用的软件包的任何指示,您可能应该添加
dplyr
forcats
库调用。(好吧,我想OP确实提到了
forcats
,但是对于未来的读者来说,明确依赖关系是很好的。)并且,作为参考,
基本版的
移民$country=reorder(移民$country,-移民$number\u移民)
。我添加了
dplyr
。他确实特别提到了
fct\u releval
,所以我认为他对猫的
很熟悉
forcats
现在也添加了。