如何在ggplot2中对geom_bar进行外包装?

时间:2016-10-13 03:30:24

标签: r ggplot2 geom-bar

我想用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")

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

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

1 个答案:

答案 0 :(得分:1)

哦......在我写下来的时候,似乎有人已经回答了这个问题。我会发布我的帖子,因为它有点不同。

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小很多,因此很难读了桌子。所以我决定使用百分比而不是实际值。