ggplot来自2个独立数据框的堆积条形图

时间:2013-08-13 22:06:16

标签: r ggplot2 bar-chart

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

每次调查中提出的问题都是相同的。但是,它们的编码略有不同,因此列名略有不同,如下所示!我已设法在原始数据的同一条形图上绘制来自我的两个数据帧(arbn)的数据,即无需合并数据帧。但是,我似乎无法并排绘制堆积的条形图。

我在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)

产生这个: enter image description here

正如您将注意到的那样,我试图根据两个数据框架的最高学历来绘制男女受访者之间的分歧。 (注意,在每个数据框中,受访者的性别也有不同的编码,即男性/男性和女性/ f。)

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

有谁知道这是否可能?!或者可能是另一种在视觉上比较这些值的方法?

如果有人有时间看看,我附上了一些可重现的代码!

感谢

  

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")

这是我想要制作的一个例子:

enter image description here

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")

3 个答案:

答案 0 :(得分:5)

以下是此问题的解决方法,因为直接在一个ggplot2图中,您无法将躲避和堆叠结合起来。

对于这个图,我使用了@DrewSteen回答的数据框all_data - 数据框应该包含所有District级别的值。

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

{{1}}

enter image description here

答案 1 :(得分:2)

基本条形图

将数据整合到一个data.frame中并整理数据。

这里是:

# fix the names
names(ar)[2] <- "highest"
names(ar)[3] <- "gender"
names(bn)[2] <- "highest"
names(bn)[3] <- "gender"
data <-rbind(ar,bn)
data$gender[data$gender =="M"] <- "male"
data$gender[data$gender =="F"] <- "female"


# plots
require('ggplot2')
theme_bw(base_size = 8, base_family = "")
p2 <- ggplot(data, aes(highest, fill=gender)) + 
  geom_bar(position="stack", alpha=0.5) +  
  facet_wrap(~District, ncol = 3) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
print(p2)

ggsave(filename = "DistrictGender.png",
       plot = p2,
       scale = 1,
       width = 5, height = 3,
       dpi = 300)

这就是你得到的:

enter image description here

有关如何改善情节的建议,请参阅ggplot2手册:http://ggplot2.org

替代图

条形图实际上仅在您显示少量数据集时才有效。一旦你有超过6个区,读者将开始失去处理正在呈现的数据的能力。所以,你可能需要考虑一些替代方案。

如何使用地图:

  • 如果您可以获得每个区的经度和纬度,请在地图上绘制圆圈,以显示每个区的计数。你会为男性和女性分别做一个方面,并为每个级别分别制作地图。
  • 如果您可以获取地区的形状文件,则可以将其绘制为choropleths

答案 2 :(得分:0)

除非有特定原因不绑定数据框,否则这应该有效

require(plyr) # for the rename function
ar_rename <- rename(ar, replace=c("A9_HHHedulevl" = "A8_HHH_hig", "A7_HHsex"="A6_Sex_HHH"))
all_data <- rbind(ar_rename, bn)

# Create a new column for a 'unified' sex variable
#    There are shorter ways to do this, but I like this way
#    because it is very easy to read.
all_data$sex <- "F"
all_data$sex[all_data$A6_Sex_HHH == "male" | all_data$A6_Sex_HHH == "M"] <- "M"

# Plot the data, using position="dodge"
ggplot(all_data, aes(x=A8_HHH_hig, fill=sex)) + 
  geom_bar(position="dodge", alpha=0.5) +
  theme(axis.text.x=element_text(angle=-45, hjust=0)) # to make the axis labels legible

enter image description here