我有个数据:
df_silencer <- data.frame(
group = c("inside_boundaries", "outside_boundaries","inside_boundaries", "outside_boundaries","inside_boundaries", "outside_boundaries","inside_boundaries", "outside_boundaries","inside_boundaries", "outside_boundaries"),
value = c(18, 408,43,850,36,594,118,1831,1232,22765),
cond = c('pef1a','pef1a','ppgk','ppgk','prag2','prag2','pscp1','pscp1','DHS','DHS')
)我只想画出“内部边界”,而不是inside_boundaries和outside_boundaries。
这给了我100 %的内外比例。我只想画出inside_boundaries比例
(boundaries_percentage=
ggplot(df_silencer,
aes(x = cond,y = value,color=cond,fill=forcats::fct_rev(as.factor(group)))) +
geom_col(size=0.7,alpha=0.5,width = 0.7,position = 'fill')+
scale_color_manual(name="Condition",breaks = c("pef1a", "ppgk", "prag2","pscp1",'DHS'),
values=c("#FFCC33", "#339900", "#FF3333","#3333FF","black"))+
scale_fill_manual(name="group",breaks = c("inside_boundaries","outside_boundaries"),
values=c("#d6d4d4","#ffffff"))+
scale_x_discrete(limits=c("DHS","pscp1", "ppgk", "pef1a","prag2"))+
scale_y_continuous(labels=c("0", "25","50","75","100"))+
theme_classic()+
theme(text = element_text(size=6),axis.title.x = element_blank())+
guides(color=F)+
labs(y="% inside vs outside boundaries" )
)谢谢
发布于 2021-03-10 20:39:05
这就是你要找的吗?
df_silencer %>%
group_by(cond) %>%
mutate(pct = value/sum(value)) %>%
filter(group == "inside_boundaries") %>%
ggplot(aes(x = cond,y = pct,color=cond, fill=cond)) +
geom_bar(stat="identity") +
scale_color_manual(name="Condition",breaks = c("pef1a", "ppgk", "prag2","pscp1",'DHS'),
values=c("#FFCC33", "#339900", "#FF3333","#3333FF","black"))+
scale_fill_manual(name="Condition",breaks = c("pef1a", "ppgk", "prag2","pscp1",'DHS'),
values=c("#FFCC33", "#339900", "#FF3333","#3333FF","black"))+
scale_x_discrete(limits=c("DHS","pscp1", "ppgk", "pef1a","prag2"))+
scale_y_continuous(labels=scales::label_percent(accuracy=1))+
theme_classic()+
theme(text = element_text(size=6),axis.title.x = element_blank())+
guides(color=F, fill=F)+
labs(y="% inside vs outside boundaries" )

编辑:在栏上添加百分比数字
df_silencer %>%
group_by(cond) %>%
mutate(pct = value/sum(value)) %>%
filter(group == "inside_boundaries") %>%
ggplot(aes(x = cond,y = pct,color=cond, fill=cond)) +
geom_bar(stat="identity") +
geom_text(aes(label=sprintf("%.1f%%", pct*100)), position=position_nudge(y=.0015)) +
scale_color_manual(name="Condition",breaks = c("pef1a", "ppgk", "prag2","pscp1",'DHS'),
values=c("#FFCC33", "#339900", "#FF3333","#3333FF","black"))+
scale_fill_manual(name="Condition",breaks = c("pef1a", "ppgk", "prag2","pscp1",'DHS'),
values=c("#FFCC33", "#339900", "#FF3333","#3333FF","black"))+
scale_x_discrete(limits=c("DHS","pscp1", "ppgk", "pef1a","prag2"))+
scale_y_continuous(labels=scales::label_percent(accuracy=1))+
theme_classic()+
theme(text = element_text(size=6),axis.title.x = element_blank())+
guides(color=F, fill=F)+
labs(y="% inside vs outside boundaries" )

https://stackoverflow.com/questions/66572237
复制相似问题