I've looked these questions 1, 2 and 3, but they appear to address a different problem and not relevant to my case. Usually, i use this code to produce nice multiple graphs that works for me using this code
library(ggplot2)
library(maptools)
library (rgdal)
library (rgeos)
library(export)
library(ReporteRs)
library(ReporteRsjars)
library(rtable)
library(xtable)
library(taRifx)
library(devtools)
library(tidyr)
library(dplyr)
#Tidying up data from wide to long format
plots <- read.delim("withoutPG3,23,24.txt")
head(plots,5)
################ SUBSETTING DATA INTO 10 MANAGABLE PLOTS ###########################
###### PLOT 1
plot1<- plots %>%
select(1:5,Ammonia, Asterorotalia, Bolivina, Bulimina, Cancris, Challengerella, Cibicides, Elphidium, Hanzawaia, Nonion)%>%
gather(genus,`Relative Abundance (%)`, Ammonia, Asterorotalia, Bolivina, Bulimina, Cancris, Challengerella, Cibicides, Elphidium, Hanzawaia, Nonion)
############################################################################################################
## Loading the Persian Gulf shape fill referred to as iho
PG <- readShapePoly("iho.shp")
PG <- readOGR(dsn = ".", "iho")
# convert to dataframe
AG <- fortify(PG)
#####################################################################################################
background=ggplot()+
geom_polygon(data=AG, aes(long, lat, group = group, fill = hole),
colour = alpha("black", 0.3), show.legend = FALSE)+
scale_fill_manual(values = c("grey80", "white")) +
#######
geom_point(data=plot1, aes(x=Longitude, y=Latitude, size=`Relative Abundance (%)`,
color="Red"))+
scale_size_area("`Relative Abundance (%)`")+
facet_wrap(~genus, ncol=4)+
scale_x_continuous("", breaks=NULL) +
scale_y_continuous("", breaks=NULL)+
annotate(geom="text", x=53, y=28,label="Iran",color="black", size = 3)+
annotate(geom="text", x=48.5, y=26,label="Saudi \nArabia",color="black", size = 3)+
annotate(geom="text", x=50.6, y=26,label="Bahrain",color="black", size = 3)+
annotate(geom="text", x=51.2, y=25.3,label="Qatar",color="black", size = 3)+
annotate(geom="text", x=56, y=24.5,label="United Arab \nEmirates",color="black", size = 3)+
annotate(geom="text", x=57, y=25.7,label="Strait of \nHormuz",color="black", size = 3)
#
#
background=background +theme_bw()+
ggtitle("PERSIAN GULF")
###
background=background +
theme(plot.title = element_text(face="bold", size=15, vjust=1),
axis.title.y = element_text(face="bold", size=15),
axis.title.x =element_blank(),
axis.text.x = element_blank(),
legend.position = c(.7, .15),
#legend.position = "top",
legend.title = element_text(colour="black", size=15, face="bold"),
legend.text = element_text(colour="black", size=10, face="bold"))
#
background
graph2ppt(file="finalplots.pptx",aspectr=1.3)
The graph2ppt(file="finalplots.pptx",aspectr=1.3)
is what i use to export to ppt.
I will like to produce individual plots for over 500 variables e.g Ammonia, Asterorotalia (see e.g from the attached image) and save individual file using the variable names or export to ppt. I've tried the following code, but nothing is displayed
###
foram.graph <- function(plot1, na.rm = TRUE, ...){
# create list of genus in data to loop over
foram_list <- unique(plot1$genus)
# create for loop to produce ggplot2 graphs
for (i in seq_along(foram_list)) {
# create plot for each genus in plot1
forams <- ggplot()+
geom_polygon(data=AG, aes(long, lat, group = group, fill = hole),
colour = alpha("black", 0.3), show.legend = FALSE)+
scale_fill_manual(values = c("grey80", "white")) +
########
geom_point(subset(df, plot1$genus==foram_list[i]),
aes(x=Longitude, y=Latitude, size=`Relative Abundance (%)`,
color="Red")) +
scale_size_area("`Relative Abundance (%)`")+
scale_x_continuous("", breaks=NULL) +
scale_y_continuous("", breaks=NULL)+
theme_minimal() +
ggtitle(paste(foram_list[i]))
print(forams)
}
}
below is dput(head(plot1, 10)) and the shapefile is available here iho shape file
structure(list(Labels = structure(c(1L, 12L, 25L, 27L, 28L, 29L,
2L, 3L, 4L, 5L), .Label = c("PG 1", "PG 10", "PG 11", "PG 12",
"PG 13", "PG 14", "PG 15", "PG 16", "PG 17", "PG 18", "PG 19",
"PG 2", "PG 20", "PG 21", "PG 22", "PG 25", "PG 26", "PG 27",
"PG 28", "PG 29", "PG 30", "PG 31", "PG 32", "PG 4", "PG 5",
"PG 6", "PG 7", "PG 8", "PG 9"), class = "factor"), Latitude = c(26.54,
26.54, 26.4503, 26.3333, 25.8333, 26.4333, 26.1333, 25.975, 26.635,
26.3), Longitude = c(56.9503, 57, 55.5, 55.5, 54.9667, 54.4833,
54.4833, 54.4833, 53.9667, 53.9842), Depth = c(0L, 0L, 21L, 23L,
22L, 18L, 24L, 24L, 28L, 23L), Region = structure(c(2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("North", "South"), class = "factor"),
genus = c("Ammonia", "Ammonia", "Ammonia", "Ammonia", "Ammonia",
"Ammonia", "Ammonia", "Ammonia", "Ammonia", "Ammonia"), `Relative Abundance (%)` = c(1.79,
27.06, 8, 19.65, 3.86, 4.85, 0.35, 1.01, 0.92, 12.24)), .Names = c("Labels",
"Latitude", "Longitude", "Depth", "Region", "genus", "Relative Abundance (%)"
), na.action = structure(c(3L, 5L, 61L, 62L, 63L, 64L, 65L, 66L,
70L, 72L, 77L, 83L, 85L, 86L, 87L, 88L, 89L, 90L, 92L, 93L, 94L,
95L, 96L, 101L, 102L, 106L, 116L, 119L, 122L, 123L, 134L, 135L,
136L, 141L, 143L, 146L, 147L, 149L, 151L, 153L, 155L, 156L, 158L,
159L, 160L, 161L, 163L, 168L, 169L, 171L, 172L, 173L, 175L, 176L,
178L, 186L, 191L, 192L, 193L, 195L, 196L, 197L, 198L, 199L, 201L,
202L, 208L, 210L, 213L, 215L, 220L, 233L, 234L, 238L, 239L, 242L,
244L, 245L, 246L, 248L, 250L, 257L, 259L, 260L, 265L, 266L, 268L,
269L, 272L, 274L, 275L, 277L, 278L, 281L, 282L), .Names = c("3",
"5", "61", "62", "63", "64", "65", "66", "70", "72", "77", "83",
"85", "86", "87", "88", "89", "90", "92", "93", "94", "95", "96",
"101", "102", "106", "116", "119", "122", "123", "134", "135",
"136", "141", "143", "146", "147", "149", "151", "153", "155",
"156", "158", "159", "160", "161", "163", "168", "169", "171",
"172", "173", "175", "176", "178", "186", "191", "192", "193",
"195", "196", "197", "198", "199", "201", "202", "208", "210",
"213", "215", "220", "233", "234", "238", "239", "242", "244",
"245", "246", "248", "250", "257", "259", "260", "265", "266",
"268", "269", "272", "274", "275", "277", "278", "281", "282"
), class = "omit"), row.names = c(1L, 2L, 4L, 6L, 7L, 8L, 9L,
10L, 11L, 12L), class = "data.frame")
First, let me apologize for the lengthy post, I wanted to provide a reproducible example as much as possible. I'll appreciate any help I can get on this. Thank You