ggplot(df_hq_regions, aes(x = num, y = region)) +geom_pointrange(aes(xmin =0, xmax = num)) +scale_x_continuous(sec.axis =sec_axis(~ . /sum(df_hq_regions$num),labels =label_percent())) +labs(x ="Respondents based in region", y =NULL,title ="Region of headquarters",subtitle ="Q2.2: Where is your organization's headquarters? (summarized by region)") +theme_ingo() +theme(panel.grid.major.y =element_blank())
ggplot(countries_per_response, aes(x = num)) +geom_histogram(binwidth =2, color ="white", linewidth =0.1) +labs(x ="Number of countries selected", y ="Frequency") +theme_ingo()
Flows between countries selected
Code
continents_marked <- survey_orgs %>%select(home = Q2.2_iso3, target = Q2.5_iso3) %>%unnest(target) %>%mutate(across(c(home, target), list(continent =~countrycode(., "iso3c", "continent",custom_match =c("XKX"="Europe"))))) %>%mutate(across(ends_with("_continent"),~recode(., Oceania ="Asia &\nOceania", Asia ="Asia &\nOceania"))) %>%group_by(home_continent, target_continent) %>%summarize(times_marked =n()) %>%ungroup() %>%mutate(id =1:n()) %>%pivot_longer(ends_with("continent"), names_to ="x", values_to ="continent")ggplot(continents_marked,aes(x = x, y = times_marked, stratum = continent, alluvium = id, fill = continent)) +geom_flow() +geom_stratum(color ="grey30", alpha =0.5, linewidth =0.2) +geom_text(stat ="stratum", aes(label = continent, color = continent), lineheight =0.9,family ="Fira Sans Semibold") +scale_x_discrete(labels =c("Home region", "Target region"),expand =c(0, 0)) +scale_y_continuous(expand =c(0, 0)) +scale_fill_manual(values =c(clrs$Prism[6], clrs$Prism[8], clrs$Prism[11], clrs$Prism[2]),guide ="none") +scale_color_manual(values = colorspace::darken(c(clrs$Prism[6], clrs$Prism[8], clrs$Prism[11], clrs$Prism[2]), 0.5),guide ="none") +labs(x =NULL, y =NULL,title ="Flows between INGO home and target regions",subtitle ="European NGOs tend to work in Europe; American NGOs go all over the place") +theme_ingo() +theme(panel.grid.major.x =element_blank(),panel.grid.major.y =element_blank(),axis.text.x =element_text(family ="Fira Sans Semibold", size =rel(1.3)),axis.text.y =element_blank())
ggplot(df_target_regions, aes(x = times_marked, y = target)) +geom_pointrange(aes(xmin =0, xmax = times_marked)) +scale_x_continuous(labels =label_comma(),sec.axis =sec_axis(~ . /sum(df_target_regions$times_marked),labels =label_percent())) +labs(x ="Times country in region selected", y =NULL,title ="Region of target countries",subtitle ="Q2.5: Where does your organization work? (summarized by region)") +theme_ingo() +theme(panel.grid.major.y =element_blank())
ggplot(summary_activities$df_activities_collapsed, aes(x = prop, y =fct_rev(response), color = potential.contentiousness)) +geom_pointrange(aes(xmin =0, xmax = prop), position =position_dodge(width =0.75),size =0.5) +labs(x ="Proportion selected", y ="How often INGO does work") +scale_color_manual(values =c(clrs$Prism[2], clrs$Prism[8]), name =NULL,guide =guide_legend(reverse =TRUE)) +scale_x_continuous(labels =label_percent()) +facet_wrap(~ question, ncol =2) +theme_ingo() +theme(legend.position =c(1, 0), legend.justification =c(1, 0),legend.direction ="vertical", strip.text =element_text(size =rel(0.75)),panel.grid.major.y =element_blank())
Code
models_activities %>%unnest(diffs_summary) %>%mutate(nice_value = glue::glue("{diff}<br>({p})",diff =label_number(style_negative ="minus", accuracy =0.01)(y),p =label_number(accuracy =0.01)(p_greater_0)) ) %>%ungroup() %>%select(question, response, nice_value) %>%pivot_wider(names_from ="response", values_from ="nice_value") %>%gt() %>%fmt_markdown(columns =2:4) %>%cols_align(align ="left", columns = question) %>%cols_label(question ="") %>%tab_footnote(footnote ="Values show the differences in proportion of high and low contention INGOs providing each response (high contention proportion − low contention proportion)") %>%opts_theme()
Median differences in proportion of high and low contention INGOs
selecting frequency of type of work. Probability that the proportion is
greater than 0 given in parentheses.
Almost always
Sometimes
Never
Engaging in advocacy
0.17 (1.00)
−0.11 (0.00)
−0.04 (0.05)
Engaging in research and public education
0.01 (0.58)
−0.01 (0.43)
0.01 (0.69)
Monitoring and assessing the effects of policies
0.13 (1.00)
−0.07 (0.05)
−0.05 (0.05)
Providing direct aid and services
−0.10 (0.01)
0.07 (0.93)
0.05 (0.94)
Mobilizing people
0.08 (0.96)
−0.03 (0.29)
−0.04 (0.15)
Values show the differences in proportion of high and low contention INGOs providing each response (high contention proportion − low contention proportion)
Challenges and obstacles to mission
Code
df_obstacles_raw <- survey_orgs %>%filter(!is.na(Q3.12_obstacle)) %>%mutate(obstacle =str_split(Q3.12_obstacle, ", ")) %>%unnest(obstacle) %>%mutate(obstacle =recode(obstacle,`access to country`="bureaucratic, legal, and political",`political context`="bureaucratic, legal, and political",`bureaucratic and legal`="bureaucratic, legal, and political" )) %>%group_by(obstacle) %>%summarise(num =n()) %>%arrange(desc(num))df_obstacles_denom <- survey_orgs %>%filter(!is.na(Q3.12_obstacle)) %>%nrow()df_obstacles <- df_obstacles_raw %>%mutate(prop = num / df_obstacles_denom) %>%mutate(obstacle =str_to_sentence(obstacle)) %>%filter(num >20, obstacle !="Other") %>%mutate(obstacle =fct_inorder(obstacle))ggplot(df_obstacles, aes(x = prop, y =fct_rev(obstacle))) +geom_pointrange(aes(xmin =0, xmax = prop)) +scale_x_continuous(labels =label_percent()) +labs(x ="Proportion of respondents", y =NULL) +theme_ingo() +theme(panel.grid.major.y =element_blank())