如何在 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。所以我决定使用百分比而不是实际值。
我想在 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。所以我决定使用百分比而不是实际值。