首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个变量的r_g图geom_col图描述

一个变量的r_g图geom_col图描述
EN

Stack Overflow用户
提问于 2021-03-10 20:16:13
回答 1查看 70关注 0票数 0

我有个数据:

代码语言:javascript
复制
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比例

代码语言:javascript
复制
(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" )
)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-10 20:39:05

这就是你要找的吗?

代码语言:javascript
复制
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" )

编辑:在栏上添加百分比数字

代码语言:javascript
复制
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" )

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66572237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档