我已经尝试了一段时间来实现以下图表:
基于类似这样的:
Age Total Infected Percent
[0,10] 619 17 2.75
(10,20] 711 24 3.38
(20,30] 318 25 7.86
(30,40] 307 23 7.49
(40,50] 421 37 8.79
(50,60] 299 29 9.70
(60,70] 172 21 12.21
(70,80] 93 22 23.66
(80,90] 53 6 11.32
(90,100] 5 0 0.00
我需要按年龄范围绘制两个变量的条形图(一个是被评估的患者数量,另一个是被评估的患者数量);并在每组顶部绘制受感染患者的百分比。
它应该如下图所示:
使用此代码,我绘制了两个变量的条形图,但随后我不知道如何放置百分比。
longPlotData <- plotData %>%
pivot_longer(!Age, names_to = "Status", values_to = "Num")
ggplot(longPlotData, aes(fill=Status, y=Num, x=Age)) +
geom_bar(position="dodge", stat="identity", width=0.3)
有什么建议吗?
非常感谢!
试试这个。您可以重塑为 long,然后将Percent
变量与Age
. 之后,您可以调整标签并用于geom_text()
在条形顶部添加值。这里的代码:
library(ggplot2)
library(dplyr)
library(tidyr)
#Code
longPlotData <- plotData %>%
mutate(Age=factor(Age,levels = unique(Age),ordered = T)) %>%
pivot_longer(-c(Age,Percent), names_to = "Status", values_to = "Num")
#Plot
longPlotData %>%
mutate(Percent=ifelse(Status=='Infected',NA,Percent))%>%
ggplot(aes(fill=Status, y=Num, x=Age)) +
geom_bar(position="dodge", stat="identity", width=0.3)+
geom_text(aes(label=Percent),vjust=-0.5,fontface='bold')+
theme(axis.text = element_text(color='black',face='bold'),
axis.title = element_text(color='black',face='bold'),
legend.title = element_text(color='black',face='bold'),
legend.text = element_text(color='black',face='bold'))
输出:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句