【问题标题】:R (ggplot2) - stacked bar chart problemsR (ggplot2) - 堆积条形图问题
【发布时间】:2016-06-29 17:28:33
【问题描述】:

我正在尝试从如下所示的数据框创建图:

  management depth id          genus rep1 rep2 rep3 rep4 sum
1         OM     A  1     alternaria    3    0    0    0   3
2         OM     A  2    aspergillus    0    0    0    0   0
3         OM     A  3     chaetomium    0    0    0    0   0
103       PM     A  1     alternaria    0    0    0    0   0
104       PM     A  2    aspergillus    4    1    4   35  44
105       PM     A  3     chaetomium    0    0    0    7   7

我想创建一个堆叠条形图,其中 x 轴上的管理,用属填充,y 应该代表总和。我用过

stack<-ggplot(df, aes(x=management, fill=genus)) + geom_bar(position="fill", color="white")

我的第一个问题是我不知道如何在这段代码中实现 sum。我可以创建两个单独的图,但如果我可以将两个条形放入一个图中会更好。

我还用上面的数据框创建了一个堆栈条形图,但结果如下:

因为我对一个属有一个非常大的值,所以 ggplot 将始终创建一个两列堆叠条。有没有办法解决这个问题?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    如果您提供了预期的结果,定制解决方案会更容易,但我相信这就是您想要的?

    library(ggplot2)
    df <- read.table(textConnection("
     row.id management depth id          genus rep1 rep2 rep3 rep4 sum
    1         OM     A  1     alternaria    3    0    0    0   3
    2         OM     A  2    aspergillus    0    0    0    0   0
    3         OM     A  3     chaetomium    0    0    0    0   0
    103       PM     A  1     alternaria    0    0    0    0   0
    104       PM     A  2    aspergillus    4    1    4   35  44
    105       PM     A  3     chaetomium    0    0    0    7   7"), header=TRUE, stringsAsFactors = FALSE) 
    
    ggplot(df, aes(x=management, y=sum, fill=genus)) + 
    geom_bar( color="white", stat="identity")
    

    【讨论】:

    • 抱歉,我不清楚,但您发布的内容正是我想要的。我用 (... y=sum, ...) 尝试了类似的代码,但我得到的只是一个灰色条。谢谢!