Boxplot with total, large thalli, and small thalli density at my four field sites.
Text size is for presentation
rm(list=ls())
library(ggplot2)
library(ggpubr)
library(scales)
library(lubridate)
library(readr)
library(dplyr)
library(chron)
library(plotly)
library(dplyr)
library(wesanderson)
## Warning: package 'wesanderson' was built under R version 4.0.4
Setting up data
#read in dat
alldata<-read.csv(
"https://raw.githubusercontent.com/Cmwegener/thesis/master/data/field/CB_field_data_plus.csv",
header = TRUE
)
#Format data
alldata$date<-as.Date(alldata$date, format = c("%m/%d/%Y"))
alldata$no.fuc.q<-as.integer(alldata$no.fuc.q)
alldata$no.large.fuc.q<-as.integer(alldata$no.large.fuc.q)
alldata$no.small.fuc.q<-as.integer(alldata$no.small.fuc.q)
I’ve been subsetting the data by site before graphing
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")
Graph total density
HStot <-
ggplot(data = HS,
mapping = aes(x = date, y = no.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Horseshoe Bay") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
BYtot <-
ggplot(data = BY,
mapping = aes(x = date, y = no.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Brickyard Park") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
NDtot <-
ggplot(data = ND,
mapping = aes(x = date, y = no.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Point Chauncy") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
PCtot <-
ggplot(data = PC,
mapping = aes(x = date, y = no.fuc.q, group = date))+
geom_boxplot(alpha=0.3) +
ggtitle("Paradise Cay")+
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") +
theme(plot.title = element_text(size = 20, face = "plain")) + geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
)+
ylab(" ") + xlab(" ") +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
total <- ggarrange(PCtot, NDtot, BYtot, HStot, ncol = 4, nrow = 1)
## Warning: Removed 20 rows containing non-finite values (stat_boxplot).
## Warning: Removed 20 rows containing missing values (geom_point).
## Warning: Removed 10 rows containing non-finite values (stat_boxplot).
## Warning: Removed 10 rows containing missing values (geom_point).
total.fig <- annotate_figure(
total,
left = text_grob(
"Total Density (Thalli/0.25m^2)",
color = "black",
rot = 90,
face="bold",
size = 25
)
)
total.fig
Graph large thalli
HSl <-
ggplot(data = HS,
mapping = aes(x = date, y = no.large.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Horseshoe Bay") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
BYl <-
ggplot(data = BY,
mapping = aes(x = date, y = no.large.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Brickyard Park") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
NDl <-
ggplot(data = ND,
mapping = aes(x = date, y = no.large.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Point Chauncy") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
PCl <-
ggplot(data = PC,
mapping = aes(x = date, y = no.large.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Paradise Cay") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
large<-ggarrange(PCl, NDl, BYl, HSl, ncol = 4, nrow = 1)
## Warning: Removed 30 rows containing non-finite values (stat_boxplot).
## Warning: Removed 30 rows containing missing values (geom_point).
## Warning: Removed 20 rows containing non-finite values (stat_boxplot).
## Warning: Removed 20 rows containing missing values (geom_point).
## Warning: Removed 10 rows containing non-finite values (stat_boxplot).
## Warning: Removed 10 rows containing missing values (geom_point).
## Warning: Removed 10 rows containing non-finite values (stat_boxplot).
## Warning: Removed 10 rows containing missing values (geom_point).
large.fig <- annotate_figure(
large,
left = text_grob(
"Large Thalli Density (Thalli/0.25m^2)",
color = "black",
rot = 90,
face="bold",
size = 25
)
)
large.fig
Graph small thalli
HSs <-
ggplot(data = HS,
mapping = aes(x = date, y = no.small.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Horseshoe Bay") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
BYs <-
ggplot(data = BY,
mapping = aes(x = date, y = no.small.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Brickyard Park") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
NDs <-
ggplot(data = ND,
mapping = aes(x = date, y = no.small.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Point Chauncy") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
PCs <-
ggplot(data = PC,
mapping = aes(x = date, y = no.small.fuc.q, group = date)) + geom_boxplot(alpha=0.3) + ggtitle("Paradise Cay") +
scale_x_date(date_breaks = "2 month", date_labels = "%b %Y") + theme(plot.title = element_text(size = 20, face = "plain")) +
geom_jitter(position=position_jitter(0.5),
size=1,
alpha = 0.3)+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
small<-ggarrange(PCs, NDs, BYs, HSs, ncol = 4, nrow = 1)
## Warning: Removed 30 rows containing non-finite values (stat_boxplot).
## Warning: Removed 30 rows containing missing values (geom_point).
## Warning: Removed 20 rows containing non-finite values (stat_boxplot).
## Warning: Removed 20 rows containing missing values (geom_point).
## Warning: Removed 10 rows containing non-finite values (stat_boxplot).
## Warning: Removed 10 rows containing missing values (geom_point).
## Warning: Removed 10 rows containing non-finite values (stat_boxplot).
## Warning: Removed 10 rows containing missing values (geom_point).
small.fig <- annotate_figure(
small,
left = text_grob(
"Small Thalli Density (Thalli/0.25m^2)",
color = "black",
rot = 90,
face="bold",
size = 25
)
)
small.fig
Put it all together
ggarrange(total.fig, large.fig, small.fig, ncol = 1, nrow = 3)
NOTE: Horseshoe Bay has a different y-axis scale for each graph so that you can see the pattern
####Percent density (large vs small thalli)####
Df in the wrong format to do stacked percent table. Going to convert. Converting: https://stackoverflow.com/questions/29719701/stacked-bar-plot-with-percentages-in-separate-columns Graph: https://www.r-graph-gallery.com/48-grouped-barplot-with-ggplot2.html
#selected needed columns
HS.density<-data.frame(HS$date, HS$no.large.fuc.q, HS$no.small.fuc.q)
BY.density<-data.frame(BY$date, BY$no.large.fuc.q, BY$no.small.fuc.q)
ND.density<-data.frame(ND$date, ND$no.large.fuc.q, ND$no.small.fuc.q)
PC.density<-data.frame(PC$date, PC$no.large.fuc.q, PC$no.small.fuc.q)
#reshape df
library(reshape2)
HS.long<- melt(HS.density, id = "HS.date")
BY.long<- melt(BY.density, id = "BY.date")
ND.long<- melt(ND.density, id = "ND.date")
PC.long<- melt(PC.density, id = "PC.date")
#remame columns
names(HS.long)[1] <- "date"
names(HS.long)[2] <- "thalli.size"
names(HS.long)[3] <- "density"
names(BY.long)[1] <- "date"
names(BY.long)[2] <- "thalli.size"
names(BY.long)[3] <- "density"
names(ND.long)[1] <- "date"
names(ND.long)[2] <- "thalli.size"
names(ND.long)[3] <- "density"
names(PC.long)[1] <- "date"
names(PC.long)[2] <- "thalli.size"
names(PC.long)[3] <- "density"
#test graph- basic
ggplot(HS.long, aes(x = date, y = density, fill = thalli.size)) +
geom_bar(position="fill", stat = "identity")
## Warning: Removed 20 rows containing missing values (position_stack).
Graph
HS.graph <-
ggplot(data = HS.long,
mapping = aes(x = date, y = density, fill = thalli.size)) +
geom_bar(position = "fill", stat = "identity") +
scale_fill_manual(values=wes_palette(n=2, name="Moonrise1"))+
scale_y_continuous(labels = scales::percent)+
ggtitle("Horseshoe Bay") +
scale_x_date(date_breaks = "2 month",
date_labels = "%b %Y") +
theme(plot.title = element_text(size = 20, face = "plain")) +
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
BY.graph <-
ggplot(data = BY.long,
mapping = aes(x = date,
y = density,
fill=thalli.size)) +
geom_bar(position="fill",
stat="identity") +
scale_fill_manual(values=wes_palette(n=2, name="Moonrise1"))+
scale_y_continuous(labels = scales::percent)+
ggtitle("Brickyard Park") +
scale_x_date(date_breaks = "2 month",
date_labels = "%b %Y") +
theme(plot.title = element_text(size = 20, face = "plain"))+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
ND.graph <-
ggplot(data = ND.long,
mapping = aes(x = date,
y = density,
fill=thalli.size)) +
geom_bar(position="fill",
stat="identity") +
scale_fill_manual(values=wes_palette(n=2, name="Moonrise1"))+
scale_y_continuous(labels = scales::percent)+
ggtitle("Point Chauncy") +
scale_x_date(date_breaks = "2 month",
date_labels = "%b %Y") +
theme(plot.title = element_text(size = 20, face = "plain"))+
theme(
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
PC.graph <-
ggplot(data = PC.long,
mapping = aes(x = date,
y = density,
fill=thalli.size)) +
geom_bar(position="fill",
stat="identity") +
scale_fill_manual(values=wes_palette(n=2, name="Moonrise1"),
name="Thalli Size",
breaks=c("PC.no.large.fuc.q", "PC.no.small.fuc.q"),
labels=c("Large Thalli", "Small Thalli"))+
scale_y_continuous(labels = scales::percent)+
ggtitle("Paradise Cay") +
scale_x_date(date_breaks = "2 month",
date_labels = "%b %Y") +
theme(plot.title = element_text(size = 20, face = "plain"))+
theme(
legend.title = element_text(size = 15, face = "bold"),
legend.position="bottom",
axis.text.x = element_text(angle = 60, hjust = 1),
axis.text = element_text(size = 20),
axis.title = element_text(size = 20, face = "plain")
) + ylab(" ") + xlab(" ") + theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
freq<-ggarrange(PC.graph, ND.graph, BY.graph, HS.graph, ncol = 4, nrow = 1, common.legend = TRUE)
## Warning: Removed 60 rows containing missing values (position_stack).
## Warning: Removed 60 rows containing missing values (position_stack).
## Warning: Removed 40 rows containing missing values (position_stack).
## Warning: Removed 20 rows containing missing values (position_stack).
## Warning: Removed 20 rows containing missing values (position_stack).
freq.fig <- annotate_figure(
freq,
left = text_grob(
"Percent of total density",
color = "black",
rot = 90,
face="bold",
size = 25
)
)
freq.fig
Don’t like the colors- try black and white
Legend needs work
Add horizontal line at 50%