Goal: to calculate and visualize (not sure which graph type is best) oogonia per meter. This is calculated: (average oogonia/#conceptacles) * (#conceptacles/receptacles)=average oogonia/receptacle –> (average oogonia/receptacle) * (1receptacle/2 reproductive apice)= oogonia/reproductive apice –> (oogonia/reproductive apice) * (reproductive apice/ large thallus density)=oogonia per large thallus –>take the average of (oogonia/large thallus) (3 values to 1 value per month) –> average(oogonia/large thallus) * (large thallus/0.25m^2) =oogonia/m^2
Setting up
rm(list=ls())
library(ggplot2)
library(ggpubr)
library(scales)
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(readr)
##
## Attaching package: 'readr'
## The following object is masked from 'package:scales':
##
## col_factor
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(chron)
##
## Attaching package: 'chron'
## The following objects are masked from 'package:lubridate':
##
## days, hours, minutes, seconds, years
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(dplyr)
Data
alldata<-
read.csv(
"https://raw.githubusercontent.com/Cmwegener/thesis/master/data/field/CB_field_data_plus.csv",
header = TRUE
)
alldata$date<-as.Date(alldata$date, format = c("%Y-%m-%d"))
I have oogonia per thallus. I need to take the average of these values per month persite before I continue I’m going to subset by site
HS<-subset(alldata, alldata$site.old == "HS")
BY<-subset(alldata, alldata$site.old == "BY")
ND<-subset(alldata, alldata$site.old == "ND")
PC<-subset(alldata, alldata$site.old == "PC")
Calculate the average oogonia per thallus by month
HS2<-aggregate(oo.per.thalli ~ date, HS, mean)
BY2<-aggregate(oo.per.thalli ~ date, BY, mean)
ND2<-aggregate(oo.per.thalli ~ date, ND, mean)
PC2<-aggregate(oo.per.thalli ~ date, PC, mean)
Change column name to avg_ooperthallus
HS2<-rename(HS2,avg_oo.per.thalli = oo.per.thalli)
BY2<-rename(BY2,avg_oo.per.thalli = oo.per.thalli)
ND2<-rename(ND2,avg_oo.per.thalli = oo.per.thalli)
PC2<-rename(PC2,avg_oo.per.thalli = oo.per.thalli)
Insert the calculated values in site2 back into the site df
HS<-merge(HS, HS2[, c("date", "avg_oo.per.thalli")], by="date")
BY<-merge(BY, BY2[, c("date", "avg_oo.per.thalli")], by="date")
ND<-merge(ND, ND2[, c("date", "avg_oo.per.thalli")], by="date")
PC<-merge(PC, PC2[, c("date", "avg_oo.per.thalli")], by="date")
Now I have the average oogonia per thallus. Multiply it by no.fun.large and divide it by 0.25(0.25m this is the size of the quadrate used for sampling)
HS$oo.per.meter<-HS$avg_oo.per.thalli*(HS$no.large.fuc.q*.25)
BY$oo.per.meter<-BY$avg_oo.per.thalli*(BY$no.large.fuc.q*.25)
ND$oo.per.meter<-ND$avg_oo.per.thalli*(ND$no.large.fuc.q*.25)
PC$oo.per.meter<-PC$avg_oo.per.thalli*(PC$no.large.fuc.q*.25)
Graph these new dataframes
a<-ggplot(data = HS,
mapping = aes(x = date, y = oo.per.meter, group = date)) + geom_boxplot() + ggtitle("Horseshoe Bay") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + scale_y_continuous(labels = comma) + theme(
plot.title = element_text(size = 12, face = "plain"),
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 12),
axis.title = element_text(size = 12, face = "plain"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
b<-ggplot(data = BY,
mapping = aes(x = date, y = oo.per.meter, group = date)) + geom_boxplot() + ggtitle("Brickyard Park") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + scale_y_continuous(labels = comma) + theme(
plot.title = element_text(size = 12, face = "plain"),
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 12),
axis.title = element_text(size = 12, face = "plain"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
c<-ggplot(data = ND,
mapping = aes(x = date, y = oo.per.meter, group = date)) + geom_boxplot() + ggtitle("Point Chauncy") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + scale_y_continuous(labels = comma) + theme(
plot.title = element_text(size = 12, face = "plain"),
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 12),
axis.title = element_text(size = 12, face = "plain"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
d<-ggplot(data = PC,
mapping = aes(x = date, y = oo.per.meter, group = date)) + geom_boxplot() + ggtitle("Paradise Cay") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + scale_y_continuous(labels = comma) + theme(
plot.title = element_text(size = 12, face = "plain"),
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 12),
axis.title = element_text(size = 12, face = "plain"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
Graph
#stack
oo.per.m.figure<-ggarrange(d,c,b,a, ncol = 4, nrow = 1)
## Warning: Removed 10 rows containing non-finite values (stat_boxplot).
## Warning: Removed 10 rows containing non-finite values (stat_boxplot).
## Warning: Removed 10 rows containing non-finite values (stat_boxplot).
## Warning: Removed 10 rows containing non-finite values (stat_boxplot).
#Annotate
annotate_figure(oo.per.m.figure,
top = text_grob("Oogonia per m^2", color = "black", face = "plain", size = 14), left = text_grob("Oogonia per meter^2", color = "black", rot = 90, size=12))