簡體   English   中英

根據 geom_tile() 熱圖中的兩列值對行重新排序

[英]Reorder rows according to two column values in geom_tile() heatmap

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

原始圖

這是我得到的數據、代碼和原始 plot。 有沒有一種方法可以同時按國家行的valueyear重新排序?

我的目標:國家行將在第 s year按它們的第一個value =1 排序。

問題:因為我也希望傳奇成為因素,而不是連續的。 這會在訂購時產生問題。

理想順序:

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

如果這是您正在尋找的,您可以使用fct_relevel forcats的 fct_relevel。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM