Data visualization

The package forcis provides numerous functions to visualize FORCIS data. This vignette shows how to use and customize these functions.

Setup

First, let’s import the required packages.

library(forcis)
library(ggplot2)

Before proceeding, let’s download the latest version of the FORCIS database.

# Create a data/ folder ----
dir.create("data")

# Download latest version of the database ----
download_forcis_db(path = "data", version = NULL)

The vignette will use the plankton net data of the FORCIS database. Let’s import the latest release of the data.

# Import net data ----
net_data <- read_plankton_nets_data(path = "data")

NB: In this vignette, we use a subset of the plankton net data, not the whole dataset.

Spatial visualization

Creating a world map

The function geom_basemap() can be used to easily add World countries, oceans and bounding box to a ggplot2 object.

# World basemap ----
ggplot() +
  geom_basemap()

These layers come from the Natural Earth website and are defined in the Robinson projection.

Mapping FORCIS data

The function ggmap_data() can be used to plot FORCIS data on a World map. Let’s map the plankton nets data.

# Map raw net data ----
ggmap_data(net_data)

User can customize the aesthetic of the data:

# Customize map ----
ggmap_data(net_data, col = "#ff0000", fill = NA, shape = 21, size = 3)

This function works with the output of various functions available in the forcis package. For example:

# Filter net data ----
indian_net_data <- filter_by_ocean(net_data, ocean = "Indian Ocean")

# Map filtered data ----
ggmap_data(indian_net_data)

Note that the forcis package is pipe-friendly.

# Same as before, but w/ the pipe ----
net_data %>%
  filter_by_ocean(ocean = "Indian Ocean") %>%
  ggmap_data()

You can export this map with the function ggsave() of the package ggplot2.

# Map filtered data ----
indian_net_data_map <- net_data %>%
  filter_by_ocean(ocean = "Indian Ocean") %>%
  ggmap_data() +
  ggtitle("FORCIS net data - Indian Ocean")

# Save as PNG ----
ggsave(indian_net_data_map, 
       filename = "indian_net_data_map.png",
       width    = 20, 
       height   = 11, 
       units    = "cm", 
       dpi      = 300,
       scale    = 1.5,
       bg       = "white")

Temporal visualization

Plot data by year of sampling

The function plot_record_by_year() plots the number of records (y-axis) by year (x-axis).

# Plot number of records by year ----
plot_record_by_year(net_data)

Plot data by month of sampling

The function plot_record_by_month() plots the number of records (y-axis) by month (x-axis).

# Plot number of records by month ----
plot_record_by_month(net_data)

Plot data by season

The function plot_record_by_season() plots the number of records (y-axis) by season (x-axis).

# Plot number of records by season ----
plot_record_by_season(net_data)

Vertical visualization

Plot data by depth of sampling

The function plot_record_by_depth() plots the number of records (x-axis) by depth intervals (y-axis).

# Plot number of records by depth ----
plot_record_by_depth(net_data)