## ----setup, include=FALSE-----------------------------------------------------

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE,
                      fig.width = 4, fig.height = 4, fig.align = "center")
# Packages --------------------------------------------------------------------
suppressPackageStartupMessages({
  suppressWarnings({
    library("GIFT")
    library("dplyr")
    library("knitr")
    library("kableExtra")
    library("ggplot2")
    library("sf")
    library("rnaturalearth")
    library("rnaturalearthdata")
    library("tidyr")
    library("ape")
    library("patchwork")
  })
})

options(tinytex.verbose = TRUE)

## ----gottingen_logo, fig.show = 'hold', out.width = "20%", echo = FALSE-------
knitr::include_graphics("../man/figures/biodiv_gottingen_logo.png")
knitr::include_graphics("../man/figures/GIFT.png")

## ----echo=TRUE, eval=FALSE----------------------------------------------------
# library("GIFT")
# library("dplyr")
# library("knitr")
# library("kableExtra")
# library("ggplot2")
# library("sf")
# library("rnaturalearth")
# library("rnaturalearthdata")
# library("tidyr")
# library("ape")
# library("patchwork")

## ----echo = TRUE, eval = FALSE------------------------------------------------
# options(timeout = max(1000, getOption("timeout")))

## ----fig.width = 3, fig.height = 3--------------------------------------------
data("western_mediterranean")

world <- ne_coastline(scale = "medium", returnclass = "sf")
world_countries <- ne_countries(scale = "medium", returnclass = "sf")
# Fixing polygons crossing dateline
world <- st_wrap_dateline(world)
world_countries <- st_wrap_dateline(world_countries)

# Eckert IV projection
eckertIV <-
  "+proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"

ggplot(world) +
  geom_sf(color = "gray50") +
  geom_sf(data = western_mediterranean, fill = "darkblue", color = "black",
          alpha = 0.5, size = 1) +
  labs(title = "Western Mediterranean basin") +
  lims(x = c(-20, 20), y = c(24, 48)) +
  theme_void()

## ----fig.cap = "Figure 1. Principle of the complete_taxon argument", out.width = "50%",echo = FALSE----
knitr::include_graphics("../man/figures/GIFT_complete_taxon.svg")

## ----fig.cap = "Figure 2. Principle of the complete_floristic argument", out.width = "50%", echo = FALSE----
knitr::include_graphics("../man/figures/GIFT_complete_floristic.svg")

## ----fig.cap = "Figure 3. Principle of GIFT_spatial()", out.width = "50%", echo = FALSE----
knitr::include_graphics("../man/figures/GIFT_spatial.svg")

## ----fig.cap = "Figure 4. Removing overlapping polygons with remove_overlap argument", out.width = "50%", echo = FALSE----
knitr::include_graphics("../man/figures/GIFT_no_overlap.svg")

## ----fig.cap = "Figure 5. Principle of the overlap_th argument", out.width = "50%", echo = FALSE----
knitr::include_graphics("../man/figures/GIFT_overlap_th.svg")

## ----eval=FALSE---------------------------------------------------------------
# ex_meta <- GIFT_checklists(taxon_name = "Angiospermae",
#                            shp = western_mediterranean,
#                            overlap = "centroid_inside",
#                            list_set_only = TRUE)

## ----eval = FALSE, echo = TRUE------------------------------------------------
# medit <- GIFT_checklists(taxon_name = "Angiospermae",
#                          complete_taxon = TRUE,
#                          floristic_group = "native",
#                          complete_floristic = TRUE,
#                          geo_type = "All",
#                          shp = western_mediterranean,
#                          overlap = "centroid_inside",
#                          remove_overlap = FALSE,
#                          taxonomic_group = TRUE) # this argument adds two
# # columns to the checklist: plant family and taxonomic group of each species

## ----eval=FALSE---------------------------------------------------------------
# # Number of references covered
# length(unique(medit[[2]]$ref_ID))
# #   22 references
# 
# # Number of checklists covered (one reference can have several lists inside)
# length(unique(medit[[2]]$list_ID))
# #   115 checklists
# 
# # Number of species
# length(unique(medit[[2]]$work_species))
# #   12840 plant species

## ----eval = FALSE, echo = TRUE------------------------------------------------
# medit_no_overlap <- GIFT_checklists(shp = western_mediterranean,
#                                     overlap = "centroid_inside",
#                                     taxon_name = "Angiospermae",
#                                     remove_overlap = TRUE)
# 
# # Number of references covered
# length(unique(medit[[2]]$ref_ID)) # 23 references
# length(unique(medit_no_overlap[[2]]$ref_ID)) # 22 references

## ----echo = TRUE, eval = FALSE------------------------------------------------
# custom_point <- cbind(9.9, 51) # coordinates of Göttingen
# 
# got <- GIFT_checklists(coordinates = custom_point,
#                        overlap = "extent_intersect",
#                        taxon_name = "Angiospermae",
#                        remove_overlap = TRUE,
#                        list_set_only = TRUE)

## ----eval=FALSE, echo = TRUE--------------------------------------------------
# gift_shapes <- GIFT_shapes() # retrieves all shapefiles by default

## ----echo = TRUE, eval = FALSE, message=FALSE, fig.width = 8, fig.height = 4----
# angio_rich <- GIFT_richness(taxon_name = "Angiospermae")
# 
# rich_map <- dplyr::left_join(gift_shapes, angio_rich, by = "entity_ID") %>%
#   dplyr::filter(stats::complete.cases(total))
# 
# ggplot(world) +
#   geom_sf(color = "gray50") +
#   geom_sf(data = rich_map, aes(fill = total + 1)) +
#   scale_fill_viridis_c("Species number\n(log-transformed)", trans = "log10",
#                        labels = scales::number_format(accuracy = 1)) +
#   labs(title = "Angiosperms", subtitle = "Projection EckertIV") +
#   coord_sf(crs = eckertIV) +
#   theme_void()

## ----fig.cap = "", out.width = "90%",echo = FALSE-----------------------------
knitr::include_graphics("../man/figures/angio_rich_map.png")

## ----fig.cap = "", out.width = "90%",echo = FALSE-----------------------------
knitr::include_graphics("../man/figures/angio_rich_map2.png")

## ----echo = TRUE, eval=FALSE--------------------------------------------------
# # Background box
# xmin <- st_bbox(world)[["xmin"]]; xmax <- st_bbox(world)[["xmax"]]
# ymin <- st_bbox(world)[["ymin"]]; ymax <- st_bbox(world)[["ymax"]]
# bb <- sf::st_union(sf::st_make_grid(st_bbox(c(xmin = xmin,
#                                               xmax = xmax,
#                                               ymax = ymax,
#                                               ymin = ymin),
#                                             crs = st_crs(4326)),
#                                     n = 100))
# 
# # Equator line
# equator <- st_linestring(matrix(c(-180, 0, 180, 0), ncol = 2, byrow = TRUE))
# equator <- st_sfc(equator, crs = st_crs(world))
# 
# # Color code from Barthlott 2007
# hexcode_barthlott2007 <- c("#fbf9ed", "#f3efcc", "#f6e39e", "#cbe784",
#                            "#65c66a", "#0e8d4a", "#4a6fbf",
#                            "#b877c2", "#f24dae", "#ed1c24")
# 
# ggplot(world) +
#   geom_sf(data = bb, fill = "aliceblue") +
#   geom_sf(data = equator, color = "gray50", linetype = "dashed",
#           linewidth = 0.1) +
#   geom_sf(data = world_countries, fill = "antiquewhite1", color = NA) +
#   geom_sf(color = "gray50", linewidth = 0.1) +
#   geom_sf(data = bb, fill = NA) +
#   geom_sf(data = rich_map,
#           aes(fill = ifelse(rich_map$entity_class %in%
#                               c("Island/Mainland", "Mainland",
#                                 "Island Group", "Island Part"),
#                             total + 1, NA)),
#           size = 0.1) +
#   geom_point(data = rich_map,
#              aes(color = ifelse(rich_map$entity_class %in%
#                                   c("Island"),
#                                 total + 1, NA),
#                  geometry = geometry),
#              stat = "sf_coordinates", size = 1, stroke = 0.5) +
#   scale_color_gradientn(
#     "Species number", trans = "log10", limits = c(1, 40000),
#     colours = hexcode_barthlott2007,
#     breaks = c(1, 10, 100, 1000, 10000, 40000),
#     labels = c(1, 10, 100, 1000, 10000, 40000),
#     na.value = "transparent") +
#   scale_fill_gradientn(
#     "Species number", trans = "log10", limits = c(1, 40000),
#     colours = hexcode_barthlott2007,
#     breaks = c(1, 10, 100, 1000, 10000, 40000),
#     labels = c(1, 10, 100, 1000, 10000, 40000),
#     na.value = "transparent") +
#   labs(title = "Angiosperms", subtitle = "Projection EckertIV") +
#   coord_sf(crs = eckertIV) +
#   theme_void()

## ----echo = TRUE, eval = FALSE, message=FALSE, fig.width = 8, fig.height = 4----
# med_shape <- gift_shapes[which(gift_shapes$entity_ID %in%
#                                  unique(medit[[2]]$entity_ID)), ]
# 
# med_rich <- angio_rich[which(angio_rich$entity_ID %in%
#                                unique(medit[[2]]$entity_ID)), ]
# 
# med_map <- dplyr::left_join(med_shape, med_rich, by = "entity_ID") %>%
#   dplyr::filter(stats::complete.cases(total))
# 
# ggplot(world) +
#   geom_sf(color = "gray50") +
#   geom_sf(data = western_mediterranean,
#           fill = "darkblue", color = "black", alpha = 0.1, size = 1) +
#   geom_sf(data = med_map, aes(fill = total)) +
#   scale_fill_viridis_c("Species number") +
#   labs(title = "Angiosperms in the Western Mediterranean basin") +
#   lims(x = c(-20, 20), y = c(24, 48)) +
#   theme_void()

## ----fig.cap = "", out.width = "90%",echo = FALSE-----------------------------
knitr::include_graphics("../man/figures/angio_medit.png")

## ----echo = TRUE, eval = FALSE------------------------------------------------
# all_sp <- GIFT_species()

## ----anemone_lookup-----------------------------------------------------------
anemone_lookup <- GIFT_species_lookup(genus = "Anemonoides",
                                      epithet = "nemorosa")

kable(anemone_lookup, "html") %>%
  kable_styling(full_width = FALSE)

## -----------------------------------------------------------------------------
anemone_distr <- GIFT_species_distribution(
  genus = "Anemonoides", epithet = "nemorosa", aggregation = TRUE)

anemone_statuses <- anemone_distr %>%
  mutate(native = ifelse(native == 1, "native", "non-native"),
         naturalized = ifelse(naturalized == 1, "naturalized",
                              "non-naturalized"),
         endemic_list = ifelse(endemic_list == 1, "endemic_list",
                               "non-endemic_list")) %>%
  dplyr::select(entity_ID, native, naturalized, endemic_list)

table(anemone_statuses$endemic_list)

## -----------------------------------------------------------------------------
table(paste(anemone_statuses$native, anemone_statuses$naturalized,
            sep = "_"))

## ----echo = TRUE, eval = FALSE, fig.width = 8, fig.height = 4-----------------
# # We rename the statuses based on the distinct combinations
# anemone_statuses <- anemone_statuses %>%
#   mutate(Status = case_when(
#     native == "native" & naturalized == "non-naturalized" ~ "native",
#     native == "native" & is.na(naturalized) ~ "native",
#     native == "non-native" & is.na(naturalized) ~ "non-native",
#     native == "non-native" & naturalized == "naturalized" ~ "naturalized",
#     native == "non-native" & naturalized == "non-naturalized" ~ "non-native",
#     is.na(native) & is.na(naturalized) ~ "unknown"
#   ))
# 
# # Merge with the shapes
# anemone_shape <- gift_shapes[which(gift_shapes$entity_ID %in%
#                                      unique(anemone_distr$entity_ID)), ]
# anemone_map <- dplyr::left_join(anemone_shape, anemone_statuses,
#                                 by = "entity_ID")
# 
# # Area of distribution with floristic status
# ggplot(world) +
#   geom_sf(color = "gray70") +
#   geom_sf(data = anemone_map, color = "black", aes(fill = as.factor(Status))) +
#   scale_fill_brewer("Status", palette = "Set2") +
#   labs(title = expression(paste("Distribution map of ",
#                                 italic("Anemonoides nemorosa"))),
#        subtitle = "Unprojected (GCS: WGS84)") +
#   lims(x = c(-65, 170), y = c(-45, 70)) +
#   theme_void()

