I am using the R programming language. I am trying to arrange "plot1, plot2, plot3, plot4" on the same page:
library(kohonen) #fitting SOMs
library(ggplot2) #plots
library(GGally) #plots
library(RColorBrewer) #colors, using predefined palettes
iris_complete <-iris[complete.cases(iris),] #only complete cases... the iris dataset floats around in the sky with diamonds.
iris_unique <- unique(iris_complete) # Remove duplicates
#scale data
iris.sc = scale(iris_unique[, 1:4])
#build grid
iris.grid = somgrid(xdim = 10, ydim=10, topo="hexagonal", toroidal = TRUE)
# build model
set.seed(33) #for reproducability
iris.som <- som(iris.sc, grid=iris.grid, rlen=700, alpha=c(0.05,0.01), keep.data = TRUE)
###plots
var <- 1 #define the variable to plot
plot1 = plot(iris.som, type = "property", property = getCodes(iris.som)[,var], main=colnames(getCodes(iris.som))[var], palette.name=terrain.colors)
var <- 2 #define the variable to plot
plot2 = plot(iris.som, type = "property", property = getCodes(iris.som)[,var], main=colnames(getCodes(iris.som))[var], palette.name=terrain.colors)
var <- 3 #define the variable to plot
plot3 - plot(iris.som, type = "property", property = getCodes(iris.som)[,var], main=colnames(getCodes(iris.som))[var], palette.name=terrain.colors)
var <- 4 #define the variable to plot
plot4 = plot(iris.som, type = "property", property = getCodes(iris.som)[,var], main=colnames(getCodes(iris.som))[var], palette.name=terrain.colors)
g1 <- grid.arrange(plot1, nrow = 1)
g2 <- grid.arrange(plot2, nrow = 1)
g3 <- grid.arrange(plot3, nrow = 1)
g4 <- grid.arrange(plot4, nrow = 1)
grid.arrange(g1, g2, g3, g4, ncol = 1)
However, when I use the "grid.arrange()" function, I get an error : Error in gList - only 'grobs' allowed in gList"
Right now, I am considering running each of the "plot" statements individually, and manually joining them all using MS Paint. Is there a better way to do this?
Thanks
question from:
https://stackoverflow.com/questions/65832784/r-arranging-multiple-plots-together-using-gridextra