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.