First time asking a question so if I miss any important details, apologises in advance. I'm still new to R, but as I learn more I'll attempt to contribute myself. In the meantime hopefully, someone can help.
I have a for loop that generates multiple plots from my data. The plots themselves are perfect however, I'm struggling to add say plot 1 to 4 to a single image.
If I was using plot()
I could use par(mfrow - c(1,2,3,4)
but as I'm adding multiple data frames to each plot i.e. multiple geom_point()
in ggplot I don't think I can do that.
My data looks like this but is much longer, multiple data points for line N01, N02 etc. for which I am generating a new plot with the data from N01, N02 etc. with the WT1 and WT2 points overlayed.
I think I may need to save each iteration of the loop into new variables then use multiplot()
to get my desired result.
If I come up with the answer I'll post but if someone beats me to it, thank you in advance.
N01 N01.01 0.0 7693
2 N01 N01.02 2.0 3404
3 N01 N01.03 2.0 3404
4 N01 N01.04 1.0 6395
5 N01 N01.05 1.0 5171
6 N01 N01.06 2.0 6001
7 N01 N01.07 1.0 6671
8 N01 N01.08 1.5 6700
9 N01 N01.09 1.0 9060
10 N04 N04.01 2.0 6857
11 N04 N04.02 4.0 10378
setwd ("C:/Users/HP/Desktop/Studio R/Patty")
df <- read.csv("Data/Raw V2.csv")
#need to create a new data frame with a new coluum taking information from another column
df2 <- split(df, df$ï..ID)
x1 <- df2$WT1[,3:4] #new var for the wild type that wants plotting on all the charts
x2 <- df2$WT6[,3:4]
plot_list <- list() #creates an empty list to save the plots in
for (i in 1:length(df2)){
z1 <- df2[[i]][,3:4]#new var from the data fram i amount of times using data from column 3 to 4
title <- (df2[[i]][,1][1]) #used later on to add the title variable in the legend
par(mar=c(4,4,1,1), mfrow=c(2,2))
f <-
ggplot(data=z1, aes(x=copies, y=leaf_area)) +
geom_point(aes(col="black"))+ #creates the plots of i
geom_point(data=x1, aes(col="blue"))+ #adds the wt to all plots, aes neeeded to create legend
geom_point(data=x2, aes(col="red"))+
theme(panel.background = element_blank(), axis.line = element_line(colour = "black"),
panel.grid.minor = element_line())+
scale_color_identity(name = "", breaks = c("black", "blue", "red"), labels = c(paste0("(",title,")"),("(WT1)"),("(WT6)")), guide = "legend")+
theme(legend.position = c(0.95, 0.95), legend.justification = c("right", "top"), legend.direction = "horizontal")+
scale_x_continuous(limits = c(0, 4)) + #standarsises the axis
scale_y_continuous(limits = c(0, 12000)) +
xlab(bquote("Number of Inserts"))+
ylab(bquote("Leaf Area (mm'^2')"))+
ggtitle(df2[[i]][,1][1])
plot_list[[i]] <- f
list2env(plot_list[[i]], envir = globalenv()) #send the list to the global environment
}
In an ideal world this would have worked:
for (i in plot_list){
par(mfrow = c(2,2))
plot(i)
}