Skip to content

BedeFfinian/Utilities.Package

Repository files navigation

Utilities.Package

Primarily, Utilities.Package is a package of simple utility features for personalisable palettes and themes for ggplot2 plots.

Installation

You can install the development version of Utilities.Package from Github with:

install.packages("pak")

pak::pak("bedeffinian/Utilities.package")

Features

Before showing the features we need to gather some data to be able to look at the functions of the package. To do this we will first of all load some packages (all available from CRAN apart from Utilities.Package).

Data Creation

library(marmap)
library(tidyverse)
library(sf)
library(Utilities.Package)
library(mapdata)
library(maps)
library(palmerpenguins)
library(patchwork)

Once the packages are loaded we can then start getting our data ready for the examples. For some example data we will grab the Palmer Penguins data then also get some bathymetry data from the marmap package that extracts bathymetry from the NOAA databases.

# get palmer penguins df
data(package = 'palmerpenguins')


df<-penguins

# get bathymetry data

b <- getNOAA.bathy(lon1 = 160, lon2 = 180, lat1 = -28.5, lat2 = -49.2,
                  resolution = 5)

# convert bathymetry matrix to spatial object

B <- as.SpatialGridDataFrame(b)

# convert spatial object to special features

sf_bathy <- st_as_sf(B) %>%
  dplyr::filter(layer<0.1)

# get land outline 

nz <- map_data("nz")

Simple data cleaning

However, brilliant your data are there will often be NA values. Sometimes this is fine but specific columns may be used for analysis later and inclusion of NA’s might therefore be a nuisance. We can use the completeFun(), where we define the dataframe to use and then the column/s we want to check to remove rows if they contain NAs.

head(df)
#> # A tibble: 6 × 8
#>   species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
#>   <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
#> 1 Adelie  Torgersen           39.1          18.7               181        3750
#> 2 Adelie  Torgersen           39.5          17.4               186        3800
#> 3 Adelie  Torgersen           40.3          18                 195        3250
#> 4 Adelie  Torgersen           NA            NA                  NA          NA
#> 5 Adelie  Torgersen           36.7          19.3               193        3450
#> 6 Adelie  Torgersen           39.3          20.6               190        3650
#> # ℹ 2 more variables: sex <fct>, year <int>

# remove rows where sex is NA 

df2<-Utilities.Package::completeFun(df,"sex")

head(df2)
#> # A tibble: 6 × 8
#>   species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
#>   <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
#> 1 Adelie  Torgersen           39.1          18.7               181        3750
#> 2 Adelie  Torgersen           39.5          17.4               186        3800
#> 3 Adelie  Torgersen           40.3          18                 195        3250
#> 4 Adelie  Torgersen           36.7          19.3               193        3450
#> 5 Adelie  Torgersen           39.3          20.6               190        3650
#> 6 Adelie  Torgersen           38.9          17.8               181        3625
#> # ℹ 2 more variables: sex <fct>, year <int>

Data Visualisation

In Utilities.Package we have many functions to make figures look nicer (we think). Lets do a basic plot.

ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="Species")
#> `geom_smooth()` using formula = 'y ~ x'

Now lets make the theme look better.

ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="Species")+
  Utilities.Package::theme_Bede()
#> `geom_smooth()` using formula = 'y ~ x'

That is maybe a bit too bright….

ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="Species")+
  Utilities.Package::theme_Mareta_Dark()
#> `geom_smooth()` using formula = 'y ~ x'

Okay that is better but lets make the colours nicer.

colourplot1<-ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="main",
       title="Main Palette")+
  Utilities.Package::theme_Mareta_Dark()+
  Utilities.Package::scale_colour_Bede("main")

colourplot2<-ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="mixed",
       title="Mixed Palette")+
  Utilities.Package::theme_Mareta_Dark()+
  Utilities.Package::scale_colour_Bede("mixed")

colourplot3<-ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="cool",
       title="Cool Palette")+
  Utilities.Package::theme_Mareta_Dark()+
  Utilities.Package::scale_colour_Bede("cool")

colourplot4<-ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="hot",
       title="Hot Palette")+
  Utilities.Package::theme_Bede()+
  Utilities.Package::scale_colour_Bede("hot")

colourplot5<-ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="PhD",
       title="PhD Palette")+
  Utilities.Package::theme_Bede()+
  Utilities.Package::scale_colour_Bede("PhD")

colourplot6<-ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="Orkney",
       title="Orkney Palette")+
  Utilities.Package::theme_Bede()+
  Utilities.Package::scale_colour_Bede("Orkney")

colourplot7<-ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="SAS",
       title="SAS Palette")+
  Utilities.Package::theme_Bede_Map()+
  Utilities.Package::scale_colour_Bede("SAS")

colourplot8<-ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="AnnePort",
       title="AnnePort Palette")+
  Utilities.Package::theme_Bede_Map()+
  Utilities.Package::scale_colour_Bede("AnnePort")

colourplot9<-ggplot(data = df2, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(colour = species),
             size = 1)+
  geom_smooth(aes(colour=species),method = "lm")+
  labs(x="Flipper Length (mm)",
       y="Body Mass (g)",
       colour="Bathy_Blues",
       title="Bathy_Blues Palette")+
  Utilities.Package::theme_Bede_Map()+
  Utilities.Package::scale_colour_Bede("Bathy_Blues")

  (colourplot1+colourplot2+colourplot3)/
  (colourplot4+colourplot5+colourplot6)/
  (colourplot7+colourplot8+colourplot9) &
  theme(legend.position = c(0.15,0.7))

There also a few colours palettes for gradients by putting discrete=FALSE.

map1<-ggplot()+
  geom_sf(data=sf_bathy,mapping=aes(colour=layer))+
  geom_polygon(data = nz, aes(x = long, y = lat, group = group),
               fill = "forestgreen", colour = "black",alpha=0.4)+
  Utilities.Package::scale_colour_Bede(name="Depth (m)\nBathy_Blues Pallette",'Bathy_Blues',
                            discrete=FALSE,reverse=TRUE,
                            limits=c(0,-6000),
                            breaks=c(0,-2000,-4000,-6000),
                            labels=c("0","2000","4000","6000"))+
  Utilities.Package::theme_Bede_Map()+
  labs(x="Longitude",
       y="Latitude")

map2<-ggplot()+
  geom_sf(data=sf_bathy,mapping=aes(colour=layer))+
  geom_polygon(data = nz, aes(x = long, y = lat, group = group),
               fill = "forestgreen", colour = "black",alpha=0.4)+
  Utilities.Package::scale_colour_Bede(name="Depth (m)\nBatlow Pallette",'S2_Max_Batlow_Pink',
                                       discrete=FALSE,reverse=TRUE,
                            limits=c(0,-6000),
                            breaks=c(0,-2000,-4000,-6000),
                            labels=c("0","2000","4000","6000"))+
  Utilities.Package::theme_Bede_Map()+
  labs(x="Longitude",
       y="Latitude")

map3<-ggplot()+
  geom_sf(data=sf_bathy,mapping=aes(colour=layer))+
  geom_polygon(data = nz, aes(x = long, y = lat, group = group),
               fill = "forestgreen", colour = "black",alpha=0.4)+
  Utilities.Package::scale_colour_Bede(name="Depth (m)\nPhD Pallette",'PhD',
                                       discrete=FALSE,
                            limits=c(0,-6000),
                            breaks=c(0,-2000,-4000,-6000),
                            labels=c("0","2000","4000","6000"))+
  Utilities.Package::theme_Bede_Map()+
  labs(x="Longitude",
       y="Latitude")

map4<-ggplot()+
  geom_sf(data=sf_bathy,mapping=aes(colour=layer))+
  geom_polygon(data = nz, aes(x = long, y = lat, group = group),
               fill = "forestgreen", colour = "black",alpha=0.4)+
  Utilities.Package::scale_colour_Bede(name="Depth (m)\nMain Pallette",'main',
                                       discrete=FALSE,
                            limits=c(0,-6000),
                            breaks=c(0,-2000,-4000,-6000),
                            labels=c("0","2000","4000","6000"))+
  Utilities.Package::theme_Bede_Map()+
  labs(x="Longitude",
       y="Latitude")

map5<-ggplot()+
  geom_sf(data=sf_bathy,mapping=aes(colour=layer))+
  geom_polygon(data = nz, aes(x = long, y = lat, group = group),
               fill = "forestgreen", colour = "black",alpha=0.4)+
  Utilities.Package::scale_colour_Bede(name="Depth (m)\nSAS Pallette",'SAS',
                                       discrete=FALSE,
                            limits=c(0,-6000),
                            breaks=c(0,-2000,-4000,-6000),
                            labels=c("0","2000","4000","6000"))+
  Utilities.Package::theme_Bede_Map()+
  labs(x="Longitude",
       y="Latitude")

map6<-ggplot()+
  geom_sf(data=sf_bathy,mapping=aes(colour=layer))+
  geom_polygon(data = nz, aes(x = long, y = lat, group = group),
               fill = "forestgreen", colour = "black",alpha=0.4)+
  Utilities.Package::scale_colour_Bede(name="Depth (m)\nAnnePort Pallette",'AnnePort',
                                       discrete=FALSE,
                            limits=c(0,-6000),
                            breaks=c(0,-2000,-4000,-6000),
                            labels=c("0","2000","4000","6000"))+
  Utilities.Package::theme_Bede_Map()+
  labs(x="Longitude",
       y="Latitude")

map7<-ggplot()+
  geom_sf(data=sf_bathy,mapping=aes(colour=layer))+
  geom_polygon(data = nz, aes(x = long, y = lat, group = group),
               fill = "forestgreen", colour = "black",alpha=0.4)+
  Utilities.Package::scale_colour_Bede(name="Depth (m)\nCarbon Viridis Pallette",'Carbon_Viridis',discrete=FALSE,
                            limits=c(0,-6000),
                            breaks=c(0,-2000,-4000,-6000),
                            labels=c("0","2000","4000","6000"))+
  Utilities.Package::theme_Bede_Map()+
  labs(x="Longitude",
       y="Latitude")

map8<-ggplot()+
  geom_sf(data=sf_bathy,mapping=aes(colour=layer))+
  geom_polygon(data = nz, aes(x = long, y = lat, group = group),
               fill = "forestgreen", colour = "black",alpha=0.4)+
  Utilities.Package::scale_colour_Bede(name="Depth (m)\nCarbon Viridis Pallette (reversed)",'Carbon_Viridis',discrete=FALSE,reverse = TRUE,
                            limits=c(0,-6000),
                            breaks=c(0,-2000,-4000,-6000),
                            labels=c("0","2000","4000","6000"))+
  Utilities.Package::theme_Bede_Map()+
  labs(x="Longitude",
       y="Latitude")

(map1+map2)/(map3+map4)/(map5+map6)/(map7+map8)

Fin.

About

Package of Useful Functions

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages