Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

how do i create a bar chart to compare pre and post scores between participants?

I am trying to create a bar chart or column chart plot to compare pre and post scores between participants. I managed to do this in a line graph, however, I am struggling to visualise this within a bar chart, can anyone help me with this?

Here is the data I am using:

structure(list(Participant = c(2, 3, 5, 7), PRE_QUIP_RS = c(24, 
24, 20, 20), POST_QUIP_RS = c(10, 23, 24, 14), PRE_PDQ8 = c(11, 
8, 10, 4), POST_PDQ8 = c(7, 7, 9, 4), PRE_GDS = c(1, 7, 1, 0), 
    POST_GDS = c(1, 4, 2, 0), PRE_PERSISTENT = c(9, 13, 6, 2), 
    POST_PERSISTENT = c(9, 13, 11, 3), PRE_EPISODIC = c(3, 4, 
    2, 0), POST_EPISODIC = c(2, 5, 6, 2), PRE_AVOIDANCE = c(6, 
    3, 0, 2), POST_AVOIDANCE = c(3, 3, 4, 1), PRE_IPQ = c(39, 
    48, 40, 37), POST_IPQ = c(16, 44, 30, 17), PRE_GSE = c(28, 
    31, 36, 29), POST_GSE = c(29, 30, 30, 29), PRE_BCI = c(11, 
    9, 5, 3), POST_BCI = c(3, 15, 0, 0)), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -4L))

In terms of how I roughly want it to look, I want the bars to be placed together for pre and post for each participant, kind of like this:
enter image description here

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

You may try

library(tidyverse)

df %>%
  select(Participant, PRE_QUIP_RS, POST_QUIP_RS) %>%
  pivot_longer(cols = c(PRE_QUIP_RS, POST_QUIP_RS), names_to = "group") %>%
  mutate(group = str_split(group, "_", simplify = T)[,1],
         Participant = as.factor(Participant)) %>%
  ggplot(aes(x = Participant, y = value, group = group, fill = group)) +
  geom_col(position = "dodge")

enter image description here

PRE POST order

dummy %>%
select(Participant, PRE_QUIP_RS, POST_QUIP_RS) %>%
pivot_longer(cols = c(PRE_QUIP_RS, POST_QUIP_RS), names_to = "group") %>%
mutate(group = str_split(group, "_", simplify = T)[,1] %>%
factor(., levels = c("PRE", "POST")), # HERE
Participant = as.factor(Participant)) %>%
ggplot(aes(x = Participant, y = value, group = group, fill = group)) +
geom_col(position = "dodge")

enter image description here

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading