Ggplot sets the bar out of two separate data frames

I struggled to cope with this riddle all day and get closer, but not cigars. I have two frames of data that are the result of two separate socio-economic surveys from two areas of the city. I want to compare the columns from these data frames side by side on the bar graph to show the frequency (number) of answers to a specific question in both polls.

The questions asked in each survey were identical. However, they were encoded somewhat differently, and therefore the column names are slightly different as follows! I managed to display data from my two data frames ( ar and bn ) on the same graph with raw data, that is, without the need to combine data frames. However, I do not seem to be able to build multi-line diagrams located 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) 

What it produces: enter image description here

As you will notice, I am trying to make a breakdown between male and female respondents based on their highest level of training for two data frames. (Note that the gender of the respondent is also encoded differently in each data frame, i.e. female / m and female / f.)

I would really like these two stacked graphs to appear in the same grid, so it's easy for me to compare the values. However, I'm not quite sure if I can use the position="dodge" parameter here, since the values ​​come from different data frames.

Does anyone know if this is possible ?! Or perhaps another way to compare these values ​​visually?

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

thanks

dput (ag)

 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 what I want to produce:

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") 
+4
source share
3 answers

The following is a workaround for this problem, because directly in one ggplot2 graph you cannot combine avoidance and stacking.

For this graph, I used the all_data data frame that was created in the @DrewSteen database — the data should contain values ​​for all levels of the District .

The idea is to build on the x axis from District and A8_HHH_hig . This is achieved using the interaction() function inside the aes() call. Then it is converted to a numeric number, so that later we can add labels to the positions we need. For fill= we use the combination again - now between sex and District . To get labels for the x axis, use scale_x_continuous() and set the breakpoints to 2,4,6, ..., 26 (values ​​between two columns that have the same education level, the maximum value is calculated as the number of levels A8_HHH_hig * sex levels) and how 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")) 

enter image description here

+5
source

Main histograms

Consolidating data into a single data file and organizing data.

Here:

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

and this is what you get:

enter image description here

For suggestions on how to improve the schedule, see the ggplot2 manual: http://ggplot2.org

Alternative graphics

The histogram really only works if there are a small number of data sets to display. As soon as you have more than ~ 6 areas, the reader will begin to lose the ability to process the data that is presented. Therefore, you may have to think about some alternatives.

How about using cards:

  • If you can get the latitude and longitude for each area, indicate the circles on the map with the number in each area. You would make a separate aspect for men and women and separate cards for each level.
  • If you can get form files from counties, you can apply them as choropleths .
+2
source

Unless there is a specific reason not to bind data frames, this should work

 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

0
source

Source: https://habr.com/ru/post/1496921/


All Articles