ggplot堆积条形图来自2个独立的数据框 [英] ggplot stacked bar plot from 2 separate data frames

查看:120
本文介绍了ggplot堆积条形图来自2个独立的数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一整天都在努力解决这个难题,并且越来越近,但没有雪茄。我有两个数据框,这是两个城市内两个区的社会经济调查结果。我想在条形图中并排比较这些数据框中的列,以显示两次调查中对特定问题的答复的频率(计数)。

问题在每次调查中问的都是一样的。但是,它们的编码稍有不同,因此列名稍有不同,如下所示!我设法在同一个条形图上绘制两个数据框中的数据( ar bn )数据即不需要合并数据帧。但是,我似乎无法并排绘制堆积的条形图。



我用ggplot2和下面的代码:

  ggplot(bn,aes(A8_HHH_hig,fill = A6_Sex_HHH))
+ geom_bar(position =stack,alpha = 0.5)
+ geom_bar data = ar,aes(A9_HHHedulevl,fill = A7_HHsex),position =stack,alpha = 0.5)

其中产生了这样的结果:



正如您会注意到的,我试图根据两个数据框架的最高学校教育水平来划分男性和女性受访者之间的差距。 (请注意,在每个数据框中,被访者的性别也是不同的,即男性/男性和女性/ f)。

我真的很喜欢这两个堆积的条形图并排绘制在同一个网格上,因此我可以轻松比较值。但是,我不完全确定是否可以在这里使用 position =dodge选项,因为这些值来自不同的数据框。



有谁知道这是否可能?或者,也许另一种比较这些值的方式,视觉上?



如果有人有时间看看,我附加了一些可重复的代码! b

谢谢


dput(ar)



 结构(列表(地区= c(Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan RimiAngwan RimiAngwan RimiAngwan RimiAngwan Rimi
Angwan RimiAngwan RimiAngwan RimiAngwan Rimi ,Angwan Rimi,
,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi
Angwan Rimi,Angwan Rimi, Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi ,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan RimiAngwan RimiAngwan RimiAngwan Rimi Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi Angwan RimiAngwan Rimi
Angwan RimiAngwan Rimi Angwan Rimi Angwan Rimi Angwan Rimi
Angwan Rimi Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi b $ bAngwan RimiAngwan RimiAngwan Rimi Angwan Rimi Angwan Rimi
Angwan Rimi Angwan Rimi Angwan Rimi Angwan Rimi Angwan Rimi
Angwan RimiAngwan RimiAngwan RimiAngwan RimiAngwan Rimi
Angwan RimiAngwan Rimi Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi Angwan RimiAngwan RimiAngwan Rimi
Angwan RimiAngwan RimiAngwan RimiAngwan RimiAngwan Rimi
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan RimiAngwan RimiAngwan RimiAngwan Rimi Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi),A9_HHHedulevl =结构(c(9L,
9L,9L,9L,8L,9L,5L,9L,9L,8L,9L,9L,9L,9L,9L,9L,2L,
9L,9L, 9L,9L,9L,9L,9L,9L,9L,3L,9L,9L,9L,9L,9L,9L,9L,8L,9L,9L, 8L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,
9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,
9L,9L,9L,9L,4L, 9L,6L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L, 6L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,
3L),.Label = c(成人教育,初中,古兰经,
NCE,无,理工学院,高级小学,高中(2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, 2L,2L,2L,2L,2L,2L,1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, $ b 2L,2L,2L,2L,2L,1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, 2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, 2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,1L,2L,2L,2L,2L,2L, 2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, 2L,2L,2L,2L,2L,2L,2L,
2L),。标签= c(女性,男性),class =factor)),.Names = c ,
A9_HHHedulevl,A7_HHsex),row.names = c(1L,2L,3L,4L,5L,
6L,7L,9L,10L,11L,12L,13L,14L ,15L,16L,17L,19L,20L,
21L 22L 23L 24L 25L 26L 27L 28L 29L 30L 31L 32L 33L $ b $ 34L 35L 36L 37L 38L 39L 40L 41L 42L 43L 44L,46L,47L,
48L,49L,50L,51L,52L,53L,54L,55L,56L,57L,58L,59L,60L,
61L,62L,63L,64L,65L ,66L,67L,68L,69L,70L,71L,72L,73L,
74L,75L,76L,77L,78L,79L,80L,81L,82L,83L,84L,85L,86L, b 87L,88L,89L,90L,91L,92L,93L,94L,95L,96L,97L,98L,99L,
100L,101L,102L,103L,104L,105L,106L,107L,108L,109L ,110L,
111L,113L,114L,115L,116L,117L,118L,119L,120L,121L,122L,
123L,124L,125L,126L,127L,128L​​,129L,130L,131L ,132L,133L,
134L),class =data.frame,na.action = structure(131:135,.Names = c(135,
136,137 ,138,139),class =omit))




