微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 facet_grid 在同一个堆积条形图中不同的填充类别

如何解决使用 facet_grid 在同一个堆积条形图中不同的填充类别

我有一些来自人们(即电子书和印刷书的阅读)的数据,我想在同一张图中绘制 3 个不同类别(即年龄、居住地和社会地位)的图,因为比较这样看会更容易。我使用 ggplot2 的工具 facet_grid 绘制了一个图。

类似于我的代码如下:

library(ggplot2)

F1 <- rep(c("F11","F12"),4)
F2 <- rep(c("F21","F22","F23","F24","F25","F26"),4)
F3 <- rep(c("F31","F32","F33","F34","F35","F36"),4)
R1 <- c(rep("R1",4),rep("R2",4))
R2 <- c(rep("R1",12),12))
R3 <- c(rep("R1",12))
YN1 <- rep(c(rep("Yes",2),rep("No",2)),2)
YN2 <- rep(c(rep("Yes",6),6)),2)
YN3 <- rep(c(rep("Yes",2)
C <- c(rep("C3",8),rep("C2",24),rep("C1",24))

df1 <- data.frame(Fill=F1,R=R1,YN=YN1)
df2 <- data.frame(Fill=F2,R=R2,YN=YN2)
df3 <- data.frame(Fill=F3,R=R3,YN=YN3)

nums <- c(13.686722,6.246296,85.220158,83.702738,52.768593,44.885623,46.138288,45.063411,12.448873,25.969226,17.290794,11.733145,8.288770,3.889354,84.722827,72.213003,80.786696,86.643134,90.212283,95.047198,69.149769,53.831649,45.815887,44.073420,43.501864,46.696141,28.021930,44.350581,52.261603,54.302859,54.999190,52.240411,7.984016,13.276286,18.632469,24.995091,26.862302,24.478694,92.015984,86.723714,81.367531,75.004909,73.137698,75.521306,49.535149,51.837543,56.646371,64.814451,66.873589,69.809610,50.464851,48.162457,43.353629,35.185549,33.126411,30.190390)

df <- data.frame(C,rbind(df1,df2,df3),nums)

ggplot(df,aes(x=YN,y=nums,fill=factor(Fill,levels=c(c("F31",c("F21",c("F11","F12"))))) +
  scale_fill_manual(values=c("#74ADD1","#ABD9E9","#E0F3F8","#D9EF8B","#A6D96A","#66BD63",rev(c("#8DD3C7","#FFFFB3","#BEBADA","#FB8072","#80B1D3","#fdb462")),"#FBB4AE","#B3CDE3"))+
  geom_bar(position=position_stack(reverse=F),stat="identity",colour="black",size=.3)+
  facet_grid(C~R,scales="free")  + labs(fill="Fill")

我是这个网站的新手,所以它不允许我添加图片,但它生成的情节就是这个。

enter image description here

如您所见,条形填充有三组不同的颜色,每个类别一组。然而,所述馅料的传说将它们全部显示一个大集团。 这是我想改变的。我想将这个图例分成三组,一组对应于每个类别。我已经编辑了情节以准确显示我的目标是什么。我想得到的实际情节与此类似。

enter image description here

我不确定是否可以通过代码实现类似的功能,或者我是否可能需要使用一些图形设计工具来编辑原始图,就像我在这里所做的那样哈哈。

我对 R 编码很陌生,所以任何帮助将不胜感激。提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。