[英]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")
我要顯示的是堆棧條形圖 ,該條形圖顯示每個名稱的總數,並在條形圖內顯示部件數+在條形圖的中間標記其%。
有什么辦法可以做到這一點? 我一直在這里搜索,但找不到解決方案。
哦...好像有人在我寫下答案時已經評論了答案。 無論如何,我都會發布我的,因為它略有不同。
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小得多,因此將很難讀取該表。 因此,我決定使用百分比代替實際值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.