我想用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")
我想要展示的是堆栈条形图,它显示了每个名称的总计数,并在条形图中显示零件计数+标记条形图中间的百分比。
有可能做到这一点吗?我一直在这里搜索,但一直无法找到解决方案。
答案 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小很多,因此很难读了桌子。所以我决定使用百分比而不是实际值。