我将答案绘制在条形图中,当我使用整个数据集(包括NA)时,这个条形图看起来很不错:
anm$Q42<-factor(anm$Q42,levels=c('once_per_week','once_per_month',
'once_per_6months','once_per_year'))
ggplot(data = anm, aes(x=Q42,fill=District)) +
geom_bar() +
scale_x_discrete(drop=F)+
scale_fill_discrete(drop=F)+
labs(title="Animal health providers",
subtitle='n=3',x="", y="Count") +
facet_grid(~Q2)+
ylim(0,6)+
theme(axis.text.x = element_text(angle = 90, hjust=1),
plot.title = element_text(face='bold'),
text=element_text(size=10))+
stat_count(geom='text',aes(label = ..count..,group=1),vjust=-2,size=2)+
stat_count(geom='text',aes(label = paste0("(",round(..count..*100/3,1),"%",")"),group=1),vjust=-0.5,size=2)
但是,当我在ggplot中使用子集数据集来删除NA答案时,条形宽度增加,图如下所示:
ggplot(data = na.omit(anm), aes(x=Q42,fill=District)) +
geom_bar() +
scale_x_discrete(drop=F)+
scale_fill_discrete(drop=F)+
labs(title="Animal health providers",
subtitle='n=3',x="", y="Count") +
facet_grid(~Q2)+
ylim(0,6)+
theme(axis.text.x = element_text(angle = 90, hjust=1),
plot.title = element_text(face='bold'),
text=element_text(size=10))+
stat_count(geom='text',aes(label = ..count..,group=1),vjust=-2,size=2)+
stat_count(geom='text',aes(label = paste0("(",round(..count..*100/3,1),"%",")"),group=1),vjust=-0.5,size=2)
为什么会发生这种情况,如何阻止它??当我在绘图前对数据进行子集化时,当我使用facet_wrap
或当我将space='free'
添加到facet_grid
时,也会发生这种情况。
以下是示例数据集:
District<-c('Ngorongoro','Ngorongoro','Ngorongoro','Misungwi','Misungwi','Mwanga')
Q2<-rep('Retail outlet', 6)
Q42<-c('once_per_month','once_per_year','once_per_month',NA,NA,NA)
anm<-as.data.frame(cbind(District,Q2,Q42))
1条答案
按热度按时间hgb9j2n61#
我问了ChatGPT,它实际上给了我一个可用的答案(我很惊讶!)。
仍然不知道为什么会发生这种情况,但通过在
geom_bar
中指定width=0.9
,我可以纠正条形图宽度。这个办法奏效了: