0
library(tidyverse)

df <- data.frame(country = c("USA", "USA", "USA", 
                             "UK", "UK", "UK", 
                             "Japan", "Japan", "Japan", 
                             "Germany", "Germany", "Germany",
                             "Sweden","Sweden","Sweden",
                             "Norway","Norway","Norway"),
                 year = c(2000, 2001, 2002, 
                          2000, 2001, 2002, 
                          2000, 2001, 2002, 
                          2000, 2001, 2002, 
                          2000, 2001, 2002, 
                          2000, 2001, 2002),
                 value = c(0,1,1,
                           1,1,1,
                           0,0,0,
                           0,0,1,
                           0,1,1,
                           0,1,0))

ggplot(df, aes(year, country, fill = factor(value)))+
  geom_tile(color = "white", size = 1)+
  theme_minimal() 

原始图

这是我得到的数据、代码和原始图。有没有一种方法可以同时按国家行的value值重新排序year

我的目标:国家行将按 s 中的第一个value=1排序year

问题:因为我也希望传奇成为因素,而不是连续的。这会在订购时产生问题。

理想顺序:

  • 第一行:英国
  • 第二行:瑞典或美国(因为它们的值相同)
  • 第三行:瑞典或美国(因为它们的值相同)
  • 第四行:挪威
  • 第五排:德国
  • 第六行:日本
4

1 回答 1

1

如果这是您正在寻找的,您可以fct_relevel从包中使用。forcats

library(tidyverse)

library(forcats)
ro <- c('Japan', 'Germany', 'Norway', 'USA','Sweden', 'UK')

df %>%
  mutate(country= fct_relevel(country, ro)) %>% 
ggplot(aes(year, country, fill = factor(value))) +
  geom_tile(color = "white", size = 1)+
  theme_minimal()

于 2021-01-12T12:22:53.057 回答