--- title: "R Notebook" output: html_notebook editor_options: chunk_output_type: console --- ```{r} install.packages("pacman") pacman::p_load("stringr","gplots","ggplot2", "tibble", "dplyr", "tidyr", "readr", "RColorBrewer", "dendextend", "openxlsx","writexl", "tibble", "gridExtra", "gridtext", "ggpubr","pracma", "ggh4x","eulerr", "marray", "ggplotify", "corrplot", "forcats", "biomaRt", "ggpattern", "emmeans", "ggsignif", "multcomp", "pwr", "gtable", "extrafont", "nlme", "rstatix","ez", "car", "broom", "ggtext", "drc", "rlang", "grid") ``` #read-in of data ```{r} ROTresults <- openxlsx::read.xlsx("ROT R data.xlsx") ROTresults$experiment <- as.factor(ROTresults$experiment) #create legends colors <- c("lightgrey", "white") labels <- c("ROT", "Clean") legendsex <- grid.legend(labels = labels, pch = 22, gp = gpar(fill = colors, col="black", fontfamily = "sans", cex = 2), hgap = unit(15, "mm"), vgap = unit(12, "mm")) colors2 <- c("white") labels2 <- c("Clean") legendsex2 <- grid.legend(labels = labels2, pch = 22, gp = gpar(fill = colors2, col="black", fontfamily = "sans", cex = 2), hgap = unit(15, "mm"), vgap = unit(12, "mm")) ``` #Experiment 1 ```{r} ROTresultsfilterCIL <- ROTresults %>% select(-CS) %>% filter(experiment == "one") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIL)) | !(any(TIME == "PRE") & any(is.na(CIL)))) #make each set of data plotted in the right spot ROTresultsfilterCIL$TIME <- factor(ROTresultsfilterCIL$TIME, levels = c("PRE", "6H")) #get summary statistics for bars on graph summary_statsCIL <- ROTresultsfilterCIL %>% group_by(ROT) %>% summarise(mean_value = mean(CIL), sd_value = sd(CIL, na.rm = TRUE)) data_clean <- subset(ROTresultsfilterCIL, ROT == "no") data_ROT <- subset(ROTresultsfilterCIL, ROT == "yes") merged_data <- merge(data_clean, data_ROT, by = "ID", suffixes = c(".clean", ".ROT")) t_test_result <- t.test(merged_data$CIL.clean, merged_data$CIL.ROT, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIL <- max(ROTresultsfilterCIL$CIL) * 1.6 y_positionROTcomparisonCIL <- max(ROTresultsfilterCIL$CIL) * 1.2 #plot of CIL exp1CIL <- ggplot(data=ROTresultsfilterCIL, aes(x=ROT, y=CIL)) + geom_bar(data = summary_statsCIL, aes(x=ROT, y = mean_value, fill = ROT), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIL, aes(x = ROT, y = CIL, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean")) + ggtitle("A. Complex I leak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIL, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIP <- ROTresults %>% select(-CS) %>% filter(experiment == "one") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIP)) | !(any(TIME == "PRE") & any(is.na(CIP)))) #make each set of data plotted in the right spot ROTresultsfilterCIP$TIME <- factor(ROTresultsfilterCIP$TIME, levels = c("PRE", "6H")) #get summary statistiCIP for bars on graph summary_statsCIP <- ROTresultsfilterCIP %>% group_by(ROT) %>% summarise(mean_value = mean(CIP), sd_value = sd(CIP, na.rm = TRUE)) data_clean <- subset(ROTresultsfilterCIP, ROT == "no") data_ROT <- subset(ROTresultsfilterCIP, ROT == "yes") merged_data <- merge(data_clean, data_ROT, by = "ID", suffixes = c(".clean", ".ROT")) t_test_result <- t.test(merged_data$CIP.clean, merged_data$CIP.ROT, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIP <- max(ROTresultsfilterCIP$CIP) * 1.6 y_positionROTcomparisonCIP <- max(ROTresultsfilterCIP$CIP) * 1.2 #plot of CIP exp1CIP <- ggplot(data=ROTresultsfilterCIP, aes(x=ROT, y=CIP)) + geom_bar(data = summary_statsCIP, aes(x=ROT, y = mean_value, fill = ROT), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIP, aes(x = ROT, y = CIP, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean")) + ggtitle("B. Complex I peak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIP, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIIIP <- ROTresults %>% select(-CS) %>% filter(experiment == "one") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIIIP)) | !(any(TIME == "PRE") & any(is.na(CIIIP)))) #make each set of data plotted in the right spot ROTresultsfilterCIIIP$TIME <- factor(ROTresultsfilterCIIIP$TIME, levels = c("PRE", "6H")) #get summary statistiCIIIP for bars on graph summary_statsCIIIP <- ROTresultsfilterCIIIP %>% group_by(ROT) %>% summarise(mean_value = mean(CIIIP), sd_value = sd(CIIIP, na.rm = TRUE)) data_clean <- subset(ROTresultsfilterCIIIP, ROT == "no") data_ROT <- subset(ROTresultsfilterCIIIP, ROT == "yes") merged_data <- merge(data_clean, data_ROT, by = "ID", suffixes = c(".clean", ".ROT")) t_test_result <- t.test(merged_data$CIIIP.clean, merged_data$CIIIP.ROT, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIIIP <- max(ROTresultsfilterCIIIP$CIIIP) * 1.6 y_positionROTcomparisonCIIIP <- max(ROTresultsfilterCIIIP$CIIIP) * 1.2 #plot of CIIIP exp1CIIIP <- ggplot(data=ROTresultsfilterCIIIP, aes(x=ROT, y=CIIIP)) + geom_bar(data = summary_statsCIIIP, aes(x=ROT, y = mean_value, fill = ROT), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIIIP, aes(x = ROT, y = CIIIP, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean")) + ggtitle("C. Complex I+II peak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIIIP, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIIIC <- ROTresults %>% select(-CS) %>% filter(experiment == "one") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIIIC)) | !(any(TIME == "PRE") & any(is.na(CIIIC)))) #make each set of data plotted in the right spot ROTresultsfilterCIIIC$TIME <- factor(ROTresultsfilterCIIIC$TIME, levels = c("PRE", "6H")) #get summary statistiCIIIC for bars on graph summary_statsCIIIC <- ROTresultsfilterCIIIC %>% group_by(ROT) %>% summarise(mean_value = mean(CIIIC), sd_value = sd(CIIIC, na.rm = TRUE)) data_clean <- subset(ROTresultsfilterCIIIC, ROT == "no") data_ROT <- subset(ROTresultsfilterCIIIC, ROT == "yes") merged_data <- merge(data_clean, data_ROT, by = "ID", suffixes = c(".clean", ".ROT")) t_test_result <- t.test(merged_data$CIIIC.clean, merged_data$CIIIC.ROT, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIIIC <- max(ROTresultsfilterCIIIC$CIIIC) * 1.6 y_positionROTcomparisonCIIIC <- max(ROTresultsfilterCIIIC$CIIIC) * 1.2 #plot of CIIIC exp1CIIIE <- ggplot(data=ROTresultsfilterCIIIC, aes(x=ROT, y=CIIIC)) + geom_bar(data = summary_statsCIIIC, aes(x=ROT, y = mean_value, fill = ROT), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIIIC, aes(x = ROT, y = CIIIC, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean")) + ggtitle("D. Complex I+II capacity") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIIIC, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ``` #Experiment 2 ```{r} ROTresultsfilterCIL <- ROTresults %>% select(-CS) %>% filter(experiment == "two") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIL)) | !(any(TIME == "PRE") & any(is.na(CIL)))) #make each set of data plotted in the right spot ROTresultsfilterCIL$TIME <- factor(ROTresultsfilterCIL$TIME, levels = c("PRE", "6H")) #get summary statistics for bars on graph summary_statsCIL <- ROTresultsfilterCIL %>% group_by(ROT) %>% summarise(mean_value = mean(CIL), sd_value = sd(CIL, na.rm = TRUE)) data_clean <- subset(ROTresultsfilterCIL, ROT == "no") data_ROT <- subset(ROTresultsfilterCIL, ROT == "yes") # Perform t-test merged_data <- merge(data_clean, data_ROT, by = "ID", suffixes = c(".clean", ".ROT")) t_test_result <- t.test(merged_data$CIL.clean, merged_data$CIL.ROT, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIL <- max(ROTresultsfilterCIL$CIL) * 1.6 y_positionROTcomparisonCIL <- max(ROTresultsfilterCIL$CIL) * 1.2 #plot of CIL exp2CIL <-ggplot(data=ROTresultsfilterCIL, aes(x=ROT, y=CIL)) + geom_bar(data = summary_statsCIL, aes(x=ROT, y = mean_value, fill = ROT), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIL, aes(x = ROT, y = CIL, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean")) + ggtitle("A. Complex I leak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIL, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIP <- ROTresults %>% select(-CS) %>% filter(experiment == "two") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIP)) | !(any(TIME == "PRE") & any(is.na(CIP)))) #make each set of data plotted in the right spot ROTresultsfilterCIP$TIME <- factor(ROTresultsfilterCIP$TIME, levels = c("PRE", "6H")) #get summary statistiCIP for bars on graph summary_statsCIP <- ROTresultsfilterCIP %>% group_by(ROT) %>% summarise(mean_value = mean(CIP), sd_value = sd(CIP, na.rm = TRUE)) data_clean <- subset(ROTresultsfilterCIP, ROT == "no") data_ROT <- subset(ROTresultsfilterCIP, ROT == "yes") merged_data <- merge(data_clean, data_ROT, by = "ID", suffixes = c(".clean", ".ROT")) t_test_result <- t.test(merged_data$CIP.clean, merged_data$CIP.ROT, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIP <- max(ROTresultsfilterCIP$CIP) * 1.6 y_positionROTcomparisonCIP <- max(ROTresultsfilterCIP$CIP) * 1.2 #plot of CIP exp2CIP <- ggplot(data=ROTresultsfilterCIP, aes(x=ROT, y=CIP)) + geom_bar(data = summary_statsCIP, aes(x=ROT, y = mean_value, fill = ROT), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIP, aes(x = ROT, y = CIP, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean")) + ggtitle("B. Complex I peak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIP, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIIIP <- ROTresults %>% select(-CS) %>% filter(experiment == "two") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIIIP)) | !(any(TIME == "PRE") & any(is.na(CIIIP)))) #make each set of data plotted in the right spot ROTresultsfilterCIIIP$TIME <- factor(ROTresultsfilterCIIIP$TIME, levels = c("PRE", "6H")) #get summary statistiCIIIP for bars on graph summary_statsCIIIP <- ROTresultsfilterCIIIP %>% group_by(ROT) %>% summarise(mean_value = mean(CIIIP), sd_value = sd(CIIIP, na.rm = TRUE)) data_clean <- subset(ROTresultsfilterCIIIP, ROT == "no") data_ROT <- subset(ROTresultsfilterCIIIP, ROT == "yes") merged_data <- merge(data_clean, data_ROT, by = "ID", suffixes = c(".clean", ".ROT")) t_test_result <- t.test(merged_data$CIIIP.clean, merged_data$CIIIP.ROT, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIIIP <- max(ROTresultsfilterCIIIP$CIIIP) * 1.6 y_positionROTcomparisonCIIIP <- max(ROTresultsfilterCIIIP$CIIIP) * 1.2 #plot of CIIIP exp2CIIIP <- ggplot(data=ROTresultsfilterCIIIP, aes(x=ROT, y=CIIIP)) + geom_bar(data = summary_statsCIIIP, aes(x=ROT, y = mean_value, fill = ROT), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIIIP, aes(x = ROT, y = CIIIP, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean")) + ggtitle("C. Complex I+II peak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIIIP, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIIIC <- ROTresults %>% select(-CS) %>% filter(experiment == "two") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIIIC)) | !(any(TIME == "PRE") & any(is.na(CIIIC)))) #make each set of data plotted in the right spot ROTresultsfilterCIIIC$TIME <- factor(ROTresultsfilterCIIIC$TIME, levels = c("PRE", "6H")) #get summary statistiCIIIC for bars on graph summary_statsCIIIC <- ROTresultsfilterCIIIC %>% group_by(ROT) %>% summarise(mean_value = mean(CIIIC), sd_value = sd(CIIIC, na.rm = TRUE)) data_clean <- subset(ROTresultsfilterCIIIC, ROT == "no") data_ROT <- subset(ROTresultsfilterCIIIC, ROT == "yes") merged_data <- merge(data_clean, data_ROT, by = "ID", suffixes = c(".clean", ".ROT")) t_test_result <- t.test(merged_data$CIIIC.clean, merged_data$CIIIC.ROT, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIIIC <- max(ROTresultsfilterCIIIC$CIIIC) * 1.6 y_positionROTcomparisonCIIIC <- max(ROTresultsfilterCIIIC$CIIIC) * 1.2 #plot of CIIIC exp2CIIIE <- ggplot(data=ROTresultsfilterCIIIC, aes(x=ROT, y=CIIIC)) + geom_bar(data = summary_statsCIIIC, aes(x=ROT, y = mean_value, fill = ROT), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIIIC, aes(x = ROT, y = CIIIC, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean")) + ggtitle("D. Complex I+II capacity") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIIIC, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ``` #Experiment 3 ```{r} #filter out those who did not complete the measurements ROTresultsfilterCIL <- ROTresults %>% select(-CS) %>% filter(experiment == "three") %>% group_by(ID) %>% filter(all(c("PRE", "6H") %in% TIME & !is.na(CIL)) | !(any(TIME == "6H") & any(is.na(CIL)))) #make each set of data plotted in the right spot ROTresultsfilterCIL$TIME <- factor(ROTresultsfilterCIL$TIME, levels = c("PRE", "6H")) ROTresultsfilterCIL$interaction_ROT_TIME <- interaction(ROTresultsfilterCIL$ROT, ROTresultsfilterCIL$TIME, drop = TRUE, lex.order = TRUE) #get summary statistics for bars on graph summary_statsCIL <- ROTresultsfilterCIL %>% group_by(interaction_ROT_TIME) %>% summarise(mean_value = mean(CIL), sd_value = sd(CIL, na.rm = TRUE)) # Performing two-way ANOVA anova_resultCIL <- aov(CIL ~ ROT * TIME + Error(ID/ROT), data = ROTresultsfilterCIL) anovaCIL <- summary(anova_resultCIL) anovaCIL <- as.data.frame(anovaCIL$`Error: Within`[[1]]) twowaypvalueCIL <- anovaCIL["ROT:TIME", "Pr(>F)"] #multiple comparisons from two-way ANOVA (-adjust if needed) multiplecomparisonsCIL <- emmeans(anova_resultCIL, ~ TIME | ROT) multiplecomparisonsCIL <- summary(pairs(multiplecomparisonsCIL), by = NULL, adjust = "none") ROTmultiplecomparisons <- multiplecomparisonsCIL$p.value[multiplecomparisonsCIL$ROT == "yes"] NAmultiplecomparisons <- multiplecomparisonsCIL$p.value[multiplecomparisonsCIL$ROT == "no"] #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIL <- max(ROTresultsfilterCIL$CIL) * 1.6 y_positionROTcomparisonCIL <- max(ROTresultsfilterCIL$CIL[ROTresultsfilterCIL$ROT == "yes"]) * 1.6 y_positionCLEANcomparisonCIL <- max(ROTresultsfilterCIL$CIL[ROTresultsfilterCIL$ROT == "no"]) * 1.6 y_positionanovaCIL <- max(ROTresultsfilterCIL$CIL) * 2.5 #plot of CIL exp3CIL <- ggplot(data=ROTresultsfilterCIL, aes(x=interaction_ROT_TIME, y=CIL)) + geom_bar(data = summary_statsCIL, aes(x=interaction_ROT_TIME, y = mean_value, fill = interaction_ROT_TIME), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no.PRE" = "white", "no.6H" = "white", "yes.PRE" = "lightgrey", "yes.6H" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID,ROT)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIL, aes(x = interaction_ROT_TIME, y = CIL, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("no.PRE" = "PRE", "no.6H" = "POST", "yes.PRE"= "PRE", "yes.6H" = "POST")) + ggtitle("A. Complex I leak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionCLEANcomparisonCIL, xmin = c(1), xmax = (2), annotation = round(NAmultiplecomparisons,3), tip_length = 0, family = "sans", size = 1, textsize = 6) + geom_signif( y_position = y_positionROTcomparisonCIL, xmin = c(3), xmax = c(4), annotation = round(ROTmultiplecomparisons,3), tip_length = 0, family = "sans", size = 1, textsize = 6) + geom_signif( y_position = y_positionanovaCIL, xmin = c(1.5), xmax = (3.5), annotation = round(twowaypvalueCIL,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIP <- ROTresults %>% select(-CS) %>% filter(experiment == "three") %>% group_by(ID) %>% filter(all(c("PRE", "6H") %in% TIME & !is.na(CIP)) | !(any(TIME == "6H") & any(is.na(CIP)))) #make each set of data plotted in the right spot ROTresultsfilterCIP$TIME <- factor(ROTresultsfilterCIP$TIME, levels = c("PRE", "6H")) ROTresultsfilterCIP$interaction_ROT_TIME <- interaction(ROTresultsfilterCIP$ROT, ROTresultsfilterCIP$TIME, drop = TRUE, lex.order = TRUE) #get summary statistiCIP for bars on graph summary_statsCIP <- ROTresultsfilterCIP %>% group_by(interaction_ROT_TIME) %>% summarise(mean_value = mean(CIP), sd_value = sd(CIP, na.rm = TRUE)) # Performing two-way ANOVA anova_resultCIP <- aov(CIP ~ ROT * TIME + Error(ID/ROT), data = ROTresultsfilterCIP) anovaCIP <- summary(anova_resultCIP) anovaCIP <- as.data.frame(anovaCIP$`Error: Within`[[1]]) twowaypvalueCIP <- anovaCIP["ROT:TIME", "Pr(>F)"] #multiple comparisons from two-way ANOVA (-adjust if needed) multiplecomparisonsCIP <- emmeans(anova_resultCIP, ~ TIME | ROT) multiplecomparisonsCIP <- summary(pairs(multiplecomparisonsCIP), by = NULL, adjust = "none") ROTmultiplecomparisons <- multiplecomparisonsCIP$p.value[multiplecomparisonsCIP$ROT == "yes"] NAmultiplecomparisons <- multiplecomparisonsCIP$p.value[multiplecomparisonsCIP$ROT == "no"] #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIP <- max(ROTresultsfilterCIP$CIP) * 1.6 y_positionROTcomparisonCIP <- max(ROTresultsfilterCIP$CIP[ROTresultsfilterCIP$ROT == "yes"]) * 1.2 y_positionCLEANcomparisonCIP <- max(ROTresultsfilterCIP$CIP[ROTresultsfilterCIP$ROT == "no"]) * 1.2 y_positionanovaCIP <- max(ROTresultsfilterCIP$CIP) * 1.5 #plot of CIP exp3CIP <-ggplot(data=ROTresultsfilterCIP, aes(x=interaction_ROT_TIME, y=CIP)) + geom_bar(data = summary_statsCIP, aes(x=interaction_ROT_TIME, y = mean_value, fill = interaction_ROT_TIME), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no.PRE" = "white", "no.6H" = "white", "yes.PRE" = "lightgrey", "yes.6H" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID,ROT)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIP, aes(x = interaction_ROT_TIME, y = CIP, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("no.PRE" = "PRE", "no.6H" = "POST", "yes.PRE"= "PRE", "yes.6H" = "POST")) + ggtitle("B. Complex I peak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionCLEANcomparisonCIP, xmin = c(1), xmax = (2), annotation = round(NAmultiplecomparisons,3), tip_length = 0, family = "sans", size = 1, textsize = 6) + geom_signif( y_position = y_positionROTcomparisonCIP, xmin = c(3), xmax = c(4), annotation = round(ROTmultiplecomparisons,3), tip_length = 0, family = "sans", size = 1, textsize = 6) + geom_signif( y_position = y_positionanovaCIP, xmin = c(1.5), xmax = (3.5), annotation = round(twowaypvalueCIP,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIIIP <- ROTresults %>% select(-CS) %>% filter(experiment == "three") %>% group_by(ID) %>% filter(all(c("PRE", "6H") %in% TIME & !is.na(CIIIP)) | !(any(TIME == "6H") & any(is.na(CIIIP)))) #make each set of data plotted in the right spot ROTresultsfilterCIIIP$TIME <- factor(ROTresultsfilterCIIIP$TIME, levels = c("PRE", "6H")) ROTresultsfilterCIIIP$interaction_ROT_TIME <- interaction(ROTresultsfilterCIIIP$ROT, ROTresultsfilterCIIIP$TIME, drop = TRUE, lex.order = TRUE) #get summary statistiCIIIP for bars on graph summary_statsCIIIP <- ROTresultsfilterCIIIP %>% group_by(interaction_ROT_TIME) %>% summarise(mean_value = mean(CIIIP), sd_value = sd(CIIIP, na.rm = TRUE)) # Performing two-way ANOVA anova_resultCIIIP <- aov(CIIIP ~ ROT * TIME + Error(ID/ROT), data = ROTresultsfilterCIIIP) anovaCIIIP <- summary(anova_resultCIIIP) anovaCIIIP <- as.data.frame(anovaCIIIP$`Error: Within`[[1]]) twowaypvalueCIIIP <- anovaCIIIP["ROT:TIME", "Pr(>F)"] #multiple comparisons from two-way ANOVA (-adjust if needed) multiplecomparisonsCIIIP <- emmeans(anova_resultCIIIP, ~ TIME | ROT) multiplecomparisonsCIIIP <- summary(pairs(multiplecomparisonsCIIIP), by = NULL, adjust = "none") ROTmultiplecomparisons <- multiplecomparisonsCIIIP$p.value[multiplecomparisonsCIIIP$ROT == "yes"] NAmultiplecomparisons <- multiplecomparisonsCIIIP$p.value[multiplecomparisonsCIIIP$ROT == "no"] #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIIIP <- max(ROTresultsfilterCIIIP$CIIIP) * 1.6 y_positionROTcomparisonCIIIP <- max(ROTresultsfilterCIIIP$CIIIP[ROTresultsfilterCIIIP$ROT == "yes"]) * 1.2 y_positionCLEANcomparisonCIIIP <- max(ROTresultsfilterCIIIP$CIIIP[ROTresultsfilterCIIIP$ROT == "no"]) * 1.2 y_positionanovaCIIIP <- max(ROTresultsfilterCIIIP$CIIIP) * 1.5 #plot of CIIIP exp3CIIIP <- ggplot(data=ROTresultsfilterCIIIP, aes(x=interaction_ROT_TIME, y=CIIIP)) + geom_bar(data = summary_statsCIIIP, aes(x=interaction_ROT_TIME, y = mean_value, fill = interaction_ROT_TIME), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no.PRE" = "white", "no.6H" = "white", "yes.PRE" = "lightgrey", "yes.6H" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID,ROT)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIIIP, aes(x = interaction_ROT_TIME, y = CIIIP, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("no.PRE" = "PRE", "no.6H" = "POST", "yes.PRE"= "PRE", "yes.6H" = "POST")) + ggtitle("C. Complex I+II peak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionCLEANcomparisonCIIIP, xmin = c(1), xmax = (2), annotation = round(NAmultiplecomparisons,3), tip_length = 0, family = "sans", size = 1, textsize = 6) + geom_signif( y_position = y_positionROTcomparisonCIIIP, xmin = c(3), xmax = c(4), annotation = round(ROTmultiplecomparisons,3), tip_length = 0, family = "sans", size = 1, textsize = 6) + geom_signif( y_position = y_positionanovaCIIIP, xmin = c(1.5), xmax = (3.5), annotation = round(twowaypvalueCIIIP,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIIIC <- ROTresults %>% select(-CS) %>% filter(experiment == "three") %>% group_by(ID) %>% filter(all(c("PRE", "6H") %in% TIME & !is.na(CIIIC)) | !(any(TIME == "6H") & any(is.na(CIIIC)))) #make each set of data plotted in the right spot ROTresultsfilterCIIIC$TIME <- factor(ROTresultsfilterCIIIC$TIME, levels = c("PRE", "6H")) ROTresultsfilterCIIIC$interaction_ROT_TIME <- interaction(ROTresultsfilterCIIIC$ROT, ROTresultsfilterCIIIC$TIME, drop = TRUE, lex.order = TRUE) #get summary statistiCIIIC for bars on graph summary_statsCIIIC <- ROTresultsfilterCIIIC %>% group_by(interaction_ROT_TIME) %>% summarise(mean_value = mean(CIIIC), sd_value = sd(CIIIC, na.rm = TRUE)) # Performing two-way ANOVA anova_resultCIIIC <- aov(CIIIC ~ ROT * TIME + Error(ID/ROT), data = ROTresultsfilterCIIIC) anovaCIIIC <- summary(anova_resultCIIIC) anovaCIIIC <- as.data.frame(anovaCIIIC$`Error: Within`[[1]]) twowaypvalueCIIIC <- anovaCIIIC["ROT:TIME", "Pr(>F)"] #multiple comparisons from two-way ANOVA (-adjust if needed) multiplecomparisonsCIIIC <- emmeans(anova_resultCIIIC, ~ TIME | ROT) multiplecomparisonsCIIIC <- summary(pairs(multiplecomparisonsCIIIC), by = NULL, adjust = "none") ROTmultiplecomparisons <- multiplecomparisonsCIIIC$p.value[multiplecomparisonsCIIIC$ROT == "yes"] NAmultiplecomparisons <- multiplecomparisonsCIIIC$p.value[multiplecomparisonsCIIIC$ROT == "no"] #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIIIC <- max(ROTresultsfilterCIIIC$CIIIC) * 1.6 y_positionROTcomparisonCIIIC <- max(ROTresultsfilterCIIIC$CIIIC[ROTresultsfilterCIIIC$ROT == "yes"]) * 1.2 y_positionCLEANcomparisonCIIIC <- max(ROTresultsfilterCIIIC$CIIIC[ROTresultsfilterCIIIC$ROT == "no"]) * 1.2 y_positionanovaCIIIC <- max(ROTresultsfilterCIIIC$CIIIC) * 1.5 #plot of CIIIC exp3CIIIE <- ggplot(data=ROTresultsfilterCIIIC, aes(x=interaction_ROT_TIME, y=CIIIC)) + geom_bar(data = summary_statsCIIIC, aes(x=interaction_ROT_TIME, y = mean_value, fill = interaction_ROT_TIME), stat = "identity", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no.PRE" = "white", "no.6H" = "white", "yes.PRE" = "lightgrey", "yes.6H" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID,ROT)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIIIC, aes(x = interaction_ROT_TIME, y = CIIIC, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("no.PRE" = "PRE", "no.6H" = "POST", "yes.PRE"= "PRE", "yes.6H" = "POST")) + ggtitle("D. Complex I+II capacity") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionCLEANcomparisonCIIIC, xmin = c(1), xmax = (2), annotation = round(NAmultiplecomparisons,3), tip_length = 0, family = "sans", size = 1, textsize = 6) + geom_signif( y_position = y_positionROTcomparisonCIIIC, xmin = c(3), xmax = c(4), annotation = round(ROTmultiplecomparisons,3), tip_length = 0, family = "sans", size = 1, textsize = 6) + geom_signif( y_position = y_positionanovaCIIIC, xmin = c(1.5), xmax = (3.5), annotation = round(twowaypvalueCIIIC,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ``` #Experiment 4 ```{r} #filter out those who did not complete the measurements ROTresultsfilterCIL <- ROTresults %>% select(-CS) %>% filter(experiment == "four") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIL)) | !(any(TIME == "PRE") & any(is.na(CIL)))) #make each set of data plotted in the right spot ROTresultsfilterCIL$TIME <- factor(ROTresultsfilterCIL$TIME, levels = c("PRE", "3H")) #get summary statistics for bars on graph summary_statsCIL <- ROTresultsfilterCIL %>% group_by(TIME) %>% summarise(mean_value = mean(CIL), sd_value = sd(CIL, na.rm = TRUE)) data_PRE <- subset(ROTresultsfilterCIL, TIME == "PRE") data_3H <- subset(ROTresultsfilterCIL, TIME == "3H") merged_data <- merge(data_PRE, data_3H, by = "ID", suffixes = c(".PRE", ".3H")) t_test_result <- t.test(merged_data$CIL.PRE, merged_data$CIL.3H, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIL <- max(ROTresultsfilterCIL$CIL) * 1.6 y_positionROTcomparisonCIL <- max(ROTresultsfilterCIL$CIL) * 1.2 #plot of CIL exp4CIL <- ggplot(data=ROTresultsfilterCIL, aes(x=TIME, y=CIL)) + geom_bar(data = summary_statsCIL, aes(x=TIME, y = mean_value), stat = "identity", fill = "white", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIL, aes(x = TIME, y = CIL, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean", "3H" = "POST")) + ggtitle("A. ETF + CI leak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIL, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIP <- ROTresults %>% select(-CS) %>% filter(experiment == "four") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIP)) | !(any(TIME == "PRE") & any(is.na(CIP)))) #make each set of data plotted in the right spot ROTresultsfilterCIP$TIME <- factor(ROTresultsfilterCIP$TIME, levels = c("PRE", "3H")) #get summary statistiCIP for bars on graph summary_statsCIP <- ROTresultsfilterCIP %>% group_by(TIME) %>% summarise(mean_value = mean(CIP), sd_value = sd(CIP, na.rm = TRUE)) data_PRE <- subset(ROTresultsfilterCIP, TIME == "PRE") data_3H <- subset(ROTresultsfilterCIP, TIME == "3H") merged_data <- merge(data_PRE, data_3H, by = "ID", suffixes = c(".PRE", ".3H")) t_test_result <- t.test(merged_data$CIP.PRE, merged_data$CIP.3H, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIP <- max(ROTresultsfilterCIP$CIP) * 1.6 y_positionROTcomparisonCIP <- max(ROTresultsfilterCIP$CIP) * 1.2 #plot of CIP exp4CIP <- ggplot(data=ROTresultsfilterCIP, aes(x=TIME, y=CIP)) + geom_bar(data = summary_statsCIP, aes(x=TIME, y = mean_value), stat = "identity", fill = "white", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIP, aes(x = TIME, y = CIP, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean", "3H" = "POST")) + ggtitle("B. ETF + CI peak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIP, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIIIP <- ROTresults %>% select(-CS) %>% filter(experiment == "four") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIIIP)) | !(any(TIME == "PRE") & any(is.na(CIIIP)))) #make each set of data plotted in the right spot ROTresultsfilterCIIIP$TIME <- factor(ROTresultsfilterCIIIP$TIME, levels = c("PRE", "3H")) #get summary statistiCIIIP for bars on graph summary_statsCIIIP <- ROTresultsfilterCIIIP %>% group_by(TIME) %>% summarise(mean_value = mean(CIIIP), sd_value = sd(CIIIP, na.rm = TRUE)) data_PRE <- subset(ROTresultsfilterCIIIP, TIME == "PRE") data_3H <- subset(ROTresultsfilterCIIIP, TIME == "3H") merged_data <- merge(data_PRE, data_3H, by = "ID", suffixes = c(".PRE", ".3H")) t_test_result <- t.test(merged_data$CIIIP.PRE, merged_data$CIIIP.3H, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIIIP <- max(ROTresultsfilterCIIIP$CIIIP) * 1.6 y_positionROTcomparisonCIIIP <- max(ROTresultsfilterCIIIP$CIIIP) * 1.2 #plot of CIIIP exp4CIIIP <- ggplot(data=ROTresultsfilterCIIIP, aes(x=TIME, y=CIIIP)) + geom_bar(data = summary_statsCIIIP, aes(x=TIME, y = mean_value), stat = "identity", fill = "white", position = "identity", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIIIP, aes(x = TIME, y = CIIIP, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean", "3H" = "POST")) + ggtitle("C. ETF+CI+CII peak") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIIIP, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ROTresultsfilterCIIIC <- ROTresults %>% select(-CS) %>% filter(experiment == "four") %>% group_by(ID) %>% filter(all(c("PRE") %in% TIME & !is.na(CIIIC)) | !(any(TIME == "PRE") & any(is.na(CIIIC)))) #make each set of data plotted in the right spot ROTresultsfilterCIIIC$TIME <- factor(ROTresultsfilterCIIIC$TIME, levels = c("PRE", "3H")) #get summary statistiCIIIC for bars on graph summary_statsCIIIC <- ROTresultsfilterCIIIC %>% group_by(TIME) %>% summarise(mean_value = mean(CIIIC), sd_value = sd(CIIIC, na.rm = TRUE)) data_PRE <- subset(ROTresultsfilterCIIIC, TIME == "PRE") data_3H <- subset(ROTresultsfilterCIIIC, TIME == "3H") merged_data <- merge(data_PRE, data_3H, by = "ID", suffixes = c(".PRE", ".3H")) t_test_result <- t.test(merged_data$CIIIC.PRE, merged_data$CIIIC.3H, paired = TRUE) ttestpval <- t_test_result$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCIIIC <- max(ROTresultsfilterCIIIC$CIIIC) * 1.5 y_positionROTcomparisonCIIIC <- max(ROTresultsfilterCIIIC$CIIIC) * 1.15 #plot of CIIIC exp4CIIIE <- ggplot(data=ROTresultsfilterCIIIC, aes(x=TIME, y=CIIIC)) + geom_bar(data = summary_statsCIIIC, aes(x=TIME, y = mean_value), stat = "identity", position = "identity", fill = "white", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(aes(group=interaction(ID)), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCIIIC, aes(x = TIME, y = CIIIC, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression(atop("Mass-specific mitochondrial respiration", (pmol ~ O[2]*"•"*s^-1*"•mg of wet weight"^-1)))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean", "3H" = "POST")) + ggtitle("D. ETF+CI+CII capacity") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 12), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 250), breaks = seq(0, 250, by = 50)) + geom_signif( y_position = y_positionROTcomparisonCIIIC, xmin = c(1), xmax = (2), annotation = round(ttestpval,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ``` #Fold changes ```{r} FCrespiration1 <- ROTresults %>% dplyr::filter(experiment == "one") %>% gather(key = "MEASURE", value = "VALUE", CIP, CIIIP, CIIIC) %>% group_by(ID,MEASURE) %>% mutate(FC = (((VALUE[ROT == "yes"]) / (VALUE[ROT == "no"])) - 1)*100) %>% dplyr::filter(ROT == "yes") FCrespiration1summary <- FCrespiration1 %>% group_by(MEASURE) %>% summarise(mean_value = mean(FC, na.rm = TRUE), sd_value = sd(FC, na.rm = TRUE)) FCrespiration1$MEASURE <- factor(FCrespiration1$MEASURE, levels = c("CIL", "CIP", "CIIIP", "CIIIC")) FCexp1 <- ggplot(data=FCrespiration1, aes(x = MEASURE, y = FC)) + geom_hline(yintercept = 0, linetype = "dashed", color = "black", linewidth = 1) + geom_boxplot(color = "black", fill = "white", width = 0.575, linewidth = 1, outlier.shape = NA, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_jitter(aes(x = MEASURE, y = FC, fill = experiment), height = 0, width = 0.15, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y = expression("Difference (%)")) + scale_x_discrete(labels = c("CIP" = expression(CI[P]), "CIIIP" = expression(CI+II[P]), "CIIIC" = expression(CI+II[E]))) + ggtitle("E. Experiment 1: ROT vs. CLEAN") + theme_classic() + theme(axis.text.x = element_text(size = 16), axis.text.y = element_text(size = 16), axis.title.y = element_text(size = 14), plot.title = element_text(size = 16, hjust = 0.5), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits = c(-100, 20), breaks = seq(-100, 20, by = 20)) FCrespiration2 <- ROTresults %>% dplyr::filter(experiment == "two") %>% gather(key = "MEASURE", value = "VALUE", CIP, CIIIP, CIIIC) %>% group_by(ID,MEASURE) %>% mutate(FC = (((VALUE[ROT == "yes"]) / (VALUE[ROT == "no"])) - 1)*100) %>% dplyr::filter(ROT == "yes") FCrespiration2summary <- FCrespiration2 %>% group_by(MEASURE) %>% summarise(mean_value = mean(FC, na.rm = TRUE), sd_value = sd(FC, na.rm = TRUE)) FCrespiration2$MEASURE <- factor(FCrespiration2$MEASURE, levels = c("CIL", "CIP", "CIIIP", "CIIIC")) FCexp2 <- ggplot(data=FCrespiration2, aes(x = MEASURE, y = FC)) + geom_hline(yintercept = 0, linetype = "dashed", color = "black", linewidth = 1) + geom_boxplot(color = "black", fill = "white", width = 0.575, linewidth = 1, outlier.shape = NA, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_jitter(aes(x = MEASURE, y = FC, fill = experiment), height = 0, width = 0.15, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y = expression("Difference (%)")) + scale_x_discrete(labels = c("CIP" = expression(CI[P]), "CIIIP" = expression(CI+II[P]), "CIIIC" = expression(CI+II[E]))) + ggtitle("E. Experiment 2: ROT vs. CLEAN") + theme_classic() + theme(axis.text.x = element_text(size = 16), axis.text.y = element_text(size = 16), axis.title.y = element_text(size = 14), plot.title = element_text(size = 16, hjust = 0.5), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits = c(-80, 40), breaks = seq(-80, 40, by = 20)) FCrespiration3 <- ROTresults %>% dplyr::filter(experiment == "three") %>% gather(key = "MEASURE", value = "VALUE", CIP, CIIIP, CIIIC) %>% group_by(ID,MEASURE,ROT) %>% mutate(FC = (((VALUE[TIME == "6H"]) / (VALUE[TIME == "PRE"])) - 1)*100) %>% dplyr::filter(TIME == "PRE") FCrespiration3summary <- FCrespiration3 %>% group_by(MEASURE,ROT) %>% summarise(mean_value = mean(FC, na.rm = TRUE), sd_value = sd(FC, na.rm = TRUE)) FCrespiration3$MEASURE <- factor(FCrespiration3$MEASURE, levels = c("CIL", "CIP", "CIIIP", "CIIIC")) FCexp3 <- ggplot(data=FCrespiration3, aes(x = interaction(ROT,MEASURE), y = FC, fill = ROT)) + geom_hline(yintercept = 0, linetype = "dashed", color = "black", linewidth = 1) + geom_boxplot(color = "black", width = 0.575, linewidth = 1, outlier.shape = NA, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_jitter(aes(x = interaction(ROT,MEASURE), y = FC, fill = experiment), height = 0, width = 0.15, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y = expression("Difference (%)")) + scale_x_discrete(labels = c("no.CIL" = expression(CI[L]), "yes.CIL" = expression(CI[L]), "no.CIP" = expression(CI[P]), "yes.CIP" = expression(CI[P]), "no.CIIIP" = expression(CI+II[P]), "yes.CIIIP" = expression(CI+II[P]), "no.CIIIC" = expression(CI+II[E]), "yes.CIIIC" = expression(CI+II[E]))) + ggtitle("E. Experiment 3: POST vs. PRE") + theme_classic() + theme(axis.text.x = element_text(size = 13), axis.text.y = element_text(size = 16), axis.title.y = element_text(size = 14), plot.title = element_text(size = 16, hjust = 0.5), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits = c(-60, 60), breaks = seq(-60,60, by = 20)) FCrespiration4 <- ROTresults %>% dplyr::filter(experiment == "four") %>% gather(key = "MEASURE", value = "VALUE", CIP, CIIIP, CIIIC) %>% group_by(ID,MEASURE) %>% mutate(FC = (((VALUE[TIME == "3H"]) / (VALUE[TIME == "PRE"])) - 1)*100) %>% dplyr::filter(TIME == "PRE") FCrespiration4summary <- FCrespiration4 %>% group_by(MEASURE) %>% summarise(mean_value = mean(FC, na.rm = TRUE), sd_value = sd(FC, na.rm = TRUE)) FCrespiration4$MEASURE <- factor(FCrespiration4$MEASURE, levels = c("CIL", "CIP", "CIIIP", "CIIIC")) FCexp4 <- ggplot(data=FCrespiration4, aes(x = MEASURE, y = FC)) + geom_hline(yintercept = 0, linetype = "dashed", color = "black", linewidth = 1) + geom_boxplot(color = "black", fill = "white", width = 0.575, linewidth = 1, outlier.shape = NA, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_jitter(aes(x = MEASURE, y = FC, fill = experiment), height = 0, width = 0.15, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y = expression("Difference (%)")) + scale_x_discrete(labels = c("CIL" = expression(ETF+CI[L]), "CIP" = expression(ETF+CI[P]), "CIIIP" = expression(ETF+CI+CII[P]), "CIIIC" = expression(ETF+CI+CII[E]), "no.CIL" = expression(ETF+CI[L]), "yes.CIL" = expression(ETF+CI[L]), "no.CIP" = expression(ETF+CI[P]), "yes.CIP" = expression(ETF+CI[P]), "no.CIIIP" = expression(ETF+CI+CII[P]), "yes.CIIIP" = expression(ETF+CI+CII[P]), "no.CIIIC" = expression(ETF+CI+CII[E]), "yes.CIIIC" = expression(ETF+CI+CII[E]))) + ggtitle("E. Experiment 4: POST vs. PRE") + theme_classic() + theme(axis.text.x = element_text(size = 12), axis.text.y = element_text(size = 16), axis.title.y = element_text(size = 14), plot.title = element_text(size = 16, hjust = 0.5), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits = c(-100, 350), breaks = seq(-100, 350, by = 50)) ``` #Citrate synthase ```{r} ROTresultsfilterCS <- ROTresults %>% dplyr::filter(CHAMBERS =="ALL") %>% dplyr::filter(!is.na(CS)) #get summary statistiCS for bars on graph summary_statsCS <- ROTresultsfilterCS %>% group_by(experiment,TIME) %>% summarise(mean_value = mean(CS), sd_value = sd(CS, na.rm = TRUE)) data_PREexercise1 <- ROTresultsfilterCS %>% dplyr::filter(experiment == "three") %>% dplyr::filter(TIME == "PRE") data_6Hexercise1 <- ROTresultsfilterCS %>% dplyr::filter(TIME == "6H") data_PREexercise2 <- ROTresultsfilterCS %>% dplyr::filter(experiment == "four") %>% dplyr::filter(TIME == "PRE") data_3Hexercise2 <- ROTresultsfilterCS %>% dplyr::filter(experiment == "four") %>% dplyr::filter(TIME == "3H") merged_data1 <- merge(data_PREexercise1, data_6Hexercise1, by = "ID", suffixes = c(".PRE", ".6H")) t_test_result1 <- t.test(merged_data1$CS.PRE, merged_data1$CS.6H, paired = TRUE) ttestpval1 <- t_test_result1$p.value merged_data2 <- merge(data_PREexercise2, data_3Hexercise2, by = "ID", suffixes = c(".PRE", ".3H")) t_test_result2 <- t.test(merged_data2$CS.PRE, merged_data2$CS.3H, paired = TRUE) ttestpval2 <- t_test_result2$p.value #personalised positioning of significance bars and graphing elements for each measurement (just makes it easier and consistent) limitsCS <- max(ROTresultsfilterCS$CS) * 1.6 y_positionROTcomparisonCS <- max(ROTresultsfilterCS$CS) * 1.2 #make each set of data plotted in the right spot ROTresultsfilterCS$TIME <- factor(ROTresultsfilterCS$TIME, levels = c("PRE", "3H", "6H")) #plot of CS CSexp3 <- ggplot(data=ROTresultsfilterCS %>% dplyr::filter(experiment == "three"), aes(x=TIME, y=CS)) + geom_bar(data = summary_statsCS %>% dplyr::filter(experiment == "three"), aes(x=TIME, y = mean_value), stat = "identity", position = "identity", fill = "white", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(data=ROTresultsfilterCS %>% dplyr::filter(experiment == "three"), aes(group=ID), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCS %>% dplyr::filter(experiment == "three"), aes(x = TIME, y = CS, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression("Citrate synthase activity "(mol*"•"*h^-1*"•"*"kg protein"^-1))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean", "PRE" = "PRE", "6H" = "POST", "3H" = "POST")) + ggtitle("F. Experiment 3: CS activity") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 10), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 10), breaks = seq(0, 10, by = 2)) + geom_signif( y_position = y_positionROTcomparisonCS, xmin = c(1), xmax = (2), annotation = round(ttestpval2,3), tip_length = 0, family = "sans", size = 1, textsize = 6) CSexp4 <- ggplot(data=ROTresultsfilterCS %>% dplyr::filter(experiment == "four"), aes(x=TIME, y=CS)) + geom_bar(data = summary_statsCS %>% dplyr::filter(experiment == "four"), aes(x=TIME, y = mean_value), stat = "identity", position = "identity", fill = "white", color = "black", width = 0.5, linewidth = 1, show.legend = FALSE) + scale_fill_manual(values = c("no" = "white", "yes" = "lightgrey", "one" = "#E41A1C", "two" = "#377EB8", "three" = "#984EA3", "four" = "#4DAF4A"), name = "Presence of ROT", labels = c("No", "Yes")) + geom_line(data=ROTresultsfilterCS %>% dplyr::filter(experiment == "four"), aes(group=ID), colour = "black", size = 0.5) + geom_jitter(data = ROTresultsfilterCS %>% dplyr::filter(experiment == "four"), aes(x = TIME, y = CS, fill = experiment), height = 0, width = 0, size = 3, shape = 21, colour = "black", stroke = 1.5, show.legend = FALSE) + labs(y =expression("Citrate synthase activity "(mol*"•"*h^-1*"•"*"kg protein"^-1))) + scale_x_discrete(labels = c("yes" = "ROT", "no" = "Clean", "PRE" = "PRE", "6H" = "POST", "3H" = "POST")) + ggtitle("F. Experiment 4: CS activity") + theme_classic() + theme(axis.text.x = element_text(size = 12,), axis.text.y = element_text(size = 12), axis.title.y = element_text(size = 10), plot.title = element_text(size = 16, hjust=0.45), axis.title.x = element_blank()) + scale_y_continuous(expand = expansion(mult = c(0, 0)), limits= c(0, 10), breaks = seq(0, 10, by = 2)) + geom_signif( y_position = y_positionROTcomparisonCS, xmin = c(1), xmax = (2), annotation = round(ttestpval1,3), tip_length = 0, family = "sans", size = 1, textsize = 6) ``` #Export figures ```{r} Exp1 <- arrangeGrob(exp1CIL, exp1CIP, FCexp1, exp1CIIIP, exp1CIIIE, legendsex, ncol = 3, widths = c(3, 3, 3.2)) svg("Experiment1.svg", width = 12, height = 8) grid.draw(Exp1) dev.off() Exp2 <- arrangeGrob(exp2CIL, exp2CIP, FCexp2, exp2CIIIP, exp2CIIIE,legendsex, ncol = 3, widths=c(3,3,3)) svg("Experiment2.svg", width = 12, height = 8) grid.draw(Exp2) dev.off() combined_grobexp3 <- arrangeGrob(CSexp3, legendsex, ncol = 2) Exp3 <- grid.arrange(exp3CIL, exp3CIP, FCexp3, exp3CIIIP, exp3CIIIE, combined_grobexp3, ncol = 3, widths=c(3,3,4)) svg("Experiment3.svg", width = 12, height = 8) grid.draw(Exp3) dev.off() combined_grobexp4 <- arrangeGrob(CSexp4, legendsex2, ncol = 2) Exp4 <- grid.arrange(exp4CIL, exp4CIP, FCexp4, exp4CIIIP, exp4CIIIE, combined_grobexp4, ncol = 3, widths=c(3,3,4)) svg("Experiment4.svg", width = 12, height = 8) grid.draw(Exp4) dev.off() ```