## ----fig.cap = "", out.width = "90%",echo = FALSE-----------------------------
knitr::include_graphics("../man/figures/anemone_map.png")

## ----fig.cap = "", out.width = "90%",echo = FALSE-----------------------------
knitr::include_graphics("../man/figures/anemone_map2.png")

## ----eval=FALSE---------------------------------------------------------------
# anemone_map_plot_bg_parts <-
#   ggplot(world) +
#   geom_sf(data = bb, fill = "aliceblue", color = NA) +
#   geom_sf(data = equator, color = "gray50", linetype = "dashed",
#           linewidth = 0.1) +
#   geom_sf(data = world_countries, fill = "antiquewhite1", color = NA) +
#   geom_sf(color = "gray50", linewidth = 0.1) +
#   geom_sf(data = bb, fill = NA) +
#   geom_sf(data = anemone_map, color = "black", aes(fill = as.factor(Status))) +
#   scale_fill_manual("Status",
#                     values = c("native" = "#2c7bb6",
#                                "naturalized" = "#d7191c",
#                                "non-native" = "#fdae61",
#                                "unknown" = "#abd9e9")) +
#   labs(title = expression(paste("b) Distribution map of ",
#                                 italic("Anemonoides nemorosa")))) +
#   theme_void() +
#   theme(axis.title = element_blank(),
#         axis.text = element_blank(),
#         axis.ticks = element_blank())
# 
# (anemone_map_plot_bg_parts +
#     lims(x = c(-69, 61), y = c(37, 70)) + # Europe & Newfoundland
#     theme(panel.border = element_rect(fill = NA, linewidth = 1)) +
#     theme(legend.position = "bottom")
#   |
#     anemone_map_plot_bg_parts +
#     lims(x = c(165, 178), y = c(-47, -35)) + # New Zealand
#     labs(title = "") +
#     guides(fill = "none") +
#     theme(panel.border = element_rect(fill = NA, linewidth = 1)))

## -----------------------------------------------------------------------------
trait_meta <- GIFT_traits_meta()
trait_meta[which(trait_meta$Trait2 == "Plant_height_max"), ]

## ----echo = TRUE, eval = FALSE------------------------------------------------
# height <- GIFT_traits(trait_IDs = c("1.6.2"), agreement = 0.66,
#                       bias_ref = FALSE, bias_deriv = FALSE)
# 
# height_raw <- GIFT_traits_raw(trait_IDs = c("1.6.2"))
# 
# # Raw values
# as.numeric(height_raw[which(height_raw$work_species == "Fagus sylvatica"),
#                       "trait_value"])
# 
# # Aggregated value
# as.numeric(height[which(height$work_species == "Fagus sylvatica"),
#                   "trait_value_1.6.2"])

## ----echo = TRUE, eval=FALSE--------------------------------------------------
# references <- GIFT_references(GIFT_version = "beta")
# 
# unique(unlist(strsplit(height$references_1.6.2, ",")))
# 
# references <- references[
#   which(references$ref_ID %in%
#           unique(unlist(strsplit(height$references_1.6.2, ",")))), ]
# references[1:2, ]

## ----echo=TRUE, eval=FALSE----------------------------------------------------
# trait_tax <- GIFT_traits_tax(trait_IDs = c("1.1.1", "1.2.1", "1.4.1"),
#                              bias_ref = FALSE, bias_deriv = FALSE)
# 
# trait_tax[1:3, ]

## ----echo = TRUE, eval = FALSE, fig.width = 8, fig.height = 4-----------------
# angio_height <- GIFT_coverage(what = "trait_coverage",
#                               taxon_name = "Angiospermae",
#                               trait_ID = "1.6.2")
# 
# angio_height_shape <- gift_shapes[which(gift_shapes$entity_ID %in%
#                                           unique(angio_height$entity_ID)), ]
# 
# angio_height_map <- dplyr::left_join(
#   angio_height_shape, angio_height, by = "entity_ID")
# 
# angio_height_map <- angio_height_map[complete.cases(angio_height_map$native), ]
# 
# ggplot(world) +
#   geom_sf(color = "gray50") +
#   geom_sf(data = angio_height_map[complete.cases(angio_height_map$native), ],
#           aes(fill = native)) +
#   scale_fill_viridis_c("Coverage (%)") +
#   labs(title = "Coverage for maximal vegetative height of Angiosperms",
#        subtitle = "Projection EckertIV") +
#   coord_sf(crs = eckertIV) +
#   theme_void()

## ----fig.cap = "", out.width = "90%",echo = FALSE-----------------------------
knitr::include_graphics("../man/figures/angio_height_plot.png")

## ----fig.cap = "", out.width = "90%",echo = FALSE-----------------------------
knitr::include_graphics("../man/figures/angio_height_plot2.png")

## ----eval=FALSE---------------------------------------------------------------
# ggplot(world) +
#   geom_sf(data = bb, fill = "aliceblue") +
#   geom_sf(data = equator, color = "gray50", linetype = "dashed",
#           linewidth = 0.1) +
#   geom_sf(data = world_countries, fill = "antiquewhite1", color = NA) +
#   geom_sf(color = "gray50", linewidth = 0.1) +
#   geom_sf(data = bb, fill = NA) +
#   geom_sf(data = angio_height_map,
#           aes(fill = ifelse(angio_height_map$entity_class %in%
#                               c("Island/Mainland", "Mainland",
#                                 "Island Group", "Island Part"),
#                             100*native, NA)), size = 0.1) +
#   geom_point(data = angio_height_map,
#              aes(color = ifelse(angio_height_map$entity_class %in%
#                                   c("Island"),
#                                 100*native, NA),
#                  geometry = geometry),
#              stat = "sf_coordinates", size = 1, stroke = 0.5) +
#   scale_color_gradientn(
#     "Coverage (%)",
#     colours = rev(RColorBrewer::brewer.pal(9, name = "PuBuGn")),
#     limits = c(0, 100),
#     na.value = "transparent") +
#   scale_fill_gradientn(
#     "Coverage (%)",
#     colours = rev(RColorBrewer::brewer.pal(9, name = "PuBuGn")),
#     limits = c(0, 100),
#     na.value = "transparent") +
#   labs(title = "Coverage for maximal vegetative height of Angiosperms",
#        subtitle = "Projection EckertIV") +
#   coord_sf(crs = eckertIV) +
#   theme_void()

## ----env_meta-----------------------------------------------------------------
misc_env <- GIFT_env_meta_misc()
raster_env <- GIFT_env_meta_raster()

## ----echo = TRUE, eval = FALSE------------------------------------------------
# med_env <- GIFT_env(entity_ID = unique(medit[[2]]$entity_ID),
#                     miscellaneous = c("perimeter", "biome"),
#                     rasterlayer = c("mn30_grd", "wc2.0_bio_30s_01"),
#                     sumstat = list(c("mean", "med"), "max"))
# 
# med_env[1, ]

## ----echo = TRUE, eval = FALSE, fig.width = 8, fig.height = 4-----------------
# world_temp <- GIFT_env(entity_ID = unique(angio_rich$entity_ID),
#                        rasterlayer = c("wc2.0_bio_30s_01"),
#                        sumstat = c("mean"))
# 
# temp_shape <- gift_shapes[which(gift_shapes$entity_ID %in%
#                                   unique(angio_rich$entity_ID)), ]
# 
# temp_map <- dplyr::left_join(temp_shape, world_temp, by = "entity_ID")
# 
# ggplot(world) +
#   geom_sf(color = "gray50") +
#   geom_sf(data = temp_map, aes(fill = mean_wc2.0_bio_30s_01)) +
#   scale_fill_viridis_c("Celsius degrees") +
#   labs(title = "Average temperature",
#        subtitle = "Projection EckertIV") +
#   coord_sf(crs = eckertIV) +
#   theme_void()

## ----fig.cap = "", out.width = "90%",echo = FALSE-----------------------------
knitr::include_graphics("../man/figures/temp_plot.png")

## ----fig.cap = "", out.width = "90%",echo = FALSE-----------------------------
knitr::include_graphics("../man/figures/temp_plot2.png")

## ----eval=FALSE---------------------------------------------------------------
# ggplot(world) +
#   geom_sf(data = bb, fill = "aliceblue") +
#   geom_sf(data = equator, color = "gray50", linetype = "dashed",
#           linewidth = 0.1) +
#   geom_sf(data = world_countries, fill = "antiquewhite1", color = NA) +
#   geom_sf(color = "gray50", linewidth = 0.1) +
#   geom_sf(data = bb, fill = NA) +
#   geom_sf(data = temp_map,
#           aes(fill = ifelse(temp_map$entity_class %in%
#                               c("Island/Mainland", "Mainland",
#                                 "Island Group", "Island Part"),
#                             mean_wc2.0_bio_30s_01, NA)), size = 0.1) +
#   geom_point(data = temp_map,
#              aes(color = ifelse(temp_map$entity_class %in%
#                                   c("Island"),
#                                 mean_wc2.0_bio_30s_01, NA),
#                  geometry = geometry),
#              stat = "sf_coordinates", size = 1, stroke = 0.5) +
#   scale_color_gradientn(
#     "°C",
#     colours = RColorBrewer::brewer.pal(9, name = "Reds"),
#     limits = c(-20, 30),
#     na.value = "transparent") +
#   scale_fill_gradientn(
#     "°C",
#     colours = RColorBrewer::brewer.pal(9, name = "Reds"),
#     limits = c(-20, 30),
#     na.value = "transparent") +
#   labs(title = "Average temperature",
#        subtitle = "Projection EckertIV") +
#   coord_sf(crs = eckertIV) +
#   theme_void()

## ----eval=FALSE, echo=TRUE----------------------------------------------------
# # Retrieving phylogeny, taxonomy and species from GIFT
# phy <- GIFT_phylogeny(clade = "Tracheophyta", GIFT_version = "beta")
# tax <- GIFT_taxonomy(GIFT_version = "beta")
# gift_sp <- GIFT_species(GIFT_version = "beta")
# 
# gf <- GIFT_traits(trait_IDs = "1.2.1", agreement = 0.66, bias_ref = FALSE,
#                   bias_deriv = FALSE, GIFT_version = "beta")

## ----eval=FALSE, echo=TRUE----------------------------------------------------
# # Replacing space with _ for the species names
# gf$work_species <- gsub(" ", "_", gf$work_species, fixed = TRUE)

## ----eval=FALSE, echo=TRUE----------------------------------------------------
# # Retrieving family of each species
# sp_fam <- GIFT_taxgroup(work_ID = unique(gift_sp$work_ID),
#                         taxon_lvl = "family", GIFT_version = "beta")
# sp_genus_fam <- data.frame(
#   work_ID = unique(gift_sp$work_ID),
#   work_species = unique(gift_sp$work_species),
#   family = sp_fam)
# sp_genus_fam <- left_join(sp_genus_fam,
#                           gift_sp[, c("work_ID", "work_genus")],
#                           by = "work_ID")
# colnames(sp_genus_fam)[colnames(sp_genus_fam) == "work_genus"] <- "genus"
# 
# # Problem with hybrid species on the tip labels of the phylo tree
# phy$tip.label[substring(phy$tip.label, 1, 2) == "x_"] <-
#   substring(phy$tip.label[substring(phy$tip.label, 1, 2) == "x_"],
#             3,
#             nchar(phy$tip.label[substring(phy$tip.label, 1, 2) == "×_"]))
# 
# phy$tip.label[substring(phy$tip.label, 1, 2) == "×_"] <-
#   substring(phy$tip.label[substring(phy$tip.label, 1, 2) == "×_"],
#             3,
#             nchar(phy$tip.label[substring(phy$tip.label, 1, 2) == "×_"]))

