簡體   English   中英

如何在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")

我要顯示的是堆棧條形圖 ,該條形圖顯示每個名稱的總數,並在條形圖內顯示部件數+在條形圖的中間標記其%。

有什么辦法可以做到這一點? 我一直在這里搜索,但找不到解決方案。

哦...好像有人在我寫下答案時已經評論了答案。 無論如何,我都會發布我的,因為它略有不同。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM