如何在 ggplot2 中覆盖 geom_bar?

How to overwrap on geom_bar in ggplot2?

我想在 R 中使用 ggplot 创建条形图。 样本数据如下:

Name <- c('Sample1', 'Sample2', 'Sample3')
Total <- c(86020045,30974095,1520609)
Part <- c(41348957, 2956650, 595121)
DT <- data.frame(Name,Total,Part)
DT
ggplot(DT, aes(Name, Total, fill=Name)) + 
        geom_bar(position="stack",stat="identity")

我想展示的是堆叠条形图,它显示了每个名称的总计数,并在条形中显示部分计数 + 在条形图上标记它的百分比中间栏。

有什么办法可以做到这一点吗?我一直在这里搜索,但未能找到解决方案。

哦...我写的时候好像已经有人评论过了。无论如何我都会 post 我的,因为它略有不同。

DT <- transform(DT, Part0 = Total - Part)

library(reshape2)
DT2 <- melt(DT, id.vars = c("Name", "Total"))
DT2 <- transform(DT2, perc = value/Total * 100)

ggplot(DT2, aes(Name, perc, fill=variable)) + 
    geom_bar(position="stack",stat="identity") +
    geom_text(data = subset(DT2, variable == "Part"), aes(y = (perc),
        label = paste0("Total = ", Total, "\n",
                       "Part = ", value, "\n", 
                       round(perc, 1), "%\n")))

如果您使用 value 而不是 perc,您将得到一个比例条形图,但由于样本 3 的总数比样本 1 小很多,因此很难阅读table。所以我决定使用百分比而不是实际值。