dput(bn)



  structure(list(District = c(Barnawa ,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barna Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa ,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,b $ b,Barnawa, Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa bBarnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa ,Barnawa,Barnawa,
,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,b $ b,Barnawa,Barnawa, Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa ,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa ,Barnawa,Barnawa,
,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,b $ b,Barnawa,Barnawa, Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa ,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa b $ bBarnawaBarnawa Barnawa Barnawa Barnawa Barnawa
Barnawa Barnawa Barnawa Barnawa Barnawa ,Barnawa,
,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,b $ b,Barnawa,Barnawa,Barnawa, Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa ,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa ,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa BarLawa),A8_HHH_hig =结构(c(7L,7L,7L,12L,7L,7L,
12L,4L,4L,4L,4L,4L,9L,7L,7L,10L,4L,1L, 4L,7L,10L,
12L,12L,12L,7L,12L,9L,6L,4L,11L,4L,4L,4L,10L,12L,
12L,12L,12L,7L, 10L,9L,11L,7L,7L,7L,7L,9L,7L,7L,
7L,7L,9L,7L,12L,12L,7L,12L,11L,7L,7L,12L,12L, 12L,12L,12L,7L,12L,10L,10L,12L,8L,4L,4L,12L,12L,12B,12L,12L,12L,12L,7L, 2L,9L,12L,2L,5L,12L,7L,
10L,10L,12L,10L,10L,4L,10L,1L,5L,7L,1L,10L,10L, 10L,10L,3L,10L,10L,3L,10L,10L,10L,4L,10L,10L,10L,10L,10L,4L,4L,4L,4L, 12L,12L,12L,12L,
3L,7L,7L,5L,7L,7L,12L,12L,7L,10L,7L,7L,7L,12L,1 2L,
7L,7L,12L,12L,12L,12L,12L,7L,12L,12L,12L,12L,12L,
10L,10L,12L,12L, 7L,6L,12L,12L,7L,12L,
10L,5L,12L,12L,7L,11L,12L,12L,12L,5L,7L,7L,12L,12L, 7L,7L,12L,7L,7L,12L,12L,12L,1L),标签= c(成人教育,
初级小学,初中,古兰经 ,无,
理工学院,Prelim / JMB,高级小学,高中,
技术学院,大学), A6_Sex_HHH =结构(c(2L,
2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,
2L, 2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, 1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, 1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, 2L,2L,1L,2L,1L,2L,1L,1L,1L,1L,2L,2L,2L,2L,2L,2L,2L, 2L, 2L,2L,2L,2L,
2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,1L,2L,2L,2L, 1L,2L,1L,1L,2L,1L,2L,2L,1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, 1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, 2L,2L,2L,2L,2L,2L,2L,2L,2L,1L,1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,标签= c(F,M),class =factor)),.Names = c(District,
A8_HHH_hig,A6_Sex_HHH),row.names = c ,196L),class =data.frame)

这是一个例子我期待产生:



  structure(list(sex = structure(c(2L,2L,2L,2L,2L,2L,2L,
2L,2L,2L,2L,2L,2L,2L,2L,2L,1L,2L,2L,2L,2L,2L,2L,
2L,2L,1L,2L,2L,2L ,2L,2L,2L,1L,2L,2L,2L,2L,2L,1L,
2L,2L,2L,2L,2L,2L,2L,2L,2L ,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, ,
2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,1L,1L,2L,
2L, 1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, ,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, ,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, ,2L,2L,2L,1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, ,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, ,1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, ,1L,1L,1L,1L,2L,
2L,1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, b 2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,1L,1L,2L,1L,2L,
2L,2L,2L,1L,1L,2L,1L ,2L,2L,1L,2L,2L,2L,1L ,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, ,1L,2L,2L,2L,2L,1L,1L,1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L, ,2L,2L,2L,2L,2L,2L,
2L,2L,2L,1L),。标签= c(女性,男性), b教育=结构(c(9L,9L,9L,9L,8L,9L,5L,9L,9L,
8L,9L,9L,9L,9L,9L,9L,2L,9L,9L,9L) 9L,9L,9L,9L,
9L,9L,3L,9L,3L,9L,9L,9L,9L,7L,7L,8L,6L,9L,9L,
8L,9L ,9L,8L,6L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L, ,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L,9L, ,4L,9L,6L,9L,9L,9L,9L,6L,9L,9L,9L,9L,9L,9L,9L,
9L,8L,6L,8L,9L,9L,9L,6L,6L ,3L,6L,9L,9L,9L,9L,
9L,9L,9L,9L,6L,9L,9L,9L,9L,9L,9L,9L, b 3L,NA,NA,NA,NA,NA,6L,6L,6L,9L,6L,6L,9L,3L,3L,
3L,3L,3L,7L,6L,6L,8L,3L ,1L,3L,6L 8L,9L,9L,9L,
6L,9L,7L,5L,3L,12L,3L,3L,3L,8L,9L,9L,9L,9L,
6L,8L,7L ,12L,6L,6L,6L,6L,7L,6L,6L,6L,6L,7L,
6L,9L,9L,6L,9L,12L,6L,6L,9L,9L,9L,9L ,9L,9L,
6L,9L,8L,8L,9L,11L,3L,3L,9L,9L,3L,9L,9L,9L,
6L,6L,7L,10L,7L ,9L,10L,4L,9L,6L,8L,8L,8L,8L,8L,8L,8L,8L,8L,8L,8L,8L,8L,8L,8L,8L,8L,8L, ,8L,
8L,3L,8L,8L,8L,8L,8L,3L,8L,8L,8L,2L,8L,7L,3L,
3L,3L,3L,9L,9L ,9L,9L,2L,6L,6L,4L,6L,6L,9L,9L,
6L,8L,6L,6L,6L,9L,9L,6L,6L,9L,9L,9L,9L ,9L,6L,
9L,9L,9L,9L,9L,8L,8L,9L,9L,7L,9L,9L,6L,5L,9L,
9L,6L,9L,8L ,4L,9L,9L,6L,12L,9L,9L,9L,4L,6L,
6L,9L,9L,6L,6L,6L,9L,6L,6L,9L,9L,9L, ),标准= c(成人教育,
初中,古兰经,NCE,无,理工学院,
高级小学 ,大学,初级小学,
Prelim / JMB,技术学院 (Angwan Rimi),Angwan Rimi,Angwan Rimi,
,Angwan Rimi,Angwan Rimi,Angwan Rimi, ,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,b $ b,Angwan Rimi,Angwan Rimi,Angwan Rimi, Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi ,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi $ bAngwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi Angwan Rimi Angwan Rimi
Angwan Rimi Angwan Rimi Angwan Rimi Angwan Rimi
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angw Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi ,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi $ bAngwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi Angwan Rimi Angwan Rimi
Angwan Rimi Angwan Rimi Angwan Rimi Angwan Rimi
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi ,Angwan Rimi,Angwan Rimi,Angwan Rimi,b $ b Angwan Rimi,Angwan Rimi,Angwan Rimi Angwan Rimi
Angwan Rimi, Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi $ bAngwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Angwan Rimi,Angwan Rimi,Angwan Rimi,Angwan Rimi,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa ,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa ,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa $ bBarnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa, Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa $ bBarnawaBarnawa Barnawa Barnawa Barnawa Barnawa
Barnawa Barnawa Barnawa Barnawa Barnawa Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,b $ b,Barnawa,Barnawa,Barnawa,Barnawa, ,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa BarnawaBarnawaBarnawa Barnawa
Barnawa Barnawa Barnawa Barnawa Barnawa Barnawa
Barnawa ,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa
BarnawaBarnawa Barnawa Barnawa Barnawa Barnawa
Barnawa Barnawa Barnawa Barnawa Barnawa Barnawa
BarnawaBarnawa Barnawa Barnawa Barnawa Barnawa
B Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa ,bnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,b $ b,Barnawa,Barnawa,Barnawa,Barnawa, Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa ,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,Barnawa,b $ b,Barnawa, Barnawa,Barnawa,Barnawa,Barnawa,
Barnawa,Barnawa,Barnawa,Barnawa)),.Names = c(sex
education,district),row.names = c(1,2,3,4,5,
6,7 ,9,10,11,12,13,14,15,16,17,
19,20 21,22,23,24,25,26,27,28,29,
30,31, ,33,34,35,36,37,38,39,40,
41,42,43 44,46,47,48,49,50,51,52,
53,54,55,56,57,58,59,60,61,62,63,
64 65,66,67,68,69,70,71,72,73,74,
75, 76,77,78,79,80,81,82,83,84,85,
86,87 888990919293949596
9798 99,100,101,102,103,104,105,106,
107,108,109,110 ,111,113,114,115,116,
117,118,119,120,121,122 123124125
126127128129130131132133134 ,
135,136,137,138,139,1361,1371,1381,1391,
140, 141,142,143,144,145,146,147,148,
149,150,151,152 153,154,155,156,157,
158,159,160,161,162,163 164,165,166,
167,168,169,170,171,172,173,174,175 ,
176,177,178,179,180,181,182,183,184,
185 186, 187,188,189,190,191,192,193,
,194,195,196,197,198 ,199,200,201,202,
203,204,205,206,207,208,209 210,211,
212,213,214,215,216,217,218,219,220,
221,222,223,224,225,226,227,228,229,
230,231 232233234235236237238
239240241242243 ,244,245,246,247,
248,249,250,251,252,253,254 255,256,
257,258,259,260,261,262,263,264,265,
266,267,268,269,270,271,272,273,274,
275,276, 277,278,279,280,281,282,283,
284,285,286,287,288 ,289,290,291,292,
293,294,295,296,297,298,299 300,301,
302,303,304,305,306,307,308,309,310,
311,312,313,314,315,316,317, 318,319,
320,321,322,323,324,325,326,327,328,
329,330,331),class =data.frame)


这是解决这个问题的方法,因为直接在一个 ggplot2 图中不能合并闪避和堆叠。



对于此图,我使用了@DrewSteen制作的数据框 all_data 答案 - 数据框应包含所有区级别。



这个想法是绘制在区域 A8_HHH_hig 。这是通过 aes()调用中的函数 interaction()实现的。然后将其转换为数字以确保稍后我们可以在我们想要的位置添加标签。对于 fill = 我们再次使用组合 - 现在在 sex 。要获取x轴的标签,请使用 scale_x_continuous(),并将断点设置为2,4,6,...,26(两个条之间的值相同教育水平,最大值计算为 A8_HHH_hig *级别性别的级别数) A8_HHH_hig

  ggplot(all_data,aes(as.numeric(interaction (District,A8_HHH_hig)),
fill = interaction(sex,District)))+
geom_bar(binwidth = 1)+
theme(axis.text.x = element_text(angle = - 45,hjust = 0))+
scale_x_continuous(Education,breaks = seq(2,26,2),
labels = levels(all_data $ A8_HHH_hig),expand = c(0,0.5) ,限制= c(1,27))+
scale_fill_discrete(,
labels = c(女性Angwan,Male Angwan,女性Barnawa,男性Barnawa))


I have been struggling with this conundrum all day and getting close, but no cigar. I have two data frames which are the results of two separate socio-economic surveys from two districts within a city. I want to compare columns from these data frames side by side in a bar plot to show the frequencies (counts) of responses to a particular question across both surveys.

The questions asked in each survey were identical. However, they were coded slightly differently and therefore the column names are slightly different as follows! I have managed to plot data from my two data frames (ar and bn) on the same bar plot with the raw data i.e. without having to merge the data frames. However, I seem unable to plot stacked bar plots side-by-side.

I used ggplot2 with the following code:

    ggplot(bn, aes(A8_HHH_hig, fill=A6_Sex_HHH))
+ geom_bar(position="stack", alpha=0.5) 
+ geom_bar(data=ar, aes(A9_HHHedulevl, fill=A7_HHsex), position="stack", alpha=0.5)

Which produces this:

As you'll notice I am attempting to plot the split between male and female respondents based on their highest level of schooling for the two data frames. (Note the sex of the respondent is also coded differently in each data frame i.e. male/m and female/f.)

I'd really like these two stacked bar plots to be plotted on the same grid, side by side so it is easy for me to compare values. However, I'm not entirely sure if I can use the position="dodge" option here, as the values come from different dataframes.

Does anyone know if this is possible?! Or perhaps another way of comparing these values, visually?

I've attached some reproducible code if anyone has the time to have a look!

thanks

dput(ar)

structure(list(District = c("Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi"), A9_HHHedulevl = structure(c(9L, 
9L, 9L, 9L, 8L, 9L, 5L, 9L, 9L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 2L, 
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 3L, 9L, 3L, 9L, 9L, 9L, 9L, 
7L, 7L, 8L, 6L, 9L, 9L, 8L, 9L, 9L, 8L, 6L, 9L, 9L, 9L, 9L, 8L, 
6L, 9L, 9L, 9L, 6L, 9L, 9L, 1L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 
9L, 9L, 9L, 9L, 4L, 9L, 6L, 9L, 9L, 9L, 9L, 6L, 9L, 9L, 9L, 9L, 
9L, 9L, 9L, 8L, 6L, 8L, 9L, 9L, 9L, 6L, 6L, 3L, 6L, 9L, 9L, 9L, 
9L, 9L, 9L, 9L, 6L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 6L, 9L, 9L, 9L, 
3L), .Label = c("Adult Education", "Junior Secondary", "koranic", 
"NCE", "None", "Polytechnic", "Senior Primary", "Senior Secondary", 
"University"), class = "factor"), A7_HHsex = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L), .Label = c("female", "male"), class = "factor")), .Names = c("District", 
"A9_HHHedulevl", "A7_HHsex"), row.names = c(1L, 2L, 3L, 4L, 5L, 
6L, 7L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 19L, 20L, 
21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 
34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 46L, 47L, 
48L, 49L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 57L, 58L, 59L, 60L, 
61L, 62L, 63L, 64L, 65L, 66L, 67L, 68L, 69L, 70L, 71L, 72L, 73L, 
74L, 75L, 76L, 77L, 78L, 79L, 80L, 81L, 82L, 83L, 84L, 85L, 86L, 
87L, 88L, 89L, 90L, 91L, 92L, 93L, 94L, 95L, 96L, 97L, 98L, 99L, 
100L, 101L, 102L, 103L, 104L, 105L, 106L, 107L, 108L, 109L, 110L, 
111L, 113L, 114L, 115L, 116L, 117L, 118L, 119L, 120L, 121L, 122L, 
123L, 124L, 125L, 126L, 127L, 128L, 129L, 130L, 131L, 132L, 133L, 
134L), class = "data.frame", na.action = structure(131:135, .Names = c("135", 
"136", "137", "138", "139"), class = "omit"))

dput(bn)

structure(list(District = c("Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa"), A8_HHH_hig = structure(c(7L, 7L, 7L, 12L, 7L, 7L, 
12L, 4L, 4L, 4L, 4L, 4L, 9L, 7L, 7L, 10L, 4L, 1L, 4L, 7L, 10L, 
12L, 12L, 12L, 7L, 12L, 9L, 6L, 4L, 11L, 4L, 4L, 4L, 10L, 12L, 
12L, 12L, 12L, 7L, 10L, 9L, 11L, 7L, 7L, 7L, 7L, 9L, 7L, 7L, 
7L, 7L, 9L, 7L, 12L, 12L, 7L, 12L, 11L, 7L, 7L, 12L, 12L, 12L, 
12L, 12L, 12L, 7L, 12L, 10L, 10L, 12L, 8L, 4L, 4L, 12L, 12L, 
4L, 12L, 12L, 12L, 7L, 7L, 9L, 2L, 9L, 12L, 2L, 5L, 12L, 7L, 
10L, 10L, 12L, 10L, 10L, 4L, 10L, 1L, 5L, 7L, 1L, 10L, 10L, 10L, 
10L, 10L, 10L, 3L, 10L, 10L, 4L, 10L, 10L, 10L, 10L, 10L, 4L, 
10L, 10L, 10L, 3L, 10L, 9L, 4L, 4L, 4L, 4L, 12L, 12L, 12L, 12L, 
3L, 7L, 7L, 5L, 7L, 7L, 12L, 12L, 7L, 10L, 7L, 7L, 7L, 12L, 12L, 
7L, 7L, 12L, 12L, 12L, 12L, 12L, 7L, 12L, 12L, 12L, 12L, 12L, 
10L, 10L, 12L, 12L, 9L, 12L, 12L, 7L, 6L, 12L, 12L, 7L, 12L, 
10L, 5L, 12L, 12L, 7L, 11L, 12L, 12L, 12L, 5L, 7L, 7L, 12L, 12L, 
7L, 7L, 7L, 12L, 7L, 7L, 12L, 12L, 12L, 1L), .Label = c("Adult Education", 
"Junior Primary", "Junior Secondary", "Koranic", "NCE", "None", 
"Polytechnic", "Prelim / JMB", "Senior Primary", "Senior Secondary", 
"Technical College", "University"), class = "factor"), A6_Sex_HHH = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 
2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 1L), .Label = c("F", "M"), class = "factor")), .Names = c("District", 
"A8_HHH_hig", "A6_Sex_HHH"), row.names = c(NA, 196L), class = "data.frame")

This is an example of the kind of thing I am looking to produce:

structure(list(sex = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 
2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 
2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, NA, NA, NA, NA, NA, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 
2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 
2L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 1L), .Label = c("female", "male"), class = "factor"), 
education = structure(c(9L, 9L, 9L, 9L, 8L, 9L, 5L, 9L, 9L, 
8L, 9L, 9L, 9L, 9L, 9L, 9L, 2L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 
9L, 9L, 3L, 9L, 3L, 9L, 9L, 9L, 9L, 7L, 7L, 8L, 6L, 9L, 9L, 
8L, 9L, 9L, 8L, 6L, 9L, 9L, 9L, 9L, 8L, 6L, 9L, 9L, 9L, 6L, 
9L, 9L, 1L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 
9L, 4L, 9L, 6L, 9L, 9L, 9L, 9L, 6L, 9L, 9L, 9L, 9L, 9L, 9L, 
9L, 8L, 6L, 8L, 9L, 9L, 9L, 6L, 6L, 3L, 6L, 9L, 9L, 9L, 9L, 
9L, 9L, 9L, 6L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 6L, 9L, 9L, 9L, 
3L, NA, NA, NA, NA, NA, 6L, 6L, 6L, 9L, 6L, 6L, 9L, 3L, 3L, 
3L, 3L, 3L, 7L, 6L, 6L, 8L, 3L, 1L, 3L, 6L, 8L, 9L, 9L, 9L, 
6L, 9L, 7L, 5L, 3L, 12L, 3L, 3L, 3L, 8L, 9L, 9L, 9L, 9L, 
6L, 8L, 7L, 12L, 6L, 6L, 6L, 6L, 7L, 6L, 6L, 6L, 6L, 7L, 
6L, 9L, 9L, 6L, 9L, 12L, 6L, 6L, 9L, 9L, 9L, 9L, 9L, 9L, 
6L, 9L, 8L, 8L, 9L, 11L, 3L, 3L, 9L, 9L, 3L, 9L, 9L, 9L, 
6L, 6L, 7L, 10L, 7L, 9L, 10L, 4L, 9L, 6L, 8L, 8L, 9L, 8L, 
8L, 3L, 8L, 1L, 4L, 6L, 1L, 8L, 8L, 8L, 8L, 8L, 8L, 2L, 8L, 
8L, 3L, 8L, 8L, 8L, 8L, 8L, 3L, 8L, 8L, 8L, 2L, 8L, 7L, 3L, 
3L, 3L, 3L, 9L, 9L, 9L, 9L, 2L, 6L, 6L, 4L, 6L, 6L, 9L, 9L, 
6L, 8L, 6L, 6L, 6L, 9L, 9L, 6L, 6L, 9L, 9L, 9L, 9L, 9L, 6L, 
9L, 9L, 9L, 9L, 9L, 8L, 8L, 9L, 9L, 7L, 9L, 9L, 6L, 5L, 9L, 
9L, 6L, 9L, 8L, 4L, 9L, 9L, 6L, 12L, 9L, 9L, 9L, 4L, 6L, 
6L, 9L, 9L, 6L, 6L, 6L, 9L, 6L, 6L, 9L, 9L, 9L, 1L), .Label = c("Adult Education", 
"Junior Secondary", "Koranic", "NCE", "None", "Polytechnic", 
"Senior Primary", "Senior Secondary", "University", "Junior Primary", 
"Prelim / JMB", "Technical College"), class = "factor"), 
district = c("Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Angwan Rimi", "Angwan Rimi", "Angwan Rimi", "Angwan Rimi", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", "Barnawa", 
"Barnawa", "Barnawa", "Barnawa", "Barnawa")), .Names = c("sex", 
"education", "district"), row.names = c("1", "2", "3", "4", "5", 
"6", "7", "9", "10", "11", "12", "13", "14", "15", "16", "17", 
"19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", 
"30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", 
"41", "42", "43", "44", "46", "47", "48", "49", "50", "51", "52", 
"53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", 
"64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", 
"75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", 
"86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", 
"97", "98", "99", "100", "101", "102", "103", "104", "105", "106", 
"107", "108", "109", "110", "111", "113", "114", "115", "116", 
"117", "118", "119", "120", "121", "122", "123", "124", "125", 
"126", "127", "128", "129", "130", "131", "132", "133", "134", 
"135", "136", "137", "138", "139", "1361", "1371", "1381", "1391", 
"140", "141", "142", "143", "144", "145", "146", "147", "148", 
"149", "150", "151", "152", "153", "154", "155", "156", "157", 
"158", "159", "160", "161", "162", "163", "164", "165", "166", 
"167", "168", "169", "170", "171", "172", "173", "174", "175", 
"176", "177", "178", "179", "180", "181", "182", "183", "184", 
"185", "186", "187", "188", "189", "190", "191", "192", "193", 
"194", "195", "196", "197", "198", "199", "200", "201", "202", 
"203", "204", "205", "206", "207", "208", "209", "210", "211", 
"212", "213", "214", "215", "216", "217", "218", "219", "220", 
"221", "222", "223", "224", "225", "226", "227", "228", "229", 
"230", "231", "232", "233", "234", "235", "236", "237", "238", 
"239", "240", "241", "242", "243", "244", "245", "246", "247", 
"248", "249", "250", "251", "252", "253", "254", "255", "256", 
"257", "258", "259", "260", "261", "262", "263", "264", "265", 
"266", "267", "268", "269", "270", "271", "272", "273", "274", 
"275", "276", "277", "278", "279", "280", "281", "282", "283", 
"284", "285", "286", "287", "288", "289", "290", "291", "292", 
"293", "294", "295", "296", "297", "298", "299", "300", "301", 
"302", "303", "304", "305", "306", "307", "308", "309", "310", 
"311", "312", "313", "314", "315", "316", "317", "318", "319", 
"320", "321", "322", "323", "324", "325", "326", "327", "328", 
"329", "330", "331"), class = "data.frame")

