R语言 按组重新排序条形图

xqnpmsa8  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(244)

我想按Group 1(G1)重新排序以下条形图,以便G1中计数最高的国家排在第一位...
我尝试了很多方法,但是没有一个有效--看起来像是按照G1和G2的和重新排序值,但是我所需要的只是按照G1重新排序。
有什么建议吗?
下面是一些示例数据:

country <- c("DE","DE","FR", "FR", "PL","PL")
Variable <- c("G1", "G2","G1","G2", "G1", "G2")
Value <- c(24,25,6,55,12,20)

df <- data.frame(country, Variable, Value)

这是我目前掌握的情况:

ggplot(data = df,
       aes(reorder(country,-Value), Value, fill=Variable))+
  geom_bar(position="dodge", stat="identity")

它看起来像这样:

它试着把它转换成因子,重新排序,创建虚拟变量...
我的期望是有一个国家组的x轴,并按G1降序排列(G2看起来如何无关紧要)。

rggaifut

rggaifut1#

您可以使用G1组的正确顺序创建一个单独的 Dataframe ,并使用该顺序将您的国家/地区设置为factor。请确保将您的国家/地区变量设置为group,如下所示:

library(dplyr)
G1_order <- df %>% 
  filter(Variable == "G1") %>% 
  arrange(desc(Value)) %>% 
  mutate(country = factor(country))

library(ggplot2)
df %>%
  mutate(country = factor(country, levels = G1_order$country, ordered = TRUE)) %>% 
  ggplot(aes(x = country, y = Value, fill=Variable), group = country)+
  geom_bar(position="dodge", stat="identity")

创建于2022年12月14日,使用reprex v2.0.2
如您所见,这是基于G1的订单。

相关问题