R堆叠条重新排序不起作用

时间:2018-01-22 20:34:37

标签: r stacked-chart

我正在尝试重新订购R中的堆积条形图,左边是最高的条形图,右边是最短条形条形图。这个问题是类似的,但我认为与其他问题不同,因为从左到右排序堆叠条的典型方法似乎不适用于我的数据。我正在使用适用于我的其他数据集的代码(x = reorder(aminoSet,-num))但在这种情况下它不会。我怎样才能妥善安排这些酒吧?例如:

library(ggplot2)

s <- "aminoSet eth num
AE AFR 2
AK AFR 1
AL AFR 1
AT AFR 1
AV EAS 1
DE AFR 4
DE AMR 1
DE EAS 4
DE EUR 2
DE SAS 2
EK AFR 1
EK EAS 1
ER AFR 1
GT AFR 1
HS AFR 1
LS AFR 1
MP AFR 1
MP SAS 1
PS AFR 1
PS EAS 1
PT AFR 1
RS EAS 1"
counts <- read.delim(textConnection(s),header=T,sep = " ")


g <- ggplot(counts[order(counts$eth,decreasing=T),], aes(x=reorder(aminoSet,-num),group=num, y=num))
g + geom_bar(aes(fill = eth),stat = "identity") + theme_bw() + theme(text = element_text(size = 20)) + theme(axis.text.x=element_text(angle=90))

我得到以下从左到右排序不正确的图像:

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为问题在于你是根据num重新调整因子,默认是取平均值。因此,对于EK,MP和PS,这将是1,但你希望它是2.只需更改reorder中的函数,你就应该好好去。

counts %>% 
  mutate(aminoSet = reorder(aminoSet, -num, sum)) %>% 
  ggplot(aes(aminoSet, num)) + 
    geom_bar(stat = "identity", aes(fill = eth))

enter image description here