解决方案

Here is a workaround for this problem because directly in one ggplot2 plot you can't combine dodging and stacking.

For this plot I used the data frame all_data that is made @DrewSteen answer - data frame should contain values for all District levels.

The idea is to plot on x axis combination of District and A8_HHH_hig. This is achieved with function interaction() inside the aes() call. Then this is converted to numeric to ensure that later we can add labels at positions we want. For the fill= we again use combination - now between sex and District. To get labels for the x axis use scale_x_continuous() and set break points at 2,4,6,...,26 (values between two bars that are of the same education level, maximal value is calculated as number of levels of A8_HHH_hig * levels of Sex) and as labels provide levels of A8_HHH_hig.

ggplot(all_data,aes(as.numeric(interaction(District,A8_HHH_hig)),
                        fill=interaction(sex,District)))+
       geom_bar(binwidth=1)+
       theme(axis.text.x=element_text(angle=-45, hjust=0))+
     scale_x_continuous("Education",breaks=seq(2,26,2),
          labels=levels(all_data$A8_HHH_hig),expand=c(0,0.5),limits=c(1,27))+
     scale_fill_discrete("",
          labels=c("Female Angwan","Male  Angwan","Female Barnawa","Male Barnawa"))

这篇关于ggplot堆积条形图来自2个独立的数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