【问题标题】:R stacked bar reordering not workingR堆叠条重新排序不起作用
【发布时间】:2018-01-22 20:34:37
【问题描述】:

我正在尝试重新排序 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))

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

【问题讨论】:

    标签: r stacked-chart


    【解决方案1】:

    我认为问题在于您正在根据 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))
    

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多