Hi there,
I am wanting to show a series of 7 variables divided into internal or external threats. I've been able to get part of the way - I can plot the groups separately. But when I combine the plots using patchwork, I lose the headings/subheadings making it clear which group is internal vs external threats (see below).
I'm not particularly wedded to this format, so if you think there is a better way to visualise the contrast between the two then I would be interested in your suggestions.
Here is my code and sample dataset:
install.packages("sjPlot")
#> 
#> The downloaded binary packages are in
#>  /var/folders/n4/v7p943711hgcdq67m0w2p2hm0000gp/T//Rtmp5LwPMX/downloaded_packages
install.packages("sjmisc")
#> 
#> The downloaded binary packages are in
#>  /var/folders/n4/v7p943711hgcdq67m0w2p2hm0000gp/T//Rtmp5LwPMX/downloaded_packages
install.packages("parameters")
#> 
#> The downloaded binary packages are in
#>  /var/folders/n4/v7p943711hgcdq67m0w2p2hm0000gp/T//Rtmp5LwPMX/downloaded_packages
install.packages("patchwork")
#> 
#> The downloaded binary packages are in
#>  /var/folders/n4/v7p943711hgcdq67m0w2p2hm0000gp/T//Rtmp5LwPMX/downloaded_packages
library(ggplot2)
library(tidyr)
library(tibble)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library(likert)
#> Loading required package: xtable
#> 
#> Attaching package: 'likert'
#> The following object is masked from 'package:dplyr':
#> 
#>     recode
library(RColorBrewer)
library(stringr)
library(sjPlot)
library(sjmisc)
#> 
#> Attaching package: 'sjmisc'
#> The following object is masked from 'package:tibble':
#> 
#>     add_case
#> The following object is masked from 'package:tidyr':
#> 
#>     replace_na
library(parameters)
#> 
#> Attaching package: 'parameters'
#> The following object is masked from 'package:xtable':
#> 
#>     display
library(dbplyr)
#> 
#> Attaching package: 'dbplyr'
#> The following objects are masked from 'package:dplyr':
#> 
#>     ident, sql
library(patchwork)
library(writexl)
library(reprex)
data.frame(
  stringsAsFactors = FALSE,
                                 Question = c("Varible_1",
                                              "Varible_2","Varible_3","Variable_4",
                                              "Variable_4","Variable_5",
                                              "Variable_6","Variable_7","Varible_1",
                                              "Varible_2","Varible_3",
                                              "Variable_4","Variable_4","Variable_5",
                                              "Variable_6","Variable_7",
                                              "Varible_1","Varible_2","Varible_3",
                                              "Variable_4","Variable_4",
                                              "Variable_5","Variable_6","Variable_7",
                                              "Varible_1","Varible_2",
                                              "Varible_3","Variable_4","Variable_4",
                                              "Variable_5","Variable_6",
                                              "Variable_7","Varible_1","Varible_2",
                                              "Varible_3","Variable_4",
                                              "Variable_4","Variable_5","Variable_6",
                                              "Variable_7","Varible_1",
                                              "Varible_2","Varible_3","Variable_4",
                                              "Variable_4","Variable_5",
                                              "Variable_6","Variable_7"),
                                 Response = c("Poor","Neutral",
                                              "Very poor","Very poor",NA,
                                              "Very poor",NA,NA,"Well","Well",
                                              "Well","Poor",NA,"Well","Poor",
                                              "Poor","Neutral","Poor",
                                              "Neutral","Poor",NA,"Neutral",NA,NA,
                                              "Well","Neutral","Poor",
                                              "Poor","Poor",NA,"Neutral",
                                              "Neutral","Very well","Well",
                                              "Very poor","Very poor","Very poor",
                                              "Very poor","Well","Well","Neutral",
                                              "Poor",NA,"Poor",NA,"Poor",
                                              NA,NA),
                             Question_Cat = c("External",
                                              "External","Internal","Internal",
                                              "Internal","Internal","External",
                                              "External","External","External",
                                              "Internal","Internal","Internal",
                                              "Internal","External",
                                              "External","External","External",
                                              "Internal","Internal","Internal",
                                              "Internal","External","External",
                                              "External","External","Internal",
                                              "Internal","Internal","Internal",
                                              "External","External",
                                              "External","External","Internal",
                                              "Internal","Internal","Internal",
                                              "External","External","External",
                                              "External","Internal","Internal",
                                              "Internal","Internal","External",
                                              "External")
                       )
#>      Question  Response Question_Cat
#> 1   Varible_1      Poor     External
#> 2   Varible_2   Neutral     External
#> 3   Varible_3 Very poor     Internal
#> 4  Variable_4 Very poor     Internal
#> 5  Variable_4      <NA>     Internal
#> 6  Variable_5 Very poor     Internal
#> 7  Variable_6      <NA>     External
#> 8  Variable_7      <NA>     External
#> 9   Varible_1      Well     External
#> 10  Varible_2      Well     External
#> 11  Varible_3      Well     Internal
#> 12 Variable_4      Poor     Internal
#> 13 Variable_4      <NA>     Internal
#> 14 Variable_5      Well     Internal
#> 15 Variable_6      Poor     External
#> 16 Variable_7      Poor     External
#> 17  Varible_1   Neutral     External
#> 18  Varible_2      Poor     External
#> 19  Varible_3   Neutral     Internal
#> 20 Variable_4      Poor     Internal
#> 21 Variable_4      <NA>     Internal
#> 22 Variable_5   Neutral     Internal
#> 23 Variable_6      <NA>     External
#> 24 Variable_7      <NA>     External
#> 25  Varible_1      Well     External
#> 26  Varible_2   Neutral     External
#> 27  Varible_3      Poor     Internal
#> 28 Variable_4      Poor     Internal
#> 29 Variable_4      Poor     Internal
#> 30 Variable_5      <NA>     Internal
#> 31 Variable_6   Neutral     External
#> 32 Variable_7   Neutral     External
#> 33  Varible_1 Very well     External
#> 34  Varible_2      Well     External
#> 35  Varible_3 Very poor     Internal
#> 36 Variable_4 Very poor     Internal
#> 37 Variable_4 Very poor     Internal
#> 38 Variable_5 Very poor     Internal
#> 39 Variable_6      Well     External
#> 40 Variable_7      Well     External
#> 41  Varible_1   Neutral     External
#> 42  Varible_2      Poor     External
#> 43  Varible_3      <NA>     Internal
#> 44 Variable_4      Poor     Internal
#> 45 Variable_4      <NA>     Internal
#> 46 Variable_5      Poor     Internal
#> 47 Variable_6      <NA>     External
#> 48 Variable_7      <NA>     External
(plot_ext<-df_long %>% 
    filter(Question_Cat == "External") %>%
    group_by(Question) %>% 
    ggplot(aes(x = Response, y = Question_Cat, fill=Response)) +
    geom_bar(stat='identity')+
    facet_wrap(~Question))+
  ggtitle("External Threats")+
  xlab(NULL)+
  ylab(NULL)+
  theme(axis.text.y = element_blank())
#> Error in filter(., Question_Cat == "External"): object 'df_long' not found
(plot_int<-df_long %>% 
    filter(Question_Cat == "Internal") %>%
    group_by(Question) %>% 
    ggplot(aes(x = Response, y = Question_Cat, fill=Response)) +
    geom_bar(stat='identity')+
    facet_wrap(~Question))+
  ggtitle("Internal Threats")+
  xlab(NULL)+
  ylab(NULL)+
  theme(axis.text.y = element_blank())
#> Error in filter(., Question_Cat == "Internal"): object 'df_long' not found
plot_int + plot_ext+
  plot_layout(ncol = 1)
#> Error in eval(expr, envir, enclos): object 'plot_int' not found
Created on 2022-12-05 with reprex v2.0.2
Thank you, in advance, for any help or advice.