## ----eval=FALSE, echo=TRUE----------------------------------------------------
# sp_genus_fam <- left_join(sp_genus_fam,
#                           gf[, c("work_ID", "trait_value_1.2.1")],
#                           by = "work_ID")
# 
# genus_gf <- sp_genus_fam %>%
#   group_by(genus) %>%
#   mutate(prop_gf = round(100*sum(is.na(trait_value_1.2.1))/n(), 2)) %>%
#   ungroup() %>%
#   dplyr::select(-work_ID, -work_species, -family, -trait_value_1.2.1) %>%
#   distinct(.keep_all = TRUE)
# 
# fam_gf <- sp_genus_fam %>%
#   group_by(family) %>%
#   mutate(prop_gf = round(100*sum(is.na(trait_value_1.2.1))/n(), 2)) %>%
#   ungroup() %>%
#   dplyr::select(-work_ID, -work_species, -genus, -trait_value_1.2.1) %>%
#   distinct(.keep_all = TRUE)
# 
# sp_genus_fam$species <- gsub("([[:punct:]])|\\s+", "_",
#                              sp_genus_fam$work_species)
# 
# # Keeping one species per genus only
# one_sp_per_gen <- data.frame()
# for(i in 1:n_distinct(sp_genus_fam$genus)){ # loop over genera
#   # Focal genus
#   focal_gen <- unique(sp_genus_fam$genus)[i]
#   # All species in that genus
#   gen_sp_i <- sp_genus_fam[which(sp_genus_fam$genus == focal_gen),
#                            "species"]
#   # Species from the genus available in the phylogeny
#   gen_sp_i <- gen_sp_i[gen_sp_i %in% phy$tip.label]
#   # Taking the first one (if at least one is available)
#   gen_sp_i <- gen_sp_i[1]
# 
#   one_sp_per_gen <- rbind(one_sp_per_gen,
#                           data.frame(species = gen_sp_i,
#                                      genus = focal_gen))
# }
# 
# # Adding the trait coverage per genus
# one_sp_per_gen <- left_join(one_sp_per_gen, genus_gf, by = "genus")
# 
# # Adding the trait coverage per family
# one_sp_per_gen <- left_join(one_sp_per_gen,
#                             sp_genus_fam[!duplicated(sp_genus_fam$genus),
#                                          c("genus", "family")],
#                             by = "genus")
# colnames(one_sp_per_gen)[colnames(one_sp_per_gen) == "prop_gf"] <-
#   "prop_gf_gen"
# one_sp_per_gen <- left_join(one_sp_per_gen, fam_gf, by = "family")
# colnames(one_sp_per_gen)[colnames(one_sp_per_gen) == "prop_gf"] <-
#   "prop_gf_fam"

## ----eval=FALSE, echo=TRUE----------------------------------------------------
# phy_gen <- ape::keep.tip(
#   phy = phy,
#   tip = one_sp_per_gen[complete.cases(one_sp_per_gen$species), "species"])

## ----echo=TRUE, eval = FALSE--------------------------------------------------
# library("BiocManager")
# install("ggtree")
# library("ggtree")
# library("tidytree")
# install("ggtreeExtra")
# library("ggtreeExtra")

## ----echo = TRUE, eval = FALSE, fig.width = 6, fig.height = 6-----------------
# ggtree(phy_gen, color = "grey70", layout = "circular") %<+% one_sp_per_gen +
#   geom_fruit(geom = geom_tile,
#              mapping = aes(fill = prop_gf_gen),
#              width = 50,
#              offset = 0.1) +
#   geom_fruit(geom = geom_tile,
#              mapping = aes(color = prop_gf_fam, fill = prop_gf_fam),
#              width = 50,
#              offset = 0.1,
#              show.legend = FALSE) +
#   scale_color_viridis_c() +
#   scale_fill_viridis_c("Growth form availability per genus (%)") +
#   theme(legend.position = "bottom")

## ----fig.cap = "", out.width = "100%",echo = FALSE----------------------------
knitr::include_graphics("../man/figures/phy_tree_plot.png")