排序或订购geom_col条形图R

时间:2018-01-07 22:01:19

标签: r ggplot2 bar-chart

我正在寻找帮助来在Rstudio中对我的geom_col()条形图进行排序/排序。我没有尝试过任何事情。任何帮助都将非常感激。

这个问题被Gregor标记为重复,但是,引用链接中的问题答案不在此处。

我有以下3列文件,其中包含我想要排序的标题(我只显示前8行):

POPULATION  EXCESS_ALLELE_MATCHES_WITH_MBUTI    GROUP
Jordanian   1,059   W Asians
BedouinB    937 W Asians
Saudi   894 W Asians
GujaratiD   835 S/SC Asians
Druze   722 W Asians
Iran_Fars   704 W Asians
Pathan  660 S/SC Asians

这是我的R代码工作正常,除了我无法排序:

test <- read.csv(file_name, sep="\t", stringsAsFactor = FALSE, 
             header = TRUE)
#
ggplot(test, aes(x=POPULATION, y=EXCESS_ALLELE_MATCHES_WITH_MBUTI, fill=GROUP)) + 
 geom_col() + coord_flip()

点击下方查看我输出的未分类条形图

Output barplot

1 个答案:

答案 0 :(得分:1)

您需要将population变量转换为因子变量,然后按所需顺序重新调整该变量。 forcats包对此非常有用:

library(tidyverse)

test <- tribble(
  ~POPULATION,  ~EXCESS_ALLELE_MATCHES_WITH_MBUTI,    ~GROUP,
  "Jordanian" ,  1059,   "W Asians",
  "BedouinB",    937, "W Asians",
  "Saudi",   894, "W Asians",
  "GujaratiD",   835, "S/SC Asians",
  "Druze",   722, "W Asians",
  "Iran_Fars",   704, "W Asians",
  "Pathan",  660 ,"S/SC Asians"
)

test$POPULATION <- factor(test$POPULATION) %>%
  fct_reorder(test$EXCESS_ALLELE_MATCHES_WITH_MBUTI)

ggplot(test, aes(x=POPULATION, y=EXCESS_ALLELE_MATCHES_WITH_MBUTI, fill=GROUP)) + 
  geom_col() + coord_flip()

enter image description here