diff --git a/.gitignore b/.gitignore index 09fe5aa16..b675f7d51 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,13 @@ -.Rproj.user -.Rhistory -.RData -.Ruserdata -.DS_Store -*.xml -packrat/lib*/ -.tmp -src/*.o -src/*.dll -src/*.so -R/.Rapp.history -inst/doc +.Rproj.user +.Rhistory +.RData +.Ruserdata +.DS_Store +*.xml +packrat/lib*/ +.tmp +src/*.o +src/*.dll +src/*.so +R/.Rapp.history +inst/doc diff --git a/NAMESPACE b/NAMESPACE index 4d2a78b6c..1640438fe 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -20,6 +20,7 @@ export(sits_apply_ts) export(sits_bands) export(sits_cancelProcess_WTSPS) export(sits_classify) +export(sits_classify2) export(sits_classify_raster) export(sits_cloud_filter) export(sits_cluster) @@ -38,6 +39,7 @@ export(sits_deep_learning) export(sits_dendrogram) export(sits_distances) export(sits_distances_from_data) +export(sits_distances_from_data2) export(sits_envelope) export(sits_exitConnection) export(sits_foreach) @@ -77,7 +79,6 @@ export(sits_merge) export(sits_missing_values) export(sits_mlr) export(sits_mutate) -export(sits_patt_dendgam) export(sits_patterns) export(sits_patterns_from_data) export(sits_plot) diff --git a/R/sits_SCIDB.R b/R/sits_SCIDB.R index 690356fdf..ae9fc72be 100644 --- a/R/sits_SCIDB.R +++ b/R/sits_SCIDB.R @@ -1,54 +1,54 @@ -#' @title Create an indexed ordered obsevartion set within a sits tibble. -#' @name sits_createZooObject -#' -#' @description This function returns a sits table with an indexed ordered observation set as a zoo object -#' -#' @param bands a character string vector with the interested bands of the satellite imagery product -#' @param dates a string vector contaning time series dates -#' @param scale_factor a real number representing the scale factor of the attribute values -#' @param idx a integer vector containing the respective index of the attribute values -#' @param missing_values the missing value of the coverage -#' @return ts.tb -#' @export -sits_createZooObject <- function(bands, dates, scale_factor, idx, missing_values) { - - # create data.frame dynamically - df <- data.frame(get(bands[1])[idx]) - for(i in 2:length(bands)) df <- cbind(df, get(bands[i])[idx]) - - # change scidb column names - names(df) <- bands - - # create zoo object - ts <- zoo::zoo(df*scale_factor, dates) - - # assign NA values to missing values - ts[which(t(t(zoo::coredata(ts)) == missing_values))] <- NA - - # interpolate zoo object - ts_spline <- zoo::na.spline(ts) - - # convert to a tibble object - ts.tb <- tibble::as_tibble (zoo::fortify.zoo (ts_spline)) - - return(ts.tb) - -} - -#' @title Exit a connection from SciDB chunk processing. -#' @name sits_exitConnection -#' -#' @description This function closes a SciDB streaming processing connection -#' -#' @param out list or data.frame with classification data to return to SciDB -#' @param connection connection object to flush -#' @export -sits_exitConnection <- function(out, connection) { - - # binary data to connection - writeBin(serialize(c(out), NULL, xdr=FALSE), connection) - - # flushes the output stream of an open connection - flush(connection) - -} +#' @title Create an indexed ordered obsevartion set within a sits tibble. +#' @name sits_createZooObject +#' +#' @description This function returns a sits table with an indexed ordered observation set as a zoo object +#' +#' @param bands a character string vector with the interested bands of the satellite imagery product +#' @param dates a string vector contaning time series dates +#' @param scale_factor a real number representing the scale factor of the attribute values +#' @param idx a integer vector containing the respective index of the attribute values +#' @param missing_values the missing value of the coverage +#' @return ts.tb +#' @export +sits_createZooObject <- function(bands, dates, scale_factor, idx, missing_values) { + + # create data.frame dynamically + df <- data.frame(get(bands[1])[idx]) + for(i in 2:length(bands)) df <- cbind(df, get(bands[i])[idx]) + + # change scidb column names + names(df) <- bands + + # create zoo object + ts <- zoo::zoo(df*scale_factor, dates) + + # assign NA values to missing values + ts[which(t(t(zoo::coredata(ts)) == missing_values))] <- NA + + # interpolate zoo object + ts_spline <- zoo::na.spline(ts) + + # convert to a tibble object + ts.tb <- tibble::as_tibble (zoo::fortify.zoo (ts_spline)) + + return(ts.tb) + +} + +#' @title Exit a connection from SciDB chunk processing. +#' @name sits_exitConnection +#' +#' @description This function closes a SciDB streaming processing connection +#' +#' @param out list or data.frame with classification data to return to SciDB +#' @param connection connection object to flush +#' @export +sits_exitConnection <- function(out, connection) { + + # binary data to connection + writeBin(serialize(c(out), NULL, xdr=FALSE), connection) + + # flushes the output stream of an open connection + flush(connection) + +} diff --git a/R/sits_TWDTW_plot.R b/R/sits_TWDTW_plot.R index d8edad9dc..c143bd1b3 100644 --- a/R/sits_TWDTW_plot.R +++ b/R/sits_TWDTW_plot.R @@ -1,66 +1,66 @@ -#' @title Plot classification alignments using the dtwSat package -#' @name sits_plot_TWDTW_alignments -#' @author Victor Maus, \email{vwmaus1@@gmail.com} -#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} -#' -#' @description plots the alignments from TWDTW classification (uses dtwSat) -#' @param matches a list of dtwSat S4 matches objects produced by sits_TWDTW_matches -#' -#' @export -sits_plot_TWDTW_alignments <- function (matches){ - - matches %>% - purrr::map( function (m.twdtw) { - dtwSat::plot (m.twdtw, type = "alignments") %>% - graphics::plot() - }) - return (invisible(matches)) -} - -#' @title Plot classification results using the dtwSat package -#' @name sits_plot_TWDTW_classification -#' @author Victor Maus, \email{vwmaus1@@gmail.com} -#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} -#' -#' @description Plots the results of TWDTW classification (uses dtwSat) -#' @param matches A list of dtwSat S4 matches objects produced by sits_TWDTW_matches -#' @param start_date Start date of the plot (used for showing classifications) -#' @param end_date End date of the plot (used for showing classifications) -#' @param interval Interval between classifications (used for showing classifications) -#' @param overlap Minimum overlapping between one match and the interval of classification. For details see dtwSat::twdtwApply help. -#' @export -sits_plot_TWDTW_classification <- function (matches, start_date = NULL, end_date = NULL, interval = "12 month", overlap = 0.5){ - - matches %>% - purrr::map(function (m.twdtw) { - if (purrr::is_null (start_date) | purrr::is_null (end_date)) - dplot <- dtwSat::plot (m.twdtw, type = "classification", overlap = 0.5) - else - dplot <- dtwSat::plot (m.twdtw, type = "classification", from = start_date, - to = end_date, by = interval, overlap = overlap) - graphics::plot(dplot) - - }) - return (invisible(matches)) -} - -#' @title Plot matches between a label pattern and a time series using the dtwSat package -#' @name sits_plot_TWDTW_matches -#' @author Victor Maus, \email{vwmaus1@@gmail.com} -#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} -#' -#' @description Plots the matches from TWDTW classification for one label -#' -#' @param matches a list of dtwSat S4 matches objects produced by sits_TWDTW_matches -#' @param patterns.tb a set of known temporal signatures for the chosen classes -#' @param n_matches number of matches of a given label to be displayed -#' @export -sits_plot_TWDTW_matches <- function (matches, patterns.tb, n_matches = 4) { - - matches %>% - purrr::map(function (m.twdtw) { - dtwSat::plot (m.twdtw, type = "matches", patterns.labels = patterns.tb$label, k = n_matches) %>% - graphics::plot() - }) - return (invisible(matches)) -} +#' @title Plot classification alignments using the dtwSat package +#' @name sits_plot_TWDTW_alignments +#' @author Victor Maus, \email{vwmaus1@@gmail.com} +#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} +#' +#' @description plots the alignments from TWDTW classification (uses dtwSat) +#' @param matches a list of dtwSat S4 matches objects produced by sits_TWDTW_matches +#' +#' @export +sits_plot_TWDTW_alignments <- function (matches){ + + matches %>% + purrr::map( function (m.twdtw) { + dtwSat::plot (m.twdtw, type = "alignments") %>% + graphics::plot() + }) + return (invisible(matches)) +} + +#' @title Plot classification results using the dtwSat package +#' @name sits_plot_TWDTW_classification +#' @author Victor Maus, \email{vwmaus1@@gmail.com} +#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} +#' +#' @description Plots the results of TWDTW classification (uses dtwSat) +#' @param matches A list of dtwSat S4 matches objects produced by sits_TWDTW_matches +#' @param start_date Start date of the plot (used for showing classifications) +#' @param end_date End date of the plot (used for showing classifications) +#' @param interval Interval between classifications (used for showing classifications) +#' @param overlap Minimum overlapping between one match and the interval of classification. For details see dtwSat::twdtwApply help. +#' @export +sits_plot_TWDTW_classification <- function (matches, start_date = NULL, end_date = NULL, interval = "12 month", overlap = 0.5){ + + matches %>% + purrr::map(function (m.twdtw) { + if (purrr::is_null (start_date) | purrr::is_null (end_date)) + dplot <- dtwSat::plot (m.twdtw, type = "classification", overlap = 0.5) + else + dplot <- dtwSat::plot (m.twdtw, type = "classification", from = start_date, + to = end_date, by = interval, overlap = overlap) + graphics::plot(dplot) + + }) + return (invisible(matches)) +} + +#' @title Plot matches between a label pattern and a time series using the dtwSat package +#' @name sits_plot_TWDTW_matches +#' @author Victor Maus, \email{vwmaus1@@gmail.com} +#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} +#' +#' @description Plots the matches from TWDTW classification for one label +#' +#' @param matches a list of dtwSat S4 matches objects produced by sits_TWDTW_matches +#' @param patterns.tb a set of known temporal signatures for the chosen classes +#' @param n_matches number of matches of a given label to be displayed +#' @export +sits_plot_TWDTW_matches <- function (matches, patterns.tb, n_matches = 4) { + + matches %>% + purrr::map(function (m.twdtw) { + dtwSat::plot (m.twdtw, type = "matches", patterns.labels = patterns.tb$label, k = n_matches) %>% + graphics::plot() + }) + return (invisible(matches)) +} diff --git a/R/sits_WTSPS.R b/R/sits_WTSPS.R index 5d53246a9..1bf3d2f4f 100644 --- a/R/sits_WTSPS.R +++ b/R/sits_WTSPS.R @@ -1,89 +1,89 @@ -#' @title Provides information about WTSPS service -#' @name sits_infoWTSPS -#' -#' @description uses the WTSPS services to print information about WTSPS -#' -#' @param URL the URL for the WTSPS service -#' @return wtsps.obj an R object containing the information about the WTSPS server -#' @export -sits_infoWTSPS <- function (URL = "http://www.dpi.inpe.br/tws/wtsps") { - - # obtains information about the WTSS service - wtsps.obj <- wtsps::WTSPS(URL) - show(wtsps.obj) # prints wtsps.obj - - return (invisible(wtsps.obj)) -} - -#' @title Provides information about one algorithm of the WTSPS service -#' @name sits_algorithmWTSPS -#' -#' @description uses the WTSPS services to print information about a -#' chosen algorithm: -#' name -#' input_parametes -#' output -#' description -#' -#' @param URL the URL for the WTSPS service -#' @param algorithm the name of the algorithm -#' @export -sits_algorithmWTSPS <- function (URL = "http://www.dpi.inpe.br/tws/wtsps", algorithm = NULL) { - - # describe the algorithm - algorithm.obj <- wtsps::describeAlgorithm(URL, algorithm) - show(algorithm.obj) # prints algorithm.obj - - return (invisible(algorithm.obj)) -} - -#' @title Runs a process in the WTSPS service -#' @name sits_runProcess_WTSPS -#' -#' @description uses the WTSPS services to run a process in the server -#' -#' @param URL the URL for the WTSPS service -#' @param ... algorithm name and its parameters -#' @export -sits_runProcess_WTSPS <- function (URL = "http://www.dpi.inpe.br/tws/wtsps", ...) { - - # runs process - proc.obj <- wtsps::runProcess(URL, ...) - show(proc.obj) # prints process obj - - return (invisible(proc.obj)) -} - -#' @title Provides information about a process running in the WTSPS service -#' @name sits_statusProcess_WTSPS -#' -#' @description uses the WTSPS services to get the status of a running process in the server -#' -#' @param URL the URL for the WTSPS service -#' @param uuid the id of the process -#' @export -sits_statusProcess_WTSPS <- function (URL = "http://www.dpi.inpe.br/tws/wtsps", uuid = NULL) { - - # get status from a process - proc.obj <- wtsps::statusProcess(URL, uuid) - show(proc.obj) # prints process obj - - return (invisible(proc.obj)) -} - -#' @title Cancels a process running in the WTSPS service -#' @name sits_cancelProcess_WTSPS -#' -#' @description uses the WTSPS services to cancel a process in the server -#' -#' @param URL the URL for the WTSPS service -#' @param uuid the id of the process -#' @export -sits_cancelProcess_WTSPS <- function (URL = "http://www.dpi.inpe.br/tws/wtsps", uuid = NULL) { - - # cancel a process - proc.obj <- wtsps::cancelProcess(URL, uuid) - show(proc.obj) # prints process obj - - return (invisible(proc.obj)) -} +#' @title Provides information about WTSPS service +#' @name sits_infoWTSPS +#' +#' @description uses the WTSPS services to print information about WTSPS +#' +#' @param URL the URL for the WTSPS service +#' @return wtsps.obj an R object containing the information about the WTSPS server +#' @export +sits_infoWTSPS <- function (URL = "http://www.dpi.inpe.br/tws/wtsps") { + + # obtains information about the WTSS service + wtsps.obj <- wtsps::WTSPS(URL) + show(wtsps.obj) # prints wtsps.obj + + return (invisible(wtsps.obj)) +} + +#' @title Provides information about one algorithm of the WTSPS service +#' @name sits_algorithmWTSPS +#' +#' @description uses the WTSPS services to print information about a +#' chosen algorithm: +#' name +#' input_parametes +#' output +#' description +#' +#' @param URL the URL for the WTSPS service +#' @param algorithm the name of the algorithm +#' @export +sits_algorithmWTSPS <- function (URL = "http://www.dpi.inpe.br/tws/wtsps", algorithm = NULL) { + + # describe the algorithm + algorithm.obj <- wtsps::describeAlgorithm(URL, algorithm) + show(algorithm.obj) # prints algorithm.obj + + return (invisible(algorithm.obj)) +} + +#' @title Runs a process in the WTSPS service +#' @name sits_runProcess_WTSPS +#' +#' @description uses the WTSPS services to run a process in the server +#' +#' @param URL the URL for the WTSPS service +#' @param ... algorithm name and its parameters +#' @export +sits_runProcess_WTSPS <- function (URL = "http://www.dpi.inpe.br/tws/wtsps", ...) { + + # runs process + proc.obj <- wtsps::runProcess(URL, ...) + show(proc.obj) # prints process obj + + return (invisible(proc.obj)) +} + +#' @title Provides information about a process running in the WTSPS service +#' @name sits_statusProcess_WTSPS +#' +#' @description uses the WTSPS services to get the status of a running process in the server +#' +#' @param URL the URL for the WTSPS service +#' @param uuid the id of the process +#' @export +sits_statusProcess_WTSPS <- function (URL = "http://www.dpi.inpe.br/tws/wtsps", uuid = NULL) { + + # get status from a process + proc.obj <- wtsps::statusProcess(URL, uuid) + show(proc.obj) # prints process obj + + return (invisible(proc.obj)) +} + +#' @title Cancels a process running in the WTSPS service +#' @name sits_cancelProcess_WTSPS +#' +#' @description uses the WTSPS services to cancel a process in the server +#' +#' @param URL the URL for the WTSPS service +#' @param uuid the id of the process +#' @export +sits_cancelProcess_WTSPS <- function (URL = "http://www.dpi.inpe.br/tws/wtsps", uuid = NULL) { + + # cancel a process + proc.obj <- wtsps::cancelProcess(URL, uuid) + show(proc.obj) # prints process obj + + return (invisible(proc.obj)) +} diff --git a/R/sits_classification.R b/R/sits_classification.R index f33dde374..6c19e0676 100644 --- a/R/sits_classification.R +++ b/R/sits_classification.R @@ -47,10 +47,10 @@ sits_classify <- function (data.tb = NULL, patterns.tb = NULL, # save the results predict.tb <<- tibble::add_row(predict.tb, - from = lubridate::as_date(date_pair[1]), - to = lubridate::as_date(date_pair[2]), - distance = 0.0, - predicted = predicted + from = lubridate::as_date(date_pair[1]), + to = lubridate::as_date(date_pair[2]), + distance = 0.0, + predicted = predicted ) }) @@ -76,3 +76,38 @@ sits_classify <- function (data.tb = NULL, patterns.tb = NULL, return(result.tb) } + +#' @title Classify a sits tibble using machine learning models +#' @name sits_classify2 +#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} +#' +#' @description Returns a sits table with the results of the ML classifier. +#' +#' @param data.tb a SITS tibble time series +#' @param ml_model a model trained by \code{\link[sits]{sits_train}} +#' @param dist_method method to compute distances (e.g., sits_TWDTW_distances) +#' @param interval the period between two classifications +#' @param ... other parameters to be passed to the distance function +#' @return data.tb a SITS tibble with the predicted labels for each input segment +#' @export +sits_classify2 <- function (data.tb = NULL, ml_model = NULL, + dist_method = sits_distances_from_data2(start_from = "2000-09-01", interval = "12 month")){ + + .sits_test_tibble(data.tb) + + ensurer::ensure_that(ml_model, !purrr::is_null(.), err_desc = "sits_classify: please provide a machine learning model already trained") + + # create a tibble to store the result + distances.tb <- dist_method(data.tb) + + # classify the subset data + distances.tb$predicted <- sits_predict(distances.tb, ml_model) + + # nest results and return + data.tb$predicted <- + distances.tb %>% + dplyr::select(original_row, from, to, predicted) %>% + tidyr::nest(from, to, predicted, .key = "predicted") %>% .$predicted + + return(data.tb) +} diff --git a/R/sits_cluster.R b/R/sits_cluster.R index c3072fa37..1f08f54e4 100644 --- a/R/sits_cluster.R +++ b/R/sits_cluster.R @@ -1,185 +1,185 @@ -#------------------------------------------------------------------ -#' @title Cuts a cluster tree produced by sits_dendrogram -#' @name sits_cluster -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' -#' @description reads a list of clusters provided by the dtwclust -#' package and produces a sits tibble. -#' @references "dtwclust" package (https://CRAN.R-project.org/package=dtwclust) -#' -#' @param data.tb a tibble with input data of dtwclust. -#' @param clusters a cluster structure returned from dtwclust. -#' @param k the desired number of clusters -#' @param height the desired height to cut the dendrogram. At least one of k or height must be specified, k overrides height if both are given. -#' @return result.tb a SITS tibble with the clusters or clusters' members -#' @export -sits_cluster <- function (data.tb, clusters, k = NULL, height = NULL) { - - #verifies if either k or height were informed - ensurer::ensure_that(k, !(is.null(.) & is.null(height)), - err_desc = "sits_cluster: you must provide at least k or height") - - # create a tibble to store the results - result.tb <- data.tb - - # cut the tree - result.tb$cluster <- stats::cutree(clusters, k, height) - - return (result.tb) -} - -#' @title Cluster validity indices -#' @name sits_cluster_validity -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' -#' @description Compute different cluster validity indices. This function needs -#' as input a SITS tibble with `cluster` column. It is a front-end to -#' `dtwclust::cvi` function. Please refer to the documentation in that package for more details. -#' @references "dtwclust" package (https://CRAN.R-project.org/package=dtwclust) -#' -#' @param data.tb a SITS tibble with `cluster` column. -#' @param type character vector indicating which indices are to be computed. (Default "valid") -#' @return result.vec vectors with chosen CVIs -#' @export -sits_cluster_validity <- function (data.tb, type = "valid") { - - # is the input data the result of a cluster function? - ensurer::ensure_that(data.tb, "cluster" %in% names (.), err_desc = "sits_cluster_validity: input data does not contain cluster column") - - # compute CVIs and return - result.vec <- dtwclust::cvi(a = data.tb$cluster, b = factor(data.tb$label), type = type, log.base = 10) - - return (result.vec) -} - -#' @title Cluster frequency -#' @name sits_cluster_frequency -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' -#' @description Computes the frequency of labels in each cluster. -#' This function needs as input a SITS tibble with `cluster` column. -#' -#' @param data.tb a SITS tibble with `cluster` column. -#' @param relative (boolean) return relative frequency? -#' @param margin number indicating how to compute relative frequency (1 regarding labels, 2 regarding clusters) (default 2) -#' @return result.mtx matrix containing all frequencies of labels in clusters -#' @export -sits_cluster_frequency <- function (data.tb, relative = FALSE, margin = 2) { - - # is the input data the result of a cluster function? - ensurer::ensure_that(data.tb, "cluster" %in% names (.), err_desc = "sits_cluster_frequency: input data does not contain cluster column") - - # compute frequency table - result.mtx <- table(data.tb$label, data.tb$cluster) - - # compute relative frequency - if (relative) - result.mtx <- prop.table(result.mtx, margin = margin) - - # compute total row and col - result.mtx <- stats::addmargins(result.mtx, FUN = list(Total = sum), quiet = TRUE) - return (result.mtx) -} - -#' @title Cluster cleaner -#' @name sits_cluster_cleaner -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' -#' @description Removes SITS tibble samples of labels that are minority in each cluster. -#' This function needs as input a SITS tibble with `cluster` column. -#' -#' @param data.tb a SITS tibble with `cluster` column. -#' @param min_clu_perc minimum percentage of labels inside a cluster to remain in cluster. -#' @param min_lab_perc minimum percentage of labels regarding its total to be keeped in cluster. -#' @return result.tb a SITS tibble with all selected samples -#' @export -sits_cluster_cleaner <- function (data.tb, min_clu_perc = 0.0, min_lab_perc = 0.0) { - - # verify if data.tb has data - .sits_test_tibble (data.tb) - - # is the input data the result of a cluster function? - ensurer::ensure_that(data.tb, "cluster" %in% names (.), err_desc = "sits_cluster_cleaner: input data does not contain cluster column") - - # compute frequency in each cluster - freq.mtx <- sits_cluster_frequency(data.tb, relative = TRUE, margin = 2) - - # get those indexes whose labels represents more than `min_clu_perc` - index.mtx <- which(freq.mtx[1:NROW(freq.mtx) - 1,1:NCOL(freq.mtx) - 1] > min_clu_perc, arr.ind = TRUE, useNames = TRUE) - - # return only those samples that satisfies the `min_clu_perc` condition - filter_condition_clu <- paste0(purrr::map2(rownames(index.mtx), index.mtx[,2], - function(lb, clu) paste0("label=='", lb, "' & cluster==", clu)), - collapse = " | ") - - # compute frequency in each label - freq.mtx <- sits_cluster_frequency(data.tb, relative = TRUE, margin = 1) - - # get those indexes whose labels represents more than `min_lab_perc` - index.mtx <- which(freq.mtx[1:NROW(freq.mtx) - 1,1:NCOL(freq.mtx) - 1] > min_lab_perc, arr.ind = TRUE, useNames = TRUE) - - # return only those samples that satisfies the `min_lab_perc` condition - filter_condition_lab <- paste0(purrr::map2(rownames(index.mtx), index.mtx[,2], - function(lb, clu) paste0("label=='", lb, "' & cluster==", clu)), - collapse = " | ") - - # if no index selected, return none - filter_condition <- ifelse(filter_condition_clu != "", - ifelse(filter_condition_lab != "", paste0("(", filter_condition_clu, ") & (", filter_condition_lab, ")"), "FALSE"), - "FALSE") - - # filter result and return - result.tb <- dplyr::filter_(data.tb, filter_condition) - return (result.tb) -} - -#' @title Cluster label -#' @name sits_cluster_names -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' -#' @description Renames the labels of SITS tibble samples according to its respective cluster. -#' This function needs as input a SITS tibble with `cluster` column. -#' -#' @param data.tb a SITS tibble with `cluster` column. -#' @return cluster_names character vector informing all cluster names. If unnamed vector is informed, -#' the index of each name will be treated as cluster code -#' @export -sits_cluster_names <- function (data.tb) { - - # is the input data the result of a cluster function? - ensurer::ensure_that(data.tb, "cluster" %in% names (.), err_desc = "sits_cluster_names: input data does not contain cluster column") - - # compute clusters names and return - cluster_names <- sort(base::unique(data.tb$cluster)) - return (cluster_names) -} - -#' @title Cluster names -#' @name `sits_cluster_names<-` -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' -#' @description Renames the labels of SITS tibble samples according to its respective cluster. -#' This function needs as input a SITS tibble with `cluster` column. -#' -#' @param data.tb a SITS tibble with `cluster` column. -#' @param value character vector informing all cluster names. If unnamed vector is informed, -#' the index of each name will be treated as cluster code -#' @return data.tb SITS tibble with relabeled samples -#' @export -`sits_cluster_names<-` <- function (data.tb, value) { - - # is the input data the result of a cluster function? - ensurer::ensure_that(data.tb, "cluster" %in% names (.), - err_desc = "sits_cluster_names: input data does not contain cluster column") - - # verify if the informed cluster names has the same length of clusters names - ensurer::ensure_that(data.tb, length(sits_cluster_names(.)) == length(value), - err_desc = "sits_cluster_name: informed names has length different of the number of clusters") - - # compute new clusters names - data_cluster_names.vec <- value[data.tb$cluster] %>% unlist() - - # relabel result and return - data.tb$label <- data_cluster_names.vec - return (data.tb) -} +#------------------------------------------------------------------ +#' @title Cuts a cluster tree produced by sits_dendrogram +#' @name sits_cluster +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' +#' @description reads a list of clusters provided by the dtwclust +#' package and produces a sits tibble. +#' @references "dtwclust" package (https://CRAN.R-project.org/package=dtwclust) +#' +#' @param data.tb a tibble with input data of dtwclust. +#' @param clusters a cluster structure returned from dtwclust. +#' @param k the desired number of clusters +#' @param height the desired height to cut the dendrogram. At least one of k or height must be specified, k overrides height if both are given. +#' @return result.tb a SITS tibble with the clusters or clusters' members +#' @export +sits_cluster <- function (data.tb, clusters, k = NULL, height = NULL) { + + #verifies if either k or height were informed + ensurer::ensure_that(k, !(is.null(.) & is.null(height)), + err_desc = "sits_cluster: you must provide at least k or height") + + # create a tibble to store the results + result.tb <- data.tb + + # cut the tree + result.tb$cluster <- stats::cutree(clusters, k, height) + + return (result.tb) +} + +#' @title Cluster validity indices +#' @name sits_cluster_validity +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' +#' @description Compute different cluster validity indices. This function needs +#' as input a SITS tibble with `cluster` column. It is a front-end to +#' `dtwclust::cvi` function. Please refer to the documentation in that package for more details. +#' @references "dtwclust" package (https://CRAN.R-project.org/package=dtwclust) +#' +#' @param data.tb a SITS tibble with `cluster` column. +#' @param type character vector indicating which indices are to be computed. (Default "valid") +#' @return result.vec vectors with chosen CVIs +#' @export +sits_cluster_validity <- function (data.tb, type = "valid") { + + # is the input data the result of a cluster function? + ensurer::ensure_that(data.tb, "cluster" %in% names (.), err_desc = "sits_cluster_validity: input data does not contain cluster column") + + # compute CVIs and return + result.vec <- dtwclust::cvi(a = data.tb$cluster, b = factor(data.tb$label), type = type, log.base = 10) + + return (result.vec) +} + +#' @title Cluster frequency +#' @name sits_cluster_frequency +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' +#' @description Computes the frequency of labels in each cluster. +#' This function needs as input a SITS tibble with `cluster` column. +#' +#' @param data.tb a SITS tibble with `cluster` column. +#' @param relative (boolean) return relative frequency? +#' @param margin number indicating how to compute relative frequency (1 regarding labels, 2 regarding clusters) (default 2) +#' @return result.mtx matrix containing all frequencies of labels in clusters +#' @export +sits_cluster_frequency <- function (data.tb, relative = FALSE, margin = 2) { + + # is the input data the result of a cluster function? + ensurer::ensure_that(data.tb, "cluster" %in% names (.), err_desc = "sits_cluster_frequency: input data does not contain cluster column") + + # compute frequency table + result.mtx <- table(data.tb$label, data.tb$cluster) + + # compute relative frequency + if (relative) + result.mtx <- prop.table(result.mtx, margin = margin) + + # compute total row and col + result.mtx <- stats::addmargins(result.mtx, FUN = list(Total = sum), quiet = TRUE) + return (result.mtx) +} + +#' @title Cluster cleaner +#' @name sits_cluster_cleaner +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' +#' @description Removes SITS tibble samples of labels that are minority in each cluster. +#' This function needs as input a SITS tibble with `cluster` column. +#' +#' @param data.tb a SITS tibble with `cluster` column. +#' @param min_clu_perc minimum percentage of labels inside a cluster to remain in cluster. +#' @param min_lab_perc minimum percentage of labels regarding its total to be keeped in cluster. +#' @return result.tb a SITS tibble with all selected samples +#' @export +sits_cluster_cleaner <- function (data.tb, min_clu_perc = 0.0, min_lab_perc = 0.0) { + + # verify if data.tb has data + .sits_test_tibble (data.tb) + + # is the input data the result of a cluster function? + ensurer::ensure_that(data.tb, "cluster" %in% names (.), err_desc = "sits_cluster_cleaner: input data does not contain cluster column") + + # compute frequency in each cluster + freq.mtx <- sits_cluster_frequency(data.tb, relative = TRUE, margin = 2) + + # get those indexes whose labels represents more than `min_clu_perc` + index.mtx <- which(freq.mtx[1:NROW(freq.mtx) - 1,1:NCOL(freq.mtx) - 1] > min_clu_perc, arr.ind = TRUE, useNames = TRUE) + + # return only those samples that satisfies the `min_clu_perc` condition + filter_condition_clu <- paste0(purrr::map2(rownames(index.mtx), index.mtx[,2], + function(lb, clu) paste0("label=='", lb, "' & cluster==", clu)), + collapse = " | ") + + # compute frequency in each label + freq.mtx <- sits_cluster_frequency(data.tb, relative = TRUE, margin = 1) + + # get those indexes whose labels represents more than `min_lab_perc` + index.mtx <- which(freq.mtx[1:NROW(freq.mtx) - 1,1:NCOL(freq.mtx) - 1] > min_lab_perc, arr.ind = TRUE, useNames = TRUE) + + # return only those samples that satisfies the `min_lab_perc` condition + filter_condition_lab <- paste0(purrr::map2(rownames(index.mtx), index.mtx[,2], + function(lb, clu) paste0("label=='", lb, "' & cluster==", clu)), + collapse = " | ") + + # if no index selected, return none + filter_condition <- ifelse(filter_condition_clu != "", + ifelse(filter_condition_lab != "", paste0("(", filter_condition_clu, ") & (", filter_condition_lab, ")"), "FALSE"), + "FALSE") + + # filter result and return + result.tb <- dplyr::filter_(data.tb, filter_condition) + return (result.tb) +} + +#' @title Cluster label +#' @name sits_cluster_names +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' +#' @description Renames the labels of SITS tibble samples according to its respective cluster. +#' This function needs as input a SITS tibble with `cluster` column. +#' +#' @param data.tb a SITS tibble with `cluster` column. +#' @return cluster_names character vector informing all cluster names. If unnamed vector is informed, +#' the index of each name will be treated as cluster code +#' @export +sits_cluster_names <- function (data.tb) { + + # is the input data the result of a cluster function? + ensurer::ensure_that(data.tb, "cluster" %in% names (.), err_desc = "sits_cluster_names: input data does not contain cluster column") + + # compute clusters names and return + cluster_names <- sort(base::unique(data.tb$cluster)) + return (cluster_names) +} + +#' @title Cluster names +#' @name `sits_cluster_names<-` +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' +#' @description Renames the labels of SITS tibble samples according to its respective cluster. +#' This function needs as input a SITS tibble with `cluster` column. +#' +#' @param data.tb a SITS tibble with `cluster` column. +#' @param value character vector informing all cluster names. If unnamed vector is informed, +#' the index of each name will be treated as cluster code +#' @return data.tb SITS tibble with relabeled samples +#' @export +`sits_cluster_names<-` <- function (data.tb, value) { + + # is the input data the result of a cluster function? + ensurer::ensure_that(data.tb, "cluster" %in% names (.), + err_desc = "sits_cluster_names: input data does not contain cluster column") + + # verify if the informed cluster names has the same length of clusters names + ensurer::ensure_that(data.tb, length(sits_cluster_names(.)) == length(value), + err_desc = "sits_cluster_name: informed names has length different of the number of clusters") + + # compute new clusters names + data_cluster_names.vec <- value[data.tb$cluster] %>% unlist() + + # relabel result and return + data.tb$label <- data_cluster_names.vec + return (data.tb) +} diff --git a/R/sits_colors.R b/R/sits_colors.R index f041aefde..dfc887bba 100644 --- a/R/sits_colors.R +++ b/R/sits_colors.R @@ -1,5024 +1,5024 @@ -#' @title Brewer color schemes -#' @name sits_plot_title -#' -#' @description brewer color schemes names to be used with `sits_plot_dendrogram` -#' -#' @param name name of the brewer color set -#' @return name string - a common color set name -#' @export -sits_color_name <- function(name = NULL){ - # approximate equivalent names in ISCC-NBS system - # see http://en.wikipedia.or"g/wiki/ISCC-NBS_system - names <- tibble::lst("BuGn" = "BuGn", - "BlueishGreens" = "BuGn", - "BlueGreens" = "BuGn", - "BlueGreen" = "BuGn", - "BuPu" = "BuPu", - "BlueishPurples" = "BuPu", - "BluePurples" = "BuPu", - "BluePurple" = "BuPu", - "GnBu" = "GnBu", - "GreenishBlues" = "GnBu", - "GreenBlues" = "GnBu", - "GreenBlue" = "GnBu", - "OrRd" = "OrRd", - "OrangishReds" = "OrRd", - "OrangeReds" = "OrRd", - "OrangeRed" = "OrRd", - "PuBu" = "PuBu", - "PurplishBlues" = "PuBu", - "PurpleBlues" = "PuBu", - "PurpleBlue" = "PuBu", - "PuBuGn" = "PuBuGn", - "PurplishBlueGreens" = "PuBuGn", - "PurpleBlueGreens" = "PuBuGn", - "PurpleBlueGreen" = "PuBuGn", - "PuRd" = "PuRd", - "PurplishReds" = "PuRd", - "PurpleReds" = "PuRd", - "PurpleRed" = "PuRd", - "RdPu" = "RdPu", - "ReddishPurples" = "RdPu", - "RedPurples" = "RdPu", - "RedPurple" = "RdPu", - "YlGn" = "YlGn", - "YellowishGreens" = "YlGn", - "YellowGreens" = "YlGn", - "YellowGreen" = "YlGn", - "YlGnBu" = "YlGnBu", - "YellowishGreenBlues" = "YlGnBu", - "YellowGreenBlues" = "YlGnBu", - "YellowGreenBlue" = "YlGnBu", - "YlOrBr" = "YlOrBr", - "YellowishOrangeBrowns" = "YlOrBr", - "YellowOrangeBrowns" = "YlOrBr", - "YellowOrangeBrown" = "YlOrBr", - "YlOrRd" = "YlOrRd", - "YellowishOrangereds" = "YlOrRd", - "YellowOrangeReds" = "YlOrRd", - "YellowOrangeRed" = "YlOrRd", - "Blues" = "Blues", - "Blue" = "Blues", - "Greens" = "Greens", - "Green" = "Greens", - "Greys" = "Greys", - "Grey" = "Greys", - "Grays" = "Greys", - "Gray" = "Greys", - "Oranges" = "Oranges", - "Orange" = "Oranges", - "Purples" = "Purples", - "Purple" = "Purples", - "Reds" = "Reds", - "Red" = "Reds", - "BrBG" = "BrBG", - "BrownsBlueGrens" = "BrBG", - "BrownsWhiteBlueGreens" = "BrBG", - "BrownsWhiteBlueGreen" = "BrBG", - "BrownsBlueGreens" = "BrBG", - "BrownBlueGreen" = "BrBG", - "PiYG" = "PiYG", - "PurplesWhiteYellowGreens" = "PiYG", - "PurplesYellowGreens" = "PiYG", - "PurplesYellowGreen" = "PiYG", - "PurplesYellowsGreens" = "PiYG", - "PRGn" = "PRGn", - "PurpleRedsWhiteGreens" = "PRGn", - "PurplesRedsWhiteGreens" = "PRGn", - "PurplesRedsGreens" = "PRGn", - "PurpleRedWhiteGreen" = "PRGn", - "PurpleRedGreen" = "PRGn", - "PuOr" = "PuOr", - "PurplesWhiteOranges" = "PuOr", - "PurplesOranges" = "PuOr", - "PurpleOrange" = "PuOr", - "RdBu" = "RdBu", - "RedsWhiteBlues" = "RdBu", - "RedWhiteBlue" = "RdBu", - "RedBlue" = "RdBu", - "RedsBlues" = "RdBu", - "RdGy" = "RdGy", - "RedsWhiteGreys" = "RdGy", - "RedsGreys" = "RdGy", - "RedGrey" = "RdGy", - "RdYlBu" = "RdYlBu", - "ReddishYellowWhiteBlues" = "RdYlBu", - "RedsYellowsBlues" = "RdYlBu", - "RedYellowWhiteBlue" = "RdYlBu", - "RedYellowBlue" = "RdYlBu", - "RdYlGn" = "RdYlGn", - "ReddishYellowWhiteGreens" = "RdYlGn", - "RedsYellowsWhitesGreens" = "RdYlGn", - "RedYellowWhiteGreen" = "RdYlGn", - "RedsYellowsGreens" = "RdYlGn", - "RedYellowGreen" = "RdYlGn", - "Spectral" = "Spectral", - "Paired" = "Paired", - "Pastel1" = "Pastel1", - "Pastel2" = "Pastel2", - "Set1" = "Set1", - "Set2" = "Set2", - "Set3" = "Set3", - "Accent" = "Accent", - "Dark" = "Dark" - ) - if (is.null(name)) - return(names) - return(names[[name]]) -} - -#' @title Brewer color schemes -#' @name sits_max_colors -#' -#' @description Number of colors available in brewer color schemes -#' -#' @param brewer name of the brewer color set -#' @return numeric number of available colors -#' @export -sits_max_colors <- function(brewer = NULL){ - if (is.null(brewer)) - return(.sits_brewerRGB %>% purrr::map(function(sch){ - sum((sch %>% - purrr::map(function(n) length(n)) %>% - as.numeric()) > 1) - })) - return(sum((.sits_brewerRGB[[sits_color_name(brewer)]] %>% - purrr::map(function(n) length(n)) %>% - as.numeric()) > 1)) -} - -#' @title Brewer color schemes -#' @name sits_colors -#' -#' @description Number of colors available in brewer color schemes -#' -#' @param brewer name of the brewer color set -#' @param n number of desirable colors (default 3) -#' @return list list of rgb colors -#' @export -sits_colors <- function(brewer, n = 3){ - return(.sits_brewerRGB[[sits_color_name(name)]][[as.character(n)]]) -} - -# Brewer color set constant -# based on http://colorbrewer2.org colors' schemes -.sits_brewerRGB = tibble::lst( - "Spectral" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(153 / 255, 213 / 255, 148 / 255)), - "4" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(171 / 255, 221 / 255, 164 / 255), - grDevices::rgb(43 / 255, 131 / 255, 186 / 255)), - "5" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(171 / 255, 221 / 255, 164 / 255), - grDevices::rgb(43 / 255, 131 / 255, 186 / 255)), - "6" = tibble::lst(grDevices::rgb(213 / 255, 62 / 255, 79 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(230 / 255, 245 / 255, 152 / 255), - grDevices::rgb(153 / 255, 213 / 255, 148 / 255), - grDevices::rgb(50 / 255, 136 / 255, 189 / 255)), - "7" = tibble::lst(grDevices::rgb(213 / 255, 62 / 255, 79 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(230 / 255, 245 / 255, 152 / 255), - grDevices::rgb(153 / 255, 213 / 255, 148 / 255), - grDevices::rgb(50 / 255, 136 / 255, 189 / 255)), - "8" = tibble::lst(grDevices::rgb(213 / 255, 62 / 255, 79 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(230 / 255, 245 / 255, 152 / 255), - grDevices::rgb(171 / 255, 221 / 255, 164 / 255), - grDevices::rgb(102 / 255, 194 / 255, 165 / 255), - grDevices::rgb(50 / 255, 136 / 255, 189 / 255)), - "9" = tibble::lst(grDevices::rgb(213 / 255, 62 / 255, 79 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(230 / 255, 245 / 255, 152 / 255), - grDevices::rgb(171 / 255, 221 / 255, 164 / 255), - grDevices::rgb(102 / 255, 194 / 255, 165 / 255), - grDevices::rgb(50 / 255, 136 / 255, 189 / 255)), - "10" = tibble::lst(grDevices::rgb(158 / 255, 1 / 255, 66 / 255), - grDevices::rgb(213 / 255, 62 / 255, 79 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(230 / 255, 245 / 255, 152 / 255), - grDevices::rgb(171 / 255, 221 / 255, 164 / 255), - grDevices::rgb(102 / 255, 194 / 255, 165 / 255), - grDevices::rgb(50 / 255, 136 / 255, 189 / 255), - grDevices::rgb(94 / 255, 79 / 255, 162 / 255)), - "11" = tibble::lst(grDevices::rgb(158 / 255, 1 / 255, 66 / 255), - grDevices::rgb(213 / 255, 62 / 255, 79 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(230 / 255, 245 / 255, 152 / 255), - grDevices::rgb(171 / 255, 221 / 255, 164 / 255), - grDevices::rgb(102 / 255, 194 / 255, 165 / 255), - grDevices::rgb(50 / 255, 136 / 255, 189 / 255), - grDevices::rgb(94 / 255, 79 / 255, 162 / 255)), - "type" = "divergent" - ), - "RdYlGn" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(145 / 255, 207 / 255, 96 / 255)), - "4" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(166 / 255, 217 / 255, 106 / 255), - grDevices::rgb(26 / 255, 150 / 255, 65 / 255)), - "5" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(166 / 255, 217 / 255, 106 / 255), - grDevices::rgb(26 / 255, 150 / 255, 65 / 255)), - "6" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(217 / 255, 239 / 255, 139 / 255), - grDevices::rgb(145 / 255, 207 / 255, 96 / 255), - grDevices::rgb(26 / 255, 152 / 255, 80 / 255)), - "7" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(217 / 255, 239 / 255, 139 / 255), - grDevices::rgb(145 / 255, 207 / 255, 96 / 255), - grDevices::rgb(26 / 255, 152 / 255, 80 / 255)), - "8" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(217 / 255, 239 / 255, 139 / 255), - grDevices::rgb(166 / 255, 217 / 255, 106 / 255), - grDevices::rgb(102 / 255, 189 / 255, 99 / 255), - grDevices::rgb(26 / 255, 152 / 255, 80 / 255)), - "9" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(217 / 255, 239 / 255, 139 / 255), - grDevices::rgb(166 / 255, 217 / 255, 106 / 255), - grDevices::rgb(102 / 255, 189 / 255, 99 / 255), - grDevices::rgb(26 / 255, 152 / 255, 80 / 255)), - "10" = tibble::lst(grDevices::rgb(165 / 255, 0 / 255, 38 / 255), - grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(217 / 255, 239 / 255, 139 / 255), - grDevices::rgb(166 / 255, 217 / 255, 106 / 255), - grDevices::rgb(102 / 255, 189 / 255, 99 / 255), - grDevices::rgb(26 / 255, 152 / 255, 80 / 255), - grDevices::rgb(0 / 255, 104 / 255, 55 / 255)), - "11" = tibble::lst(grDevices::rgb(165 / 255, 0 / 255, 38 / 255), - grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 139 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(217 / 255, 239 / 255, 139 / 255), - grDevices::rgb(166 / 255, 217 / 255, 106 / 255), - grDevices::rgb(102 / 255, 189 / 255, 99 / 255), - grDevices::rgb(26 / 255, 152 / 255, 80 / 255), - grDevices::rgb(0 / 255, 104 / 255, 55 / 255)), - "type" = "divergent" - ), - "RdBu" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(239 / 255, 138 / 255, 98 / 255), - grDevices::rgb(103 / 255, 169 / 255, 207 / 255)), - "3" = tibble::lst(grDevices::rgb(239 / 255, 138 / 255, 98 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(103 / 255, 169 / 255, 207 / 255)), - "4" = tibble::lst(grDevices::rgb(202 / 255, 0 / 255, 32 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(146 / 255, 197 / 255, 222 / 255), - grDevices::rgb(5 / 255, 113 / 255, 176 / 255)), - "5" = tibble::lst(grDevices::rgb(202 / 255, 0 / 255, 32 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(146 / 255, 197 / 255, 222 / 255), - grDevices::rgb(5 / 255, 113 / 255, 176 / 255)), - "6" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(239 / 255, 138 / 255, 98 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(209 / 255, 229 / 255, 240 / 255), - grDevices::rgb(103 / 255, 169 / 255, 207 / 255), - grDevices::rgb(33 / 255, 102 / 255, 172 / 255)), - "7" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(239 / 255, 138 / 255, 98 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(209 / 255, 229 / 255, 240 / 255), - grDevices::rgb(103 / 255, 169 / 255, 207 / 255), - grDevices::rgb(33 / 255, 102 / 255, 172 / 255)), - "8" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(214 / 255, 96 / 255, 77 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(209 / 255, 229 / 255, 240 / 255), - grDevices::rgb(146 / 255, 197 / 255, 222 / 255), - grDevices::rgb(67 / 255, 147 / 255, 195 / 255), - grDevices::rgb(33 / 255, 102 / 255, 172 / 255)), - "9" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(214 / 255, 96 / 255, 77 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(209 / 255, 229 / 255, 240 / 255), - grDevices::rgb(146 / 255, 197 / 255, 222 / 255), - grDevices::rgb(67 / 255, 147 / 255, 195 / 255), - grDevices::rgb(33 / 255, 102 / 255, 172 / 255)), - "10" = tibble::lst(grDevices::rgb(103 / 255, 0 / 255, 31 / 255), - grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(214 / 255, 96 / 255, 77 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(209 / 255, 229 / 255, 240 / 255), - grDevices::rgb(146 / 255, 197 / 255, 222 / 255), - grDevices::rgb(67 / 255, 147 / 255, 195 / 255), - grDevices::rgb(33 / 255, 102 / 255, 172 / 255), - grDevices::rgb(5 / 255, 48 / 255, 97 / 255)), - "11" = tibble::lst(grDevices::rgb(103 / 255, 0 / 255, 31 / 255), - grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(214 / 255, 96 / 255, 77 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(209 / 255, 229 / 255, 240 / 255), - grDevices::rgb(146 / 255, 197 / 255, 222 / 255), - grDevices::rgb(67 / 255, 147 / 255, 195 / 255), - grDevices::rgb(33 / 255, 102 / 255, 172 / 255), - grDevices::rgb(5 / 255, 48 / 255, 97 / 255)), - "type" = "divergent" - ), - "PiYG" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(233 / 255, 163 / 255, 201 / 255), - grDevices::rgb(161 / 255, 215 / 255, 106 / 255)), - "3" = tibble::lst(grDevices::rgb(233 / 255, 163 / 255, 201 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(161 / 255, 215 / 255, 106 / 255)), - "4" = tibble::lst(grDevices::rgb(208 / 255, 28 / 255, 139 / 255), - grDevices::rgb(241 / 255, 182 / 255, 218 / 255), - grDevices::rgb(184 / 255, 225 / 255, 134 / 255), - grDevices::rgb(77 / 255, 172 / 255, 38 / 255)), - "5" = tibble::lst(grDevices::rgb(208 / 255, 28 / 255, 139 / 255), - grDevices::rgb(241 / 255, 182 / 255, 218 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(184 / 255, 225 / 255, 134 / 255), - grDevices::rgb(77 / 255, 172 / 255, 38 / 255)), - "6" = tibble::lst(grDevices::rgb(197 / 255, 27 / 255, 125 / 255), - grDevices::rgb(233 / 255, 163 / 255, 201 / 255), - grDevices::rgb(253 / 255, 224 / 255, 239 / 255), - grDevices::rgb(230 / 255, 245 / 255, 208 / 255), - grDevices::rgb(161 / 255, 215 / 255, 106 / 255), - grDevices::rgb(77 / 255, 146 / 255, 33 / 255)), - "7" = tibble::lst(grDevices::rgb(197 / 255, 27 / 255, 125 / 255), - grDevices::rgb(233 / 255, 163 / 255, 201 / 255), - grDevices::rgb(253 / 255, 224 / 255, 239 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(230 / 255, 245 / 255, 208 / 255), - grDevices::rgb(161 / 255, 215 / 255, 106 / 255), - grDevices::rgb(77 / 255, 146 / 255, 33 / 255)), - "8" = tibble::lst(grDevices::rgb(197 / 255, 27 / 255, 125 / 255), - grDevices::rgb(222 / 255, 119 / 255, 174 / 255), - grDevices::rgb(241 / 255, 182 / 255, 218 / 255), - grDevices::rgb(253 / 255, 224 / 255, 239 / 255), - grDevices::rgb(230 / 255, 245 / 255, 208 / 255), - grDevices::rgb(184 / 255, 225 / 255, 134 / 255), - grDevices::rgb(127 / 255, 188 / 255, 65 / 255), - grDevices::rgb(77 / 255, 146 / 255, 33 / 255)), - "9" = tibble::lst(grDevices::rgb(197 / 255, 27 / 255, 125 / 255), - grDevices::rgb(222 / 255, 119 / 255, 174 / 255), - grDevices::rgb(241 / 255, 182 / 255, 218 / 255), - grDevices::rgb(253 / 255, 224 / 255, 239 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(230 / 255, 245 / 255, 208 / 255), - grDevices::rgb(184 / 255, 225 / 255, 134 / 255), - grDevices::rgb(127 / 255, 188 / 255, 65 / 255), - grDevices::rgb(77 / 255, 146 / 255, 33 / 255)), - "10" = tibble::lst(grDevices::rgb(142 / 255, 1 / 255, 82 / 255), - grDevices::rgb(197 / 255, 27 / 255, 125 / 255), - grDevices::rgb(222 / 255, 119 / 255, 174 / 255), - grDevices::rgb(241 / 255, 182 / 255, 218 / 255), - grDevices::rgb(253 / 255, 224 / 255, 239 / 255), - grDevices::rgb(230 / 255, 245 / 255, 208 / 255), - grDevices::rgb(184 / 255, 225 / 255, 134 / 255), - grDevices::rgb(127 / 255, 188 / 255, 65 / 255), - grDevices::rgb(77 / 255, 146 / 255, 33 / 255), - grDevices::rgb(39 / 255, 100 / 255, 25 / 255)), - "11" = tibble::lst(grDevices::rgb(142 / 255, 1 / 255, 82 / 255), - grDevices::rgb(197 / 255, 27 / 255, 125 / 255), - grDevices::rgb(222 / 255, 119 / 255, 174 / 255), - grDevices::rgb(241 / 255, 182 / 255, 218 / 255), - grDevices::rgb(253 / 255, 224 / 255, 239 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(230 / 255, 245 / 255, 208 / 255), - grDevices::rgb(184 / 255, 225 / 255, 134 / 255), - grDevices::rgb(127 / 255, 188 / 255, 65 / 255), - grDevices::rgb(77 / 255, 146 / 255, 33 / 255), - grDevices::rgb(39 / 255, 100 / 255, 25 / 255)), - "type" = "divergent" - ), - "PRGn" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(175 / 255, 141 / 255, 195 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(127 / 255, 191 / 255, 123 / 255)), - "4" = tibble::lst(grDevices::rgb(123 / 255, 50 / 255, 148 / 255), - grDevices::rgb(194 / 255, 165 / 255, 207 / 255), - grDevices::rgb(166 / 255, 219 / 255, 160 / 255), - grDevices::rgb(0 / 255, 136 / 255, 55 / 255)), - "5" = tibble::lst(grDevices::rgb(123 / 255, 50 / 255, 148 / 255), - grDevices::rgb(194 / 255, 165 / 255, 207 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(166 / 255, 219 / 255, 160 / 255), - grDevices::rgb(0 / 255, 136 / 255, 55 / 255)), - "6" = tibble::lst(grDevices::rgb(118 / 255, 42 / 255, 131 / 255), - grDevices::rgb(175 / 255, 141 / 255, 195 / 255), - grDevices::rgb(231 / 255, 212 / 255, 232 / 255), - grDevices::rgb(217 / 255, 240 / 255, 211 / 255), - grDevices::rgb(127 / 255, 191 / 255, 123 / 255), - grDevices::rgb(27 / 255, 120 / 255, 55 / 255)), - "7" = tibble::lst(grDevices::rgb(118 / 255, 42 / 255, 131 / 255), - grDevices::rgb(175 / 255, 141 / 255, 195 / 255), - grDevices::rgb(231 / 255, 212 / 255, 232 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(217 / 255, 240 / 255, 211 / 255), - grDevices::rgb(127 / 255, 191 / 255, 123 / 255), - grDevices::rgb(27 / 255, 120 / 255, 55 / 255)), - "8" = tibble::lst(grDevices::rgb(118 / 255, 42 / 255, 131 / 255), - grDevices::rgb(153 / 255, 112 / 255, 171 / 255), - grDevices::rgb(194 / 255, 165 / 255, 207 / 255), - grDevices::rgb(231 / 255, 212 / 255, 232 / 255), - grDevices::rgb(217 / 255, 240 / 255, 211 / 255), - grDevices::rgb(166 / 255, 219 / 255, 160 / 255), - grDevices::rgb(90 / 255, 174 / 255, 97 / 255), - grDevices::rgb(27 / 255, 120 / 255, 55 / 255)), - "9" = tibble::lst(grDevices::rgb(118 / 255, 42 / 255, 131 / 255), - grDevices::rgb(153 / 255, 112 / 255, 171 / 255), - grDevices::rgb(194 / 255, 165 / 255, 207 / 255), - grDevices::rgb(231 / 255, 212 / 255, 232 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(217 / 255, 240 / 255, 211 / 255), - grDevices::rgb(166 / 255, 219 / 255, 160 / 255), - grDevices::rgb(90 / 255, 174 / 255, 97 / 255), - grDevices::rgb(27 / 255, 120 / 255, 55 / 255)), - "10" = tibble::lst(grDevices::rgb(64 / 255, 0 / 255, 75 / 255), - grDevices::rgb(118 / 255, 42 / 255, 131 / 255), - grDevices::rgb(153 / 255, 112 / 255, 171 / 255), - grDevices::rgb(194 / 255, 165 / 255, 207 / 255), - grDevices::rgb(231 / 255, 212 / 255, 232 / 255), - grDevices::rgb(217 / 255, 240 / 255, 211 / 255), - grDevices::rgb(166 / 255, 219 / 255, 160 / 255), - grDevices::rgb(90 / 255, 174 / 255, 97 / 255), - grDevices::rgb(27 / 255, 120 / 255, 55 / 255), - grDevices::rgb(0 / 255, 68 / 255, 27 / 255)), - "11" = tibble::lst(grDevices::rgb(64 / 255, 0 / 255, 75 / 255), - grDevices::rgb(118 / 255, 42 / 255, 131 / 255), - grDevices::rgb(153 / 255, 112 / 255, 171 / 255), - grDevices::rgb(194 / 255, 165 / 255, 207 / 255), - grDevices::rgb(231 / 255, 212 / 255, 232 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(217 / 255, 240 / 255, 211 / 255), - grDevices::rgb(166 / 255, 219 / 255, 160 / 255), - grDevices::rgb(90 / 255, 174 / 255, 97 / 255), - grDevices::rgb(27 / 255, 120 / 255, 55 / 255), - grDevices::rgb(0 / 255, 68 / 255, 27 / 255)), - "type" = "divergent" - ), - "RdYlBu" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(145 / 255, 191 / 255, 219 / 255)), - "3" = tibble::lst(grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(145 / 255, 191 / 255, 219 / 255)), - "4" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(171 / 255, 217 / 255, 233 / 255), - grDevices::rgb(44 / 255, 123 / 255, 182 / 255)), - "5" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(171 / 255, 217 / 255, 233 / 255), - grDevices::rgb(44 / 255, 123 / 255, 182 / 255)), - "6" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(254 / 255, 224 / 255, 144 / 255), - grDevices::rgb(224 / 255, 243 / 255, 248 / 255), - grDevices::rgb(145 / 255, 191 / 255, 219 / 255), - grDevices::rgb(69 / 255, 117 / 255, 180 / 255)), - "7" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(254 / 255, 224 / 255, 144 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(224 / 255, 243 / 255, 248 / 255), - grDevices::rgb(145 / 255, 191 / 255, 219 / 255), - grDevices::rgb(69 / 255, 117 / 255, 180 / 255)), - "8" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 144 / 255), - grDevices::rgb(224 / 255, 243 / 255, 248 / 255), - grDevices::rgb(171 / 255, 217 / 255, 233 / 255), - grDevices::rgb(116 / 255, 173 / 255, 209 / 255), - grDevices::rgb(69 / 255, 117 / 255, 180 / 255)), - "9" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 144 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(224 / 255, 243 / 255, 248 / 255), - grDevices::rgb(171 / 255, 217 / 255, 233 / 255), - grDevices::rgb(116 / 255, 173 / 255, 209 / 255), - grDevices::rgb(69 / 255, 117 / 255, 180 / 255)), - "10" = tibble::lst(grDevices::rgb(165 / 255, 0 / 255, 38 / 255), - grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 144 / 255), - grDevices::rgb(224 / 255, 243 / 255, 248 / 255), - grDevices::rgb(171 / 255, 217 / 255, 233 / 255), - grDevices::rgb(116 / 255, 173 / 255, 209 / 255), - grDevices::rgb(69 / 255, 117 / 255, 180 / 255), - grDevices::rgb(49 / 255, 54 / 255, 149 / 255)), - "11" = tibble::lst(grDevices::rgb(165 / 255, 0 / 255, 38 / 255), - grDevices::rgb(215 / 255, 48 / 255, 39 / 255), - grDevices::rgb(244 / 255, 109 / 255, 67 / 255), - grDevices::rgb(253 / 255, 174 / 255, 97 / 255), - grDevices::rgb(254 / 255, 224 / 255, 144 / 255), - grDevices::rgb(255 / 255, 255 / 255, 191 / 255), - grDevices::rgb(224 / 255, 243 / 255, 248 / 255), - grDevices::rgb(171 / 255, 217 / 255, 233 / 255), - grDevices::rgb(116 / 255, 173 / 255, 209 / 255), - grDevices::rgb(69 / 255, 117 / 255, 180 / 255), - grDevices::rgb(49 / 255, 54 / 255, 149 / 255)), - "type" = "divergent" - ), - "BrBG" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(216 / 255, 179 / 255, 101 / 255), - grDevices::rgb(90 / 255, 180 / 255, 172 / 255)), - "3" = tibble::lst(grDevices::rgb(216 / 255, 179 / 255, 101 / 255), - grDevices::rgb(245 / 255, 245 / 255, 245 / 255), - grDevices::rgb(90 / 255, 180 / 255, 172 / 255)), - "4" = tibble::lst(grDevices::rgb(166 / 255, 97 / 255, 26 / 255), - grDevices::rgb(223 / 255, 194 / 255, 125 / 255), - grDevices::rgb(128 / 255, 205 / 255, 193 / 255), - grDevices::rgb(1 / 255, 133 / 255, 113 / 255)), - "5" = tibble::lst(grDevices::rgb(166 / 255, 97 / 255, 26 / 255), - grDevices::rgb(223 / 255, 194 / 255, 125 / 255), - grDevices::rgb(245 / 255, 245 / 255, 245 / 255), - grDevices::rgb(128 / 255, 205 / 255, 193 / 255), - grDevices::rgb(1 / 255, 133 / 255, 113 / 255)), - "6" = tibble::lst(grDevices::rgb(140 / 255, 81 / 255, 10 / 255), - grDevices::rgb(216 / 255, 179 / 255, 101 / 255), - grDevices::rgb(246 / 255, 232 / 255, 195 / 255), - grDevices::rgb(199 / 255, 234 / 255, 229 / 255), - grDevices::rgb(90 / 255, 180 / 255, 172 / 255), - grDevices::rgb(1 / 255, 102 / 255, 94 / 255)), - "7" = tibble::lst(grDevices::rgb(140 / 255, 81 / 255, 10 / 255), - grDevices::rgb(216 / 255, 179 / 255, 101 / 255), - grDevices::rgb(246 / 255, 232 / 255, 195 / 255), - grDevices::rgb(245 / 255, 245 / 255, 245 / 255), - grDevices::rgb(199 / 255, 234 / 255, 229 / 255), - grDevices::rgb(90 / 255, 180 / 255, 172 / 255), - grDevices::rgb(1 / 255, 102 / 255, 94 / 255)), - "8" = tibble::lst(grDevices::rgb(140 / 255, 81 / 255, 10 / 255), - grDevices::rgb(191 / 255, 129 / 255, 45 / 255), - grDevices::rgb(223 / 255, 194 / 255, 125 / 255), - grDevices::rgb(246 / 255, 232 / 255, 195 / 255), - grDevices::rgb(199 / 255, 234 / 255, 229 / 255), - grDevices::rgb(128 / 255, 205 / 255, 193 / 255), - grDevices::rgb(53 / 255, 151 / 255, 143 / 255), - grDevices::rgb(1 / 255, 102 / 255, 94 / 255)), - "9" = tibble::lst(grDevices::rgb(140 / 255, 81 / 255, 10 / 255), - grDevices::rgb(191 / 255, 129 / 255, 45 / 255), - grDevices::rgb(223 / 255, 194 / 255, 125 / 255), - grDevices::rgb(246 / 255, 232 / 255, 195 / 255), - grDevices::rgb(245 / 255, 245 / 255, 245 / 255), - grDevices::rgb(199 / 255, 234 / 255, 229 / 255), - grDevices::rgb(128 / 255, 205 / 255, 193 / 255), - grDevices::rgb(53 / 255, 151 / 255, 143 / 255), - grDevices::rgb(1 / 255, 102 / 255, 94 / 255)), - "10" = tibble::lst(grDevices::rgb(84 / 255, 48 / 255, 5 / 255), - grDevices::rgb(140 / 255, 81 / 255, 10 / 255), - grDevices::rgb(191 / 255, 129 / 255, 45 / 255), - grDevices::rgb(223 / 255, 194 / 255, 125 / 255), - grDevices::rgb(246 / 255, 232 / 255, 195 / 255), - grDevices::rgb(199 / 255, 234 / 255, 229 / 255), - grDevices::rgb(128 / 255, 205 / 255, 193 / 255), - grDevices::rgb(53 / 255, 151 / 255, 143 / 255), - grDevices::rgb(1 / 255, 102 / 255, 94 / 255), - grDevices::rgb(0 / 255, 60 / 255, 48 / 255)), - "11" = tibble::lst(grDevices::rgb(84 / 255, 48 / 255, 5 / 255), - grDevices::rgb(140 / 255, 81 / 255, 10 / 255), - grDevices::rgb(191 / 255, 129 / 255, 45 / 255), - grDevices::rgb(223 / 255, 194 / 255, 125 / 255), - grDevices::rgb(246 / 255, 232 / 255, 195 / 255), - grDevices::rgb(245 / 255, 245 / 255, 245 / 255), - grDevices::rgb(199 / 255, 234 / 255, 229 / 255), - grDevices::rgb(128 / 255, 205 / 255, 193 / 255), - grDevices::rgb(53 / 255, 151 / 255, 143 / 255), - grDevices::rgb(1 / 255, 102 / 255, 94 / 255), - grDevices::rgb(0 / 255, 60 / 255, 48 / 255)), - "type" = "divergent" - ), - "RdGy" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(239 / 255, 138 / 255, 98 / 255), - grDevices::rgb(153 / 255, 153 / 255, 153 / 255)), - "3" = tibble::lst(grDevices::rgb(239 / 255, 138 / 255, 98 / 255), - grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(153 / 255, 153 / 255, 153 / 255)), - "4" = tibble::lst(grDevices::rgb(202 / 255, 0 / 255, 32 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(186 / 255, 186 / 255, 186 / 255), - grDevices::rgb(64 / 255, 64 / 255, 64 / 255)), - "5" = tibble::lst(grDevices::rgb(202 / 255, 0 / 255, 32 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(186 / 255, 186 / 255, 186 / 255), - grDevices::rgb(64 / 255, 64 / 255, 64 / 255)), - "6" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(239 / 255, 138 / 255, 98 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(224 / 255, 224 / 255, 224 / 255), - grDevices::rgb(153 / 255, 153 / 255, 153 / 255), - grDevices::rgb(77 / 255, 77 / 255,77 / 255)), - "7" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(239 / 255, 138 / 255, 98 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(224 / 255, 224 / 255, 224 / 255), - grDevices::rgb(153 / 255, 153 / 255, 153 / 255), - grDevices::rgb(77 / 255, 77 / 255,77 / 255)), - "8" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(214 / 255, 96 / 255, 77 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(224 / 255, 224 / 255, 224 / 255), - grDevices::rgb(186 / 255, 186 / 255, 186 / 255), - grDevices::rgb(135 / 255, 135 / 255, 135 / 255), - grDevices::rgb(77 / 255, 77 / 255,77 / 255)), - "9" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(214 / 255, 96 / 255, 77 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(224 / 255, 224 / 255, 224 / 255), - grDevices::rgb(186 / 255, 186 / 255, 186 / 255), - grDevices::rgb(135 / 255, 135 / 255, 135 / 255), - grDevices::rgb(77 / 255, 77 / 255,77 / 255)), - "10" = tibble::lst(grDevices::rgb(103 / 255, 0 / 255, 31 / 255), - grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(214 / 255, 96 / 255, 77 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(224 / 255, 224 / 255, 224 / 255), - grDevices::rgb(186 / 255, 186 / 255, 186 / 255), - grDevices::rgb(135 / 255, 135 / 255, 135 / 255), - grDevices::rgb(77 / 255, 77 / 255,77 / 255), - grDevices::rgb(26 / 255, 26 / 255, 26 / 255)), - "11" = tibble::lst(grDevices::rgb(103 / 255, 0 / 255, 31 / 255), - grDevices::rgb(178 / 255, 24 / 255, 43 / 255), - grDevices::rgb(214 / 255, 96 / 255, 77 / 255), - grDevices::rgb(244 / 255, 165 / 255, 130 / 255), - grDevices::rgb(253 / 255, 219 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(224 / 255, 224 / 255, 224 / 255), - grDevices::rgb(186 / 255, 186 / 255, 186 / 255), - grDevices::rgb(135 / 255, 135 / 255, 135 / 255), - grDevices::rgb(77 / 255, 77 / 255,77 / 255), - grDevices::rgb(26 / 255, 26 / 255, 26 / 255)), - "type" = "divergent" - ), - "PuOr" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(241 / 255, 163 / 255, 64 / 255), - grDevices::rgb(153 / 255, 142 / 255, 195 / 255)), - "3" = tibble::lst(grDevices::rgb(241 / 255, 163 / 255, 64 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(153 / 255, 142 / 255, 195 / 255)), - "4" = tibble::lst(grDevices::rgb(230 / 255, 97 / 255, 1 / 255), - grDevices::rgb(253 / 255, 184 / 255, 99 / 255), - grDevices::rgb(178 / 255, 171 / 255, 210 / 255), - grDevices::rgb(94 / 255, 60 / 255, 153 / 255)), - "5" = tibble::lst(grDevices::rgb(230 / 255, 97 / 255, 1 / 255), - grDevices::rgb(253 / 255, 184 / 255, 99 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(178 / 255, 171 / 255, 210 / 255), - grDevices::rgb(94 / 255, 60 / 255, 153 / 255)), - "6" = tibble::lst(grDevices::rgb(179 / 255, 88 / 255, 6 / 255), - grDevices::rgb(241 / 255, 163 / 255, 64 / 255), - grDevices::rgb(254 / 255, 224 / 255, 182 / 255), - grDevices::rgb(216 / 255, 218 / 255, 235 / 255), - grDevices::rgb(153 / 255, 142 / 255, 195 / 255), - grDevices::rgb(84 / 255, 39 / 255, 136 / 255)), - "7" = tibble::lst(grDevices::rgb(179 / 255, 88 / 255, 6 / 255), - grDevices::rgb(241 / 255, 163 / 255, 64 / 255), - grDevices::rgb(254 / 255, 224 / 255, 182 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(216 / 255, 218 / 255, 235 / 255), - grDevices::rgb(153 / 255, 142 / 255, 195 / 255), - grDevices::rgb(84 / 255, 39 / 255, 136 / 255)), - "8" = tibble::lst(grDevices::rgb(179 / 255, 88 / 255, 6 / 255), - grDevices::rgb(224 / 255, 130 / 255, 20 / 255), - grDevices::rgb(253 / 255, 184 / 255, 99 / 255), - grDevices::rgb(254 / 255, 224 / 255, 182 / 255), - grDevices::rgb(216 / 255, 218 / 255, 235 / 255), - grDevices::rgb(178 / 255, 171 / 255, 210 / 255), - grDevices::rgb(128 / 255, 115 / 255, 172 / 255), - grDevices::rgb(84 / 255, 39 / 255, 136 / 255)), - "9" = tibble::lst(grDevices::rgb(179 / 255, 88 / 255, 6 / 255), - grDevices::rgb(224 / 255, 130 / 255, 20 / 255), - grDevices::rgb(253 / 255, 184 / 255, 99 / 255), - grDevices::rgb(254 / 255, 224 / 255, 182 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(216 / 255, 218 / 255, 235 / 255), - grDevices::rgb(178 / 255, 171 / 255, 210 / 255), - grDevices::rgb(128 / 255, 115 / 255, 172 / 255), - grDevices::rgb(84 / 255, 39 / 255, 136 / 255)), - "10" = tibble::lst(grDevices::rgb(127 / 255, 59 / 255, 8 / 255), - grDevices::rgb(179 / 255, 88 / 255, 6 / 255), - grDevices::rgb(224 / 255, 130 / 255, 20 / 255), - grDevices::rgb(253 / 255, 184 / 255, 99 / 255), - grDevices::rgb(254 / 255, 224 / 255, 182 / 255), - grDevices::rgb(216 / 255, 218 / 255, 235 / 255), - grDevices::rgb(178 / 255, 171 / 255, 210 / 255), - grDevices::rgb(128 / 255, 115 / 255, 172 / 255), - grDevices::rgb(84 / 255, 39 / 255, 136 / 255), - grDevices::rgb(45 / 255, 0 / 255, 75 / 255)), - "11" = tibble::lst(grDevices::rgb(127 / 255, 59 / 255, 8 / 255), - grDevices::rgb(179 / 255, 88 / 255, 6 / 255), - grDevices::rgb(224 / 255, 130 / 255, 20 / 255), - grDevices::rgb(253 / 255, 184 / 255, 99 / 255), - grDevices::rgb(254 / 255, 224 / 255, 182 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(216 / 255, 218 / 255, 235 / 255), - grDevices::rgb(178 / 255, 171 / 255, 210 / 255), - grDevices::rgb(128 / 255, 115 / 255, 172 / 255), - grDevices::rgb(84 / 255, 39 / 255, 136 / 255), - grDevices::rgb(45 / 255, 0 / 255, 75 / 255)), - "type" = "divergent" - ), - "Set2" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), - grDevices::rgb(252 / 255, 141 / 255, 98 / 255), - grDevices::rgb(141 / 255, 160 / 255, 203 / 255)), - "4" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), - grDevices::rgb(252 / 255, 141 / 255, 98 / 255), - grDevices::rgb(141 / 255, 160 / 255, 203 / 255), - grDevices::rgb(231 / 255, 138 / 255, 195 / 255)), - "5" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), - grDevices::rgb(252 / 255, 141 / 255, 98 / 255), - grDevices::rgb(141 / 255, 160 / 255, 203 / 255), - grDevices::rgb(231 / 255, 138 / 255, 195 / 255), - grDevices::rgb(166 / 255, 216 / 255, 84 / 255)), - "6" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), - grDevices::rgb(252 / 255, 141 / 255, 98 / 255), - grDevices::rgb(141 / 255, 160 / 255, 203 / 255), - grDevices::rgb(231 / 255, 138 / 255, 195 / 255), - grDevices::rgb(166 / 255, 216 / 255, 84 / 255), - grDevices::rgb(255 / 255, 217 / 255, 47 / 255)), - "7" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), - grDevices::rgb(252 / 255, 141 / 255, 98 / 255), - grDevices::rgb(141 / 255, 160 / 255, 203 / 255), - grDevices::rgb(231 / 255, 138 / 255, 195 / 255), - grDevices::rgb(166 / 255, 216 / 255, 84 / 255), - grDevices::rgb(255 / 255, 217 / 255, 47 / 255), - grDevices::rgb(229 / 255, 196 / 255, 148 / 255)), - "8" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), - grDevices::rgb(252 / 255, 141 / 255, 98 / 255), - grDevices::rgb(141 / 255, 160 / 255, 203 / 255), - grDevices::rgb(231 / 255, 138 / 255, 195 / 255), - grDevices::rgb(166 / 255, 216 / 255, 84 / 255), - grDevices::rgb(255 / 255, 217 / 255, 47 / 255), - grDevices::rgb(229 / 255, 196 / 255, 148 / 255), - grDevices::rgb(179 / 255, 179 / 255, 179 / 255)), - "type" = "qualitative" - ), - "Accent" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), - grDevices::rgb(190 / 255, 174 / 255, 212 / 255), - grDevices::rgb(253 / 255, 192 / 255, 134 / 255)), - "4" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), - grDevices::rgb(190 / 255, 174 / 255, 212 / 255), - grDevices::rgb(253 / 255, 192 / 255, 134 / 255), - grDevices::rgb(255 / 255, 255 / 255, 153 / 255)), - "5" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), - grDevices::rgb(190 / 255, 174 / 255, 212 / 255), - grDevices::rgb(253 / 255, 192 / 255, 134 / 255), - grDevices::rgb(255 / 255, 255 / 255, 153 / 255), - grDevices::rgb(56 / 255, 108 / 255, 176 / 255)), - "6" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), - grDevices::rgb(190 / 255, 174 / 255, 212 / 255), - grDevices::rgb(253 / 255, 192 / 255, 134 / 255), - grDevices::rgb(255 / 255, 255 / 255, 153 / 255), - grDevices::rgb(56 / 255, 108 / 255, 176 / 255), - grDevices::rgb(240 / 255, 2 / 255, 127 / 255)), - "7" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), - grDevices::rgb(190 / 255, 174 / 255, 212 / 255), - grDevices::rgb(253 / 255, 192 / 255, 134 / 255), - grDevices::rgb(255 / 255, 255 / 255, 153 / 255), - grDevices::rgb(56 / 255, 108 / 255, 176 / 255), - grDevices::rgb(240 / 255, 2 / 255, 127 / 255), - grDevices::rgb(191 / 255, 91 / 255, 23 / 255)), - "8" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), - grDevices::rgb(190 / 255, 174 / 255, 212 / 255), - grDevices::rgb(253 / 255, 192 / 255, 134 / 255), - grDevices::rgb(255 / 255, 255 / 255, 153 / 255), - grDevices::rgb(56 / 255, 108 / 255, 176 / 255), - grDevices::rgb(240 / 255, 2 / 255, 127 / 255), - grDevices::rgb(191 / 255, 91 / 255, 23 / 255), - grDevices::rgb(102 / 255, 102 / 255, 102 / 255)), - "type" = "qualitative" - ), - "Set1" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), - grDevices::rgb(55 / 255, 126 / 255, 184 / 255), - grDevices::rgb(77 / 255, 175 / 255, 74 / 255)), - "4" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), - grDevices::rgb(55 / 255, 126 / 255, 184 / 255), - grDevices::rgb(77 / 255, 175 / 255, 74 / 255), - grDevices::rgb(152 / 255,78 / 255, 163 / 255)), - "5" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), - grDevices::rgb(55 / 255, 126 / 255, 184 / 255), - grDevices::rgb(77 / 255, 175 / 255, 74 / 255), - grDevices::rgb(152 / 255,78 / 255, 163 / 255), - grDevices::rgb(255 / 255, 127 / 255, 0 / 255)), - "6" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), - grDevices::rgb(55 / 255, 126 / 255, 184 / 255), - grDevices::rgb(77 / 255, 175 / 255, 74 / 255), - grDevices::rgb(152 / 255,78 / 255, 163 / 255), - grDevices::rgb(255 / 255, 127 / 255, 0 / 255), - grDevices::rgb(255 / 255, 255 / 255, 51 / 255)), - "7" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), - grDevices::rgb(55 / 255, 126 / 255, 184 / 255), - grDevices::rgb(77 / 255, 175 / 255, 74 / 255), - grDevices::rgb(152 / 255,78 / 255, 163 / 255), - grDevices::rgb(255 / 255, 127 / 255, 0 / 255), - grDevices::rgb(255 / 255, 255 / 255, 51 / 255), - grDevices::rgb(166 / 255, 86 / 255, 40 / 255)), - "8" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), - grDevices::rgb(55 / 255, 126 / 255, 184 / 255), - grDevices::rgb(77 / 255, 175 / 255, 74 / 255), - grDevices::rgb(152 / 255,78 / 255, 163 / 255), - grDevices::rgb(255 / 255, 127 / 255, 0 / 255), - grDevices::rgb(255 / 255, 255 / 255, 51 / 255), - grDevices::rgb(166 / 255, 86 / 255, 40 / 255), - grDevices::rgb(247 / 255, 129 / 255, 191 / 255)), - "9" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), - grDevices::rgb(55 / 255, 126 / 255, 184 / 255), - grDevices::rgb(77 / 255, 175 / 255, 74 / 255), - grDevices::rgb(152 / 255,78 / 255, 163 / 255), - grDevices::rgb(255 / 255, 127 / 255, 0 / 255), - grDevices::rgb(255 / 255, 255 / 255, 51 / 255), - grDevices::rgb(166 / 255, 86 / 255, 40 / 255), - grDevices::rgb(247 / 255, 129 / 255, 191 / 255), - grDevices::rgb(153 / 255, 153 / 255, 153 / 255)), - "type" = "qualitative" - ), - "Set3" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 179 / 255), - grDevices::rgb(190 / 255, 186 / 255, 218 / 255)), - "4" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 179 / 255), - grDevices::rgb(190 / 255, 186 / 255, 218 / 255), - grDevices::rgb(251 / 255, 128 / 255, 114 / 255)), - "5" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 179 / 255), - grDevices::rgb(190 / 255, 186 / 255, 218 / 255), - grDevices::rgb(251 / 255, 128 / 255, 114 / 255), - grDevices::rgb(128 / 255, 177 / 255, 211 / 255)), - "6" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 179 / 255), - grDevices::rgb(190 / 255, 186 / 255, 218 / 255), - grDevices::rgb(251 / 255, 128 / 255, 114 / 255), - grDevices::rgb(128 / 255, 177 / 255, 211 / 255), - grDevices::rgb(253 / 255, 180 / 255, 98 / 255)), - "7" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 179 / 255), - grDevices::rgb(190 / 255, 186 / 255, 218 / 255), - grDevices::rgb(251 / 255, 128 / 255, 114 / 255), - grDevices::rgb(128 / 255, 177 / 255, 211 / 255), - grDevices::rgb(253 / 255, 180 / 255, 98 / 255), - grDevices::rgb(179 / 255, 222 / 255, 105 / 255)), - "8" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 179 / 255), - grDevices::rgb(190 / 255, 186 / 255, 218 / 255), - grDevices::rgb(251 / 255, 128 / 255, 114 / 255), - grDevices::rgb(128 / 255, 177 / 255, 211 / 255), - grDevices::rgb(253 / 255, 180 / 255, 98 / 255), - grDevices::rgb(179 / 255, 222 / 255, 105 / 255), - grDevices::rgb(252 / 255, 205 / 255, 229 / 255)), - "9" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 179 / 255), - grDevices::rgb(190 / 255, 186 / 255, 218 / 255), - grDevices::rgb(251 / 255, 128 / 255, 114 / 255), - grDevices::rgb(128 / 255, 177 / 255, 211 / 255), - grDevices::rgb(253 / 255, 180 / 255, 98 / 255), - grDevices::rgb(179 / 255, 222 / 255, 105 / 255), - grDevices::rgb(252 / 255, 205 / 255, 229 / 255), - grDevices::rgb(217 / 255, 217 / 255, 217 / 255)), - "10" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 179 / 255), - grDevices::rgb(190 / 255, 186 / 255, 218 / 255), - grDevices::rgb(251 / 255, 128 / 255, 114 / 255), - grDevices::rgb(128 / 255, 177 / 255, 211 / 255), - grDevices::rgb(253 / 255, 180 / 255, 98 / 255), - grDevices::rgb(179 / 255, 222 / 255, 105 / 255), - grDevices::rgb(252 / 255, 205 / 255, 229 / 255), - grDevices::rgb(217 / 255, 217 / 255, 217 / 255), - grDevices::rgb(188 / 255, 128 / 255, 189 / 255)), - "11" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 179 / 255), - grDevices::rgb(190 / 255, 186 / 255, 218 / 255), - grDevices::rgb(251 / 255, 128 / 255, 114 / 255), - grDevices::rgb(128 / 255, 177 / 255, 211 / 255), - grDevices::rgb(253 / 255, 180 / 255, 98 / 255), - grDevices::rgb(179 / 255, 222 / 255, 105 / 255), - grDevices::rgb(252 / 255, 205 / 255, 229 / 255), - grDevices::rgb(217 / 255, 217 / 255, 217 / 255), - grDevices::rgb(188 / 255, 128 / 255, 189 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255)), - "12" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), - grDevices::rgb(255 / 255, 255 / 255, 179 / 255), - grDevices::rgb(190 / 255, 186 / 255, 218 / 255), - grDevices::rgb(251 / 255, 128 / 255, 114 / 255), - grDevices::rgb(128 / 255, 177 / 255, 211 / 255), - grDevices::rgb(253 / 255, 180 / 255, 98 / 255), - grDevices::rgb(179 / 255, 222 / 255, 105 / 255), - grDevices::rgb(252 / 255, 205 / 255, 229 / 255), - grDevices::rgb(217 / 255, 217 / 255, 217 / 255), - grDevices::rgb(188 / 255, 128 / 255, 189 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(255 / 255, 237 / 255, 111 / 255)), - "type" = "qualitative" - ), - "Dark" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), - grDevices::rgb(217 / 255, 95 / 255, 2 / 255), - grDevices::rgb(117 / 255, 112 / 255, 179 / 255)), - "4" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), - grDevices::rgb(217 / 255, 95 / 255, 2 / 255), - grDevices::rgb(117 / 255, 112 / 255, 179 / 255), - grDevices::rgb(231 / 255, 41 / 255, 138 / 255)), - "5" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), - grDevices::rgb(217 / 255, 95 / 255, 2 / 255), - grDevices::rgb(117 / 255, 112 / 255, 179 / 255), - grDevices::rgb(231 / 255, 41 / 255, 138 / 255), - grDevices::rgb(102 / 255, 166 / 255, 30 / 255)), - "6" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), - grDevices::rgb(217 / 255, 95 / 255, 2 / 255), - grDevices::rgb(117 / 255, 112 / 255, 179 / 255), - grDevices::rgb(231 / 255, 41 / 255, 138 / 255), - grDevices::rgb(102 / 255, 166 / 255, 30 / 255), - grDevices::rgb(230 / 255, 171 / 255, 2 / 255)), - "7" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), - grDevices::rgb(217 / 255, 95 / 255, 2 / 255), - grDevices::rgb(117 / 255, 112 / 255, 179 / 255), - grDevices::rgb(231 / 255, 41 / 255, 138 / 255), - grDevices::rgb(102 / 255, 166 / 255, 30 / 255), - grDevices::rgb(230 / 255, 171 / 255, 2 / 255), - grDevices::rgb(166 / 255, 118 / 255, 29 / 255)), - "8" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), - grDevices::rgb(217 / 255, 95 / 255, 2 / 255), - grDevices::rgb(117 / 255, 112 / 255, 179 / 255), - grDevices::rgb(231 / 255, 41 / 255, 138 / 255), - grDevices::rgb(102 / 255, 166 / 255, 30 / 255), - grDevices::rgb(230 / 255, 171 / 255, 2 / 255), - grDevices::rgb(166 / 255, 118 / 255, 29 / 255), - grDevices::rgb(102 / 255, 102 / 255, 102 / 255)), - "type" = "qualitative" - ), - "Paired" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), - grDevices::rgb(31 / 255, 120 / 255, 180 / 255), - grDevices::rgb(178 / 255, 223 / 255, 138 / 255)), - "4" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), - grDevices::rgb(31 / 255, 120 / 255, 180 / 255), - grDevices::rgb(178 / 255, 223 / 255, 138 / 255), - grDevices::rgb(51 / 255, 160 / 255, 44 / 255)), - "5" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), - grDevices::rgb(31 / 255, 120 / 255, 180 / 255), - grDevices::rgb(178 / 255, 223 / 255, 138 / 255), - grDevices::rgb(51 / 255, 160 / 255, 44 / 255), - grDevices::rgb(251 / 255, 154 / 255, 153 / 255)), - "6" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), - grDevices::rgb(31 / 255, 120 / 255, 180 / 255), - grDevices::rgb(178 / 255, 223 / 255, 138 / 255), - grDevices::rgb(51 / 255, 160 / 255, 44 / 255), - grDevices::rgb(251 / 255, 154 / 255, 153 / 255), - grDevices::rgb(227 / 255, 26 / 255, 28 / 255)), - "7" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), - grDevices::rgb(31 / 255, 120 / 255, 180 / 255), - grDevices::rgb(178 / 255, 223 / 255, 138 / 255), - grDevices::rgb(51 / 255, 160 / 255, 44 / 255), - grDevices::rgb(251 / 255, 154 / 255, 153 / 255), - grDevices::rgb(227 / 255, 26 / 255, 28 / 255), - grDevices::rgb(253 / 255, 191 / 255, 111 / 255)), - "8" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), - grDevices::rgb(31 / 255, 120 / 255, 180 / 255), - grDevices::rgb(178 / 255, 223 / 255, 138 / 255), - grDevices::rgb(51 / 255, 160 / 255, 44 / 255), - grDevices::rgb(251 / 255, 154 / 255, 153 / 255), - grDevices::rgb(227 / 255, 26 / 255, 28 / 255), - grDevices::rgb(253 / 255, 191 / 255, 111 / 255), - grDevices::rgb(255 / 255, 127 / 255, 0 / 255)), - "9" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), - grDevices::rgb(31 / 255, 120 / 255, 180 / 255), - grDevices::rgb(178 / 255, 223 / 255, 138 / 255), - grDevices::rgb(51 / 255, 160 / 255, 44 / 255), - grDevices::rgb(251 / 255, 154 / 255, 153 / 255), - grDevices::rgb(227 / 255, 26 / 255, 28 / 255), - grDevices::rgb(253 / 255, 191 / 255, 111 / 255), - grDevices::rgb(255 / 255, 127 / 255, 0 / 255), - grDevices::rgb(202 / 255, 178 / 255, 214 / 255)), - "10" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), - grDevices::rgb(31 / 255, 120 / 255, 180 / 255), - grDevices::rgb(178 / 255, 223 / 255, 138 / 255), - grDevices::rgb(51 / 255, 160 / 255, 44 / 255), - grDevices::rgb(251 / 255, 154 / 255, 153 / 255), - grDevices::rgb(227 / 255, 26 / 255, 28 / 255), - grDevices::rgb(253 / 255, 191 / 255, 111 / 255), - grDevices::rgb(255 / 255, 127 / 255, 0 / 255), - grDevices::rgb(202 / 255, 178 / 255, 214 / 255), - grDevices::rgb(106 / 255, 61 / 255, 154 / 255)), - "11" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), - grDevices::rgb(31 / 255, 120 / 255, 180 / 255), - grDevices::rgb(178 / 255, 223 / 255, 138 / 255), - grDevices::rgb(51 / 255, 160 / 255, 44 / 255), - grDevices::rgb(251 / 255, 154 / 255, 153 / 255), - grDevices::rgb(227 / 255, 26 / 255, 28 / 255), - grDevices::rgb(253 / 255, 191 / 255, 111 / 255), - grDevices::rgb(255 / 255, 127 / 255, 0 / 255), - grDevices::rgb(202 / 255, 178 / 255, 214 / 255), - grDevices::rgb(106 / 255, 61 / 255, 154 / 255), - grDevices::rgb(255 / 255, 255 / 255, 153 / 255)), - "12" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), - grDevices::rgb(31 / 255, 120 / 255, 180 / 255), - grDevices::rgb(178 / 255, 223 / 255, 138 / 255), - grDevices::rgb(51 / 255, 160 / 255, 44 / 255), - grDevices::rgb(251 / 255, 154 / 255, 153 / 255), - grDevices::rgb(227 / 255, 26 / 255, 28 / 255), - grDevices::rgb(253 / 255, 191 / 255, 111 / 255), - grDevices::rgb(255 / 255, 127 / 255, 0 / 255), - grDevices::rgb(202 / 255, 178 / 255, 214 / 255), - grDevices::rgb(106 / 255, 61 / 255, 154 / 255), - grDevices::rgb(255 / 255, 255 / 255, 153 / 255), - grDevices::rgb(177 / 255, 89 / 255, 40 / 255)), - "type" = "qualitative" - ), - "Pastel2" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), - grDevices::rgb(203 / 255, 213 / 255, 232 / 255)), - "3" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), - grDevices::rgb(253 / 255, 205 / 255, 172 / 255), - grDevices::rgb(203 / 255, 213 / 255, 232 / 255)), - "4" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), - grDevices::rgb(253 / 255, 205 / 255, 172 / 255), - grDevices::rgb(203 / 255, 213 / 255, 232 / 255), - grDevices::rgb(244 / 255, 202 / 255, 228 / 255)), - "5" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), - grDevices::rgb(253 / 255, 205 / 255, 172 / 255), - grDevices::rgb(203 / 255, 213 / 255, 232 / 255), - grDevices::rgb(244 / 255, 202 / 255, 228 / 255), - grDevices::rgb(230 / 255, 245 / 255, 201 / 255)), - "6" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), - grDevices::rgb(253 / 255, 205 / 255, 172 / 255), - grDevices::rgb(203 / 255, 213 / 255, 232 / 255), - grDevices::rgb(244 / 255, 202 / 255, 228 / 255), - grDevices::rgb(230 / 255, 245 / 255, 201 / 255), - grDevices::rgb(255 / 255, 242 / 255, 174 / 255)), - "7" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), - grDevices::rgb(253 / 255, 205 / 255, 172 / 255), - grDevices::rgb(203 / 255, 213 / 255, 232 / 255), - grDevices::rgb(244 / 255, 202 / 255, 228 / 255), - grDevices::rgb(230 / 255, 245 / 255, 201 / 255), - grDevices::rgb(255 / 255, 242 / 255, 174 / 255), - grDevices::rgb(241 / 255, 226 / 255, 204 / 255)), - "8" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), - grDevices::rgb(253 / 255, 205 / 255, 172 / 255), - grDevices::rgb(203 / 255, 213 / 255, 232 / 255), - grDevices::rgb(244 / 255, 202 / 255, 228 / 255), - grDevices::rgb(230 / 255, 245 / 255, 201 / 255), - grDevices::rgb(255 / 255, 242 / 255, 174 / 255), - grDevices::rgb(241 / 255, 226 / 255, 204 / 255), - grDevices::rgb(204 / 255, 204 / 255, 204 / 255)), - "type" = "qualitative" - ), - "Pastel1" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255)), - "3" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), - grDevices::rgb(179 / 255, 205 / 255, 227 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255)), - "4" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), - grDevices::rgb(179 / 255, 205 / 255, 227 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(222 / 255, 203 / 255, 228 / 255)), - "5" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), - grDevices::rgb(179 / 255, 205 / 255, 227 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(222 / 255, 203 / 255, 228 / 255), - grDevices::rgb(254 / 255, 217 / 255, 166 / 255)), - "6" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), - grDevices::rgb(179 / 255, 205 / 255, 227 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(222 / 255, 203 / 255, 228 / 255), - grDevices::rgb(254 / 255, 217 / 255, 166 / 255), - grDevices::rgb(255 / 255, 255 / 255, 204 / 255)), - "7" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), - grDevices::rgb(179 / 255, 205 / 255, 227 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(222 / 255, 203 / 255, 228 / 255), - grDevices::rgb(254 / 255, 217 / 255, 166 / 255), - grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(229 / 255, 216 / 255, 189 / 255)), - "8" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), - grDevices::rgb(179 / 255, 205 / 255, 227 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(222 / 255, 203 / 255, 228 / 255), - grDevices::rgb(254 / 255, 217 / 255, 166 / 255), - grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(229 / 255, 216 / 255, 189 / 255), - grDevices::rgb(253 / 255, 218 / 255, 236 / 255)), - "9" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), - grDevices::rgb(179 / 255, 205 / 255, 227 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(222 / 255, 203 / 255, 228 / 255), - grDevices::rgb(254 / 255, 217 / 255, 166 / 255), - grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(229 / 255, 216 / 255, 189 / 255), - grDevices::rgb(253 / 255, 218 / 255, 236 / 255), - grDevices::rgb(242 / 255, 242 / 255, 242 / 255)), - "type" = "qualitative" - ), - "OrRd" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(254 / 255, 232 / 255, 200 / 255), - grDevices::rgb(253 / 255, 187 / 255, 132 / 255), - grDevices::rgb(227 / 255, 74 / 255, 51 / 255)), - "4" = tibble::lst(grDevices::rgb(254 / 255, 240 / 255, 217 / 255), - grDevices::rgb(253 / 255, 204 / 255, 138 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(215 / 255, 48 / 255, 31 / 255)), - "5" = tibble::lst(grDevices::rgb(254 / 255, 240 / 255, 217 / 255), - grDevices::rgb(253 / 255, 204 / 255, 138 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(227 / 255, 74 / 255, 51 / 255), - grDevices::rgb(179 / 255, 0 / 255, 0 / 255)), - "6" = tibble::lst(grDevices::rgb(254 / 255, 240 / 255, 217 / 255), - grDevices::rgb(253 / 255, 212 / 255, 158 / 255), - grDevices::rgb(253 / 255, 187 / 255, 132 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(227 / 255, 74 / 255, 51 / 255), - grDevices::rgb(179 / 255, 0 / 255, 0 / 255)), - "7" = tibble::lst(grDevices::rgb(254 / 255, 240 / 255, 217 / 255), - grDevices::rgb(253 / 255, 212 / 255, 158 / 255), - grDevices::rgb(253 / 255, 187 / 255, 132 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(239 / 255, 101 / 255, 72 / 255), - grDevices::rgb(215 / 255, 48 / 255, 31 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 236 / 255), - grDevices::rgb(254 / 255, 232 / 255, 200 / 255), - grDevices::rgb(253 / 255, 212 / 255, 158 / 255), - grDevices::rgb(253 / 255, 187 / 255, 132 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(239 / 255, 101 / 255, 72 / 255), - grDevices::rgb(215 / 255, 48 / 255, 31 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 236 / 255), - grDevices::rgb(254 / 255, 232 / 255, 200 / 255), - grDevices::rgb(253 / 255, 212 / 255, 158 / 255), - grDevices::rgb(253 / 255, 187 / 255, 132 / 255), - grDevices::rgb(252 / 255, 141 / 255, 89 / 255), - grDevices::rgb(239 / 255, 101 / 255, 72 / 255), - grDevices::rgb(215 / 255, 48 / 255, 31 / 255), - grDevices::rgb(179 / 255, 0 / 255, 0 / 255), - grDevices::rgb(127 / 255, 0 / 255,0 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 235 / 255, 207 / 255), - grDevices::rgb(253 / 255, 220 / 255, 176 / 255), - grDevices::rgb(253 / 255, 203 / 255, 149 / 255), - grDevices::rgb(253 / 255, 182 / 255, 127 / 255), - grDevices::rgb(252 / 255, 146 / 255, 93 / 255), - grDevices::rgb(243 / 255, 114 / 255, 77 / 255), - grDevices::rgb(228 / 255,79 / 255, 53 / 255), - grDevices::rgb(200 / 255, 39 / 255, 24 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 236 / 255, 210 / 255), - grDevices::rgb(253 / 255, 223 / 255, 183 / 255), - grDevices::rgb(253 / 255, 209 / 255, 155 / 255), - grDevices::rgb(253 / 255, 192 / 255, 137 / 255), - grDevices::rgb(253 / 255, 164 / 255, 110 / 255), - grDevices::rgb(249 / 255, 133 / 255, 85 / 255), - grDevices::rgb(240 / 255, 105 / 255, 73 / 255), - grDevices::rgb(224 / 255,71 / 255, 47 / 255), - grDevices::rgb(196 / 255, 36 / 255, 21 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 237 / 255, 213 / 255), - grDevices::rgb(254 / 255, 226 / 255, 188 / 255), - grDevices::rgb(253 / 255, 213 / 255, 161 / 255), - grDevices::rgb(253 / 255, 198 / 255, 143 / 255), - grDevices::rgb(253 / 255, 178 / 255, 124 / 255), - grDevices::rgb(252 / 255, 149 / 255, 96 / 255), - grDevices::rgb(246 / 255, 123 / 255, 81 / 255), - grDevices::rgb(236 / 255, 96 / 255, 68 / 255), - grDevices::rgb(221 / 255, 64 / 255, 42 / 255), - grDevices::rgb(192 / 255, 33 / 255, 19 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 238 / 255, 214 / 255), - grDevices::rgb(254 / 255, 228 / 255, 192 / 255), - grDevices::rgb(253 / 255, 216 / 255, 168 / 255), - grDevices::rgb(253 / 255, 203 / 255, 149 / 255), - grDevices::rgb(253 / 255, 189 / 255, 134 / 255), - grDevices::rgb(253 / 255, 164 / 255, 110 / 255), - grDevices::rgb(250 / 255, 137 / 255, 87 / 255), - grDevices::rgb(243 / 255, 114 / 255, 77 / 255), - grDevices::rgb(233 / 255, 89 / 255, 61 / 255), - grDevices::rgb(219 / 255, 58 / 255, 37 / 255), - grDevices::rgb(188 / 255, 31 / 255, 18 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 238 / 255, 216 / 255), - grDevices::rgb(254 / 255, 230 / 255, 196 / 255), - grDevices::rgb(253 / 255, 219 / 255, 174 / 255), - grDevices::rgb(253 / 255, 208 / 255, 153 / 255), - grDevices::rgb(253 / 255, 194 / 255, 139 / 255), - grDevices::rgb(253 / 255, 176 / 255, 121 / 255), - grDevices::rgb(252 / 255, 151 / 255, 98 / 255), - grDevices::rgb(248 / 255, 129 / 255, 83 / 255), - grDevices::rgb(241 / 255, 107 / 255, 74 / 255), - grDevices::rgb(230 / 255, 82 / 255, 56 / 255), - grDevices::rgb(216 / 255, 52 / 255, 34 / 255), - grDevices::rgb(185 / 255, 29 / 255, 16 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 239 / 255, 217 / 255), - grDevices::rgb(254 / 255, 231 / 255, 199 / 255), - grDevices::rgb(253 / 255, 221 / 255, 178 / 255), - grDevices::rgb(253 / 255, 211 / 255, 158 / 255), - grDevices::rgb(253 / 255, 199 / 255, 144 / 255), - grDevices::rgb(253 / 255, 186 / 255, 132 / 255), - grDevices::rgb(253 / 255, 164 / 255, 110 / 255), - grDevices::rgb(252 / 255, 140 / 255, 89 / 255), - grDevices::rgb(245 / 255, 121 / 255, 80 / 255), - grDevices::rgb(238 / 255, 101 / 255, 71 / 255), - grDevices::rgb(227 / 255,76 / 255, 51 / 255), - grDevices::rgb(215 / 255, 48 / 255, 31 / 255), - grDevices::rgb(183 / 255, 27 / 255, 15 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 239 / 255, 219 / 255), - grDevices::rgb(254 / 255, 232 / 255, 202 / 255), - grDevices::rgb(253 / 255, 223 / 255, 183 / 255), - grDevices::rgb(253 / 255, 214 / 255, 163 / 255), - grDevices::rgb(253 / 255, 203 / 255, 149 / 255), - grDevices::rgb(253 / 255, 192 / 255, 137 / 255), - grDevices::rgb(253 / 255, 174 / 255, 120 / 255), - grDevices::rgb(252 / 255, 153 / 255, 100 / 255), - grDevices::rgb(249 / 255, 133 / 255, 85 / 255), - grDevices::rgb(243 / 255, 114 / 255, 77 / 255), - grDevices::rgb(235 / 255, 94 / 255, 66 / 255), - grDevices::rgb(224 / 255,71 / 255, 47 / 255), - grDevices::rgb(210 / 255, 45 / 255, 28 / 255), - grDevices::rgb(181 / 255, 26 / 255, 14 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 240 / 255, 220 / 255), - grDevices::rgb(254 / 255, 233 / 255, 204 / 255), - grDevices::rgb(254 / 255, 225 / 255, 186 / 255), - grDevices::rgb(253 / 255, 216 / 255, 168 / 255), - grDevices::rgb(253 / 255, 207 / 255, 153 / 255), - grDevices::rgb(253 / 255, 196 / 255, 141 / 255), - grDevices::rgb(253 / 255, 184 / 255, 129 / 255), - grDevices::rgb(253 / 255, 164 / 255, 110 / 255), - grDevices::rgb(252 / 255, 143 / 255, 91 / 255), - grDevices::rgb(247 / 255, 126 / 255, 82 / 255), - grDevices::rgb(241 / 255, 108 / 255, 75 / 255), - grDevices::rgb(233 / 255, 89 / 255, 61 / 255), - grDevices::rgb(222 / 255, 66 / 255, 43 / 255), - grDevices::rgb(207 / 255, 43 / 255, 27 / 255), - grDevices::rgb(179 / 255, 24 / 255, 13 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 240 / 255, 221 / 255), - grDevices::rgb(254 / 255, 234 / 255, 206 / 255), - grDevices::rgb(254 / 255, 227 / 255, 190 / 255), - grDevices::rgb(253 / 255, 219 / 255, 172 / 255), - grDevices::rgb(253 / 255, 210 / 255, 156 / 255), - grDevices::rgb(253 / 255, 200 / 255, 145 / 255), - grDevices::rgb(253 / 255, 189 / 255, 135 / 255), - grDevices::rgb(253 / 255, 173 / 255, 119 / 255), - grDevices::rgb(252 / 255, 154 / 255, 101 / 255), - grDevices::rgb(250 / 255, 136 / 255, 86 / 255), - grDevices::rgb(245 / 255, 120 / 255, 79 / 255), - grDevices::rgb(239 / 255, 103 / 255, 72 / 255), - grDevices::rgb(230 / 255, 84 / 255, 57 / 255), - grDevices::rgb(220 / 255, 62 / 255, 40 / 255), - grDevices::rgb(203 / 255, 41 / 255, 25 / 255), - grDevices::rgb(178 / 255, 23 / 255, 12 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 241 / 255, 221 / 255), - grDevices::rgb(254 / 255, 235 / 255, 207 / 255), - grDevices::rgb(254 / 255, 228 / 255, 192 / 255), - grDevices::rgb(253 / 255, 220 / 255, 176 / 255), - grDevices::rgb(253 / 255, 213 / 255, 160 / 255), - grDevices::rgb(253 / 255, 203 / 255, 149 / 255), - grDevices::rgb(253 / 255, 193 / 255, 139 / 255), - grDevices::rgb(253 / 255, 182 / 255, 127 / 255), - grDevices::rgb(253 / 255, 164 / 255, 110 / 255), - grDevices::rgb(252 / 255, 146 / 255, 93 / 255), - grDevices::rgb(248 / 255, 130 / 255, 84 / 255), - grDevices::rgb(243 / 255, 114 / 255, 77 / 255), - grDevices::rgb(237 / 255, 98 / 255, 69 / 255), - grDevices::rgb(228 / 255,79 / 255, 53 / 255), - grDevices::rgb(219 / 255, 58 / 255, 37 / 255), - grDevices::rgb(200 / 255, 39 / 255, 24 / 255), - grDevices::rgb(176 / 255, 22 / 255, 11 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), - grDevices::rgb(254 / 255, 241 / 255, 222 / 255), - grDevices::rgb(254 / 255, 235 / 255, 209 / 255), - grDevices::rgb(254 / 255, 229 / 255, 195 / 255), - grDevices::rgb(253 / 255, 222 / 255, 180 / 255), - grDevices::rgb(253 / 255, 215 / 255, 164 / 255), - grDevices::rgb(253 / 255, 206 / 255, 152 / 255), - grDevices::rgb(253 / 255, 197 / 255, 142 / 255), - grDevices::rgb(253 / 255, 188 / 255, 133 / 255), - grDevices::rgb(253 / 255, 172 / 255, 118 / 255), - grDevices::rgb(252 / 255, 155 / 255, 102 / 255), - grDevices::rgb(251 / 255, 138 / 255, 88 / 255), - grDevices::rgb(246 / 255, 124 / 255, 81 / 255), - grDevices::rgb(241 / 255, 109 / 255, 75 / 255), - grDevices::rgb(235 / 255, 93 / 255, 65 / 255), - grDevices::rgb(226 / 255,75 / 255, 50 / 255), - grDevices::rgb(217 / 255, 54 / 255, 35 / 255), - grDevices::rgb(198 / 255, 37 / 255, 22 / 255), - grDevices::rgb(175 / 255, 21 / 255, 11 / 255), - grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), - "type" = "sequential" - ), - "PuBu" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(236 / 255, 231 / 255, 242 / 255), - grDevices::rgb(166 / 255, 189 / 255, 219 / 255), - grDevices::rgb(43 / 255, 140 / 255, 190 / 255)), - "4" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), - grDevices::rgb(189 / 255, 201 / 255, 225 / 255), - grDevices::rgb(116 / 255, 169 / 255, 207 / 255), - grDevices::rgb(5 / 255, 112 / 255, 176 / 255)), - "5" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), - grDevices::rgb(189 / 255, 201 / 255, 225 / 255), - grDevices::rgb(116 / 255, 169 / 255, 207 / 255), - grDevices::rgb(43 / 255, 140 / 255, 190 / 255), - grDevices::rgb(4 / 255, 90 / 255, 141 / 255)), - "6" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), - grDevices::rgb(208 / 255, 209 / 255, 230 / 255), - grDevices::rgb(166 / 255, 189 / 255, 219 / 255), - grDevices::rgb(116 / 255, 169 / 255, 207 / 255), - grDevices::rgb(43 / 255, 140 / 255, 190 / 255), - grDevices::rgb(4 / 255, 90 / 255, 141 / 255)), - "7" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), - grDevices::rgb(208 / 255, 209 / 255, 230 / 255), - grDevices::rgb(166 / 255, 189 / 255, 219 / 255), - grDevices::rgb(116 / 255, 169 / 255, 207 / 255), - grDevices::rgb(54 / 255, 144 / 255, 192 / 255), - grDevices::rgb(5 / 255, 112 / 255, 176 / 255), - grDevices::rgb(3 / 255, 78 / 255, 123 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 251 / 255), - grDevices::rgb(236 / 255, 231 / 255, 242 / 255), - grDevices::rgb(208 / 255, 209 / 255, 230 / 255), - grDevices::rgb(166 / 255, 189 / 255, 219 / 255), - grDevices::rgb(116 / 255, 169 / 255, 207 / 255), - grDevices::rgb(54 / 255, 144 / 255, 192 / 255), - grDevices::rgb(5 / 255, 112 / 255, 176 / 255), - grDevices::rgb(3 / 255, 78 / 255, 123 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 251 / 255), - grDevices::rgb(236 / 255, 231 / 255, 242 / 255), - grDevices::rgb(208 / 255, 209 / 255, 230 / 255), - grDevices::rgb(166 / 255, 189 / 255, 219 / 255), - grDevices::rgb(116 / 255, 169 / 255, 207 / 255), - grDevices::rgb(54 / 255, 144 / 255, 192 / 255), - grDevices::rgb(5 / 255, 112 / 255, 176 / 255), - grDevices::rgb(4 / 255, 90 / 255, 141 / 255), - grDevices::rgb(2 / 255, 56 / 255, 88 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(240 / 255, 234 / 255, 243 / 255), - grDevices::rgb(220 / 255, 218 / 255, 235 / 255), - grDevices::rgb(194 / 255, 202 / 255, 226 / 255), - grDevices::rgb(160 / 255, 186 / 255, 217 / 255), - grDevices::rgb(121 / 255, 171 / 255, 208 / 255), - grDevices::rgb(78 / 255, 152 / 255, 197 / 255), - grDevices::rgb(38 / 255, 129 / 255, 184 / 255), - grDevices::rgb(4 / 255, 104 / 255, 163 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(241 / 255, 235 / 255, 244 / 255), - grDevices::rgb(224 / 255, 222 / 255, 237 / 255), - grDevices::rgb(203 / 255, 206 / 255, 228 / 255), - grDevices::rgb(174 / 255, 192 / 255, 221 / 255), - grDevices::rgb(141 / 255, 178 / 255, 213 / 255), - grDevices::rgb(105 / 255, 163 / 255, 204 / 255), - grDevices::rgb(62 / 255, 146 / 255, 193 / 255), - grDevices::rgb(32 / 255, 124 / 255, 182 / 255), - grDevices::rgb(4 / 255, 101 / 255, 159 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(242 / 255, 236 / 255, 245 / 255), - grDevices::rgb(228 / 255, 224 / 255, 238 / 255), - grDevices::rgb(210 / 255, 210 / 255, 231 / 255), - grDevices::rgb(185 / 255, 198 / 255, 224 / 255), - grDevices::rgb(157 / 255, 185 / 255, 216 / 255), - grDevices::rgb(125 / 255, 172 / 255, 209 / 255), - grDevices::rgb(91 / 255, 157 / 255, 200 / 255), - grDevices::rgb(51 / 255, 141 / 255, 190 / 255), - grDevices::rgb(25 / 255, 120 / 255, 180 / 255), - grDevices::rgb(4 / 255, 99 / 255, 156 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(243 / 255, 237 / 255, 245 / 255), - grDevices::rgb(231 / 255, 227 / 255, 239 / 255), - grDevices::rgb(214 / 255, 214 / 255, 232 / 255), - grDevices::rgb(194 / 255, 202 / 255, 226 / 255), - grDevices::rgb(169 / 255, 190 / 255, 219 / 255), - grDevices::rgb(141 / 255, 178 / 255, 213 / 255), - grDevices::rgb(111 / 255, 166 / 255, 205 / 255), - grDevices::rgb(78 / 255, 152 / 255, 197 / 255), - grDevices::rgb(45 / 255, 135 / 255, 188 / 255), - grDevices::rgb(19 / 255, 117 / 255, 178 / 255), - grDevices::rgb(4 / 255, 97 / 255, 153 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(244 / 255, 238 / 255, 246 / 255), - grDevices::rgb(233 / 255, 229 / 255, 241 / 255), - grDevices::rgb(218 / 255, 217 / 255, 234 / 255), - grDevices::rgb(201 / 255, 205 / 255, 228 / 255), - grDevices::rgb(179 / 255, 195 / 255, 222 / 255), - grDevices::rgb(155 / 255, 184 / 255, 216 / 255), - grDevices::rgb(128 / 255, 173 / 255, 209 / 255), - grDevices::rgb(99 / 255, 161 / 255, 202 / 255), - grDevices::rgb(66 / 255, 147 / 255, 194 / 255), - grDevices::rgb(40 / 255, 131 / 255, 185 / 255), - grDevices::rgb(12 / 255, 114 / 255, 177 / 255), - grDevices::rgb(4 / 255, 96 / 255, 151 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(245 / 255, 238 / 255, 246 / 255), - grDevices::rgb(235 / 255, 230 / 255, 242 / 255), - grDevices::rgb(221 / 255, 219 / 255, 235 / 255), - grDevices::rgb(208 / 255, 209 / 255, 229 / 255), - grDevices::rgb(187 / 255, 198 / 255, 224 / 255), - grDevices::rgb(165 / 255, 189 / 255, 218 / 255), - grDevices::rgb(141 / 255, 178 / 255, 213 / 255), - grDevices::rgb(115 / 255, 169 / 255, 206 / 255), - grDevices::rgb(88 / 255, 156 / 255, 199 / 255), - grDevices::rgb(53 / 255, 144 / 255, 191 / 255), - grDevices::rgb(36 / 255, 127 / 255, 184 / 255), - grDevices::rgb(5 / 255, 112 / 255, 176 / 255), - grDevices::rgb(3 / 255, 94 / 255, 149 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(246 / 255, 239 / 255, 246 / 255), - grDevices::rgb(237 / 255, 232 / 255, 242 / 255), - grDevices::rgb(224 / 255, 222 / 255, 237 / 255), - grDevices::rgb(211 / 255, 211 / 255, 231 / 255), - grDevices::rgb(194 / 255, 202 / 255, 226 / 255), - grDevices::rgb(174 / 255, 192 / 255, 221 / 255), - grDevices::rgb(153 / 255, 183 / 255, 215 / 255), - grDevices::rgb(130 / 255, 174 / 255, 210 / 255), - grDevices::rgb(105 / 255, 163 / 255, 204 / 255), - grDevices::rgb(78 / 255, 152 / 255, 197 / 255), - grDevices::rgb(49 / 255, 139 / 255, 189 / 255), - grDevices::rgb(32 / 255, 124 / 255, 182 / 255), - grDevices::rgb(4 / 255, 109 / 255, 172 / 255), - grDevices::rgb(3 / 255, 93 / 255, 147 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(246 / 255, 239 / 255, 247 / 255), - grDevices::rgb(238 / 255, 232 / 255, 243 / 255), - grDevices::rgb(227 / 255, 224 / 255, 238 / 255), - grDevices::rgb(214 / 255, 214 / 255, 232 / 255), - grDevices::rgb(200 / 255, 205 / 255, 227 / 255), - grDevices::rgb(181 / 255, 196 / 255, 223 / 255), - grDevices::rgb(163 / 255, 187 / 255, 218 / 255), - grDevices::rgb(141 / 255, 178 / 255, 213 / 255), - grDevices::rgb(119 / 255, 170 / 255, 207 / 255), - grDevices::rgb(95 / 255, 159 / 255, 201 / 255), - grDevices::rgb(68 / 255, 148 / 255, 194 / 255), - grDevices::rgb(45 / 255, 135 / 255, 188 / 255), - grDevices::rgb(27 / 255, 121 / 255, 181 / 255), - grDevices::rgb(4 / 255, 107 / 255, 169 / 255), - grDevices::rgb(3 / 255, 92 / 255, 145 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(247 / 255, 240 / 255, 247 / 255), - grDevices::rgb(239 / 255, 233 / 255, 243 / 255), - grDevices::rgb(229 / 255, 225 / 255, 239 / 255), - grDevices::rgb(217 / 255, 216 / 255, 234 / 255), - grDevices::rgb(205 / 255, 207 / 255, 229 / 255), - grDevices::rgb(188 / 255, 199 / 255, 224 / 255), - grDevices::rgb(171 / 255, 191 / 255, 220 / 255), - grDevices::rgb(151 / 255, 183 / 255, 215 / 255), - grDevices::rgb(131 / 255, 174 / 255, 210 / 255), - grDevices::rgb(109 / 255, 166 / 255, 205 / 255), - grDevices::rgb(86 / 255, 155 / 255, 199 / 255), - grDevices::rgb(58 / 255, 145 / 255, 192 / 255), - grDevices::rgb(42 / 255, 132 / 255, 186 / 255), - grDevices::rgb(23 / 255, 119 / 255, 179 / 255), - grDevices::rgb(4 / 255, 105 / 255, 166 / 255), - grDevices::rgb(3 / 255, 91 / 255, 144 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(247 / 255, 240 / 255, 247 / 255), - grDevices::rgb(240 / 255, 234 / 255, 243 / 255), - grDevices::rgb(231 / 255, 227 / 255, 239 / 255), - grDevices::rgb(220 / 255, 218 / 255, 235 / 255), - grDevices::rgb(209 / 255, 210 / 255, 230 / 255), - grDevices::rgb(194 / 255, 202 / 255, 226 / 255), - grDevices::rgb(177 / 255, 194 / 255, 222 / 255), - grDevices::rgb(160 / 255, 186 / 255, 217 / 255), - grDevices::rgb(141 / 255, 178 / 255, 213 / 255), - grDevices::rgb(121 / 255, 171 / 255, 208 / 255), - grDevices::rgb(101 / 255, 161 / 255, 202 / 255), - grDevices::rgb(78 / 255, 152 / 255, 197 / 255), - grDevices::rgb(52 / 255, 142 / 255, 191 / 255), - grDevices::rgb(38 / 255, 129 / 255, 184 / 255), - grDevices::rgb(19 / 255, 117 / 255, 178 / 255), - grDevices::rgb(4 / 255, 104 / 255, 163 / 255), - grDevices::rgb(3 / 255, 90 / 255, 143 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(247 / 255, 241 / 255, 247 / 255), - grDevices::rgb(240 / 255, 235 / 255, 244 / 255), - grDevices::rgb(233 / 255, 228 / 255, 240 / 255), - grDevices::rgb(222 / 255, 220 / 255, 236 / 255), - grDevices::rgb(212 / 255, 212 / 255, 231 / 255), - grDevices::rgb(199 / 255, 204 / 255, 227 / 255), - grDevices::rgb(183 / 255, 197 / 255, 223 / 255), - grDevices::rgb(168 / 255, 190 / 255, 219 / 255), - grDevices::rgb(150 / 255, 182 / 255, 215 / 255), - grDevices::rgb(132 / 255, 175 / 255, 210 / 255), - grDevices::rgb(113 / 255, 167 / 255, 206 / 255), - grDevices::rgb(93 / 255, 158 / 255, 200 / 255), - grDevices::rgb(70 / 255, 149 / 255, 195 / 255), - grDevices::rgb(48 / 255, 138 / 255, 189 / 255), - grDevices::rgb(35 / 255, 126 / 255, 183 / 255), - grDevices::rgb(15 / 255, 115 / 255, 177 / 255), - grDevices::rgb(4 / 255, 102 / 255, 161 / 255), - grDevices::rgb(3 / 255, 90 / 255, 142 / 255), - grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), - "type" = "sequential" - ), - "BuPu" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(224 / 255, 236 / 255, 244 / 255), - grDevices::rgb(158 / 255, 188 / 255, 218 / 255), - grDevices::rgb(136 / 255, 86 / 255, 167 / 255)), - "4" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), - grDevices::rgb(179 / 255, 205 / 255, 227 / 255), - grDevices::rgb(140 / 255, 150 / 255, 198 / 255), - grDevices::rgb(136 / 255, 65 / 255, 157 / 255)), - "5" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), - grDevices::rgb(179 / 255, 205 / 255, 227 / 255), - grDevices::rgb(140 / 255, 150 / 255, 198 / 255), - grDevices::rgb(136 / 255, 86 / 255, 167 / 255), - grDevices::rgb(129 / 255, 15 / 255, 124 / 255)), - "6" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), - grDevices::rgb(191 / 255, 211 / 255, 230 / 255), - grDevices::rgb(158 / 255, 188 / 255, 218 / 255), - grDevices::rgb(140 / 255, 150 / 255, 198 / 255), - grDevices::rgb(136 / 255, 86 / 255, 167 / 255), - grDevices::rgb(129 / 255, 15 / 255, 124 / 255)), - "7" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), - grDevices::rgb(191 / 255, 211 / 255, 230 / 255), - grDevices::rgb(158 / 255, 188 / 255, 218 / 255), - grDevices::rgb(140 / 255, 150 / 255, 198 / 255), - grDevices::rgb(140 / 255, 107 / 255, 177 / 255), - grDevices::rgb(136 / 255, 65 / 255, 157 / 255), - grDevices::rgb(110 / 255, 1 / 255, 107 / 255)), - "8" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(224 / 255, 236 / 255, 244 / 255), - grDevices::rgb(191 / 255, 211 / 255, 230 / 255), - grDevices::rgb(158 / 255, 188 / 255, 218 / 255), - grDevices::rgb(140 / 255, 150 / 255, 198 / 255), - grDevices::rgb(140 / 255, 107 / 255, 177 / 255), - grDevices::rgb(136 / 255, 65 / 255, 157 / 255), - grDevices::rgb(110 / 255, 1 / 255, 107 / 255)), - "9" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(224 / 255, 236 / 255, 244 / 255), - grDevices::rgb(191 / 255, 211 / 255, 230 / 255), - grDevices::rgb(158 / 255, 188 / 255, 218 / 255), - grDevices::rgb(140 / 255, 150 / 255, 198 / 255), - grDevices::rgb(140 / 255, 107 / 255, 177 / 255), - grDevices::rgb(136 / 255, 65 / 255, 157 / 255), - grDevices::rgb(129 / 255, 15 / 255, 124 / 255), - grDevices::rgb(77 / 255, 0 / 255, 75 / 255)), - "10" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(229 / 255, 239 / 255, 245 / 255), - grDevices::rgb(205 / 255, 222 / 255, 236 / 255), - grDevices::rgb(180 / 255, 203 / 255, 226 / 255), - grDevices::rgb(156 / 255, 183 / 255, 215 / 255), - grDevices::rgb(142 / 255, 154 / 255, 200 / 255), - grDevices::rgb(140 / 255, 121 / 255, 183 / 255), - grDevices::rgb(138 / 255, 89 / 255, 168 / 255), - grDevices::rgb(130 / 255, 54 / 255, 145 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "11" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(230 / 255, 240 / 255, 246 / 255), - grDevices::rgb(210 / 255, 225 / 255, 238 / 255), - grDevices::rgb(187 / 255, 208 / 255, 228 / 255), - grDevices::rgb(164 / 255, 192 / 255, 220 / 255), - grDevices::rgb(149 / 255, 168 / 255, 207 / 255), - grDevices::rgb(140 / 255, 141 / 255, 193 / 255), - grDevices::rgb(140 / 255, 111 / 255, 179 / 255), - grDevices::rgb(138 / 255, 82 / 255, 164 / 255), - grDevices::rgb(128 / 255, 50 / 255, 141 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "12" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(232 / 255, 241 / 255, 247 / 255), - grDevices::rgb(215 / 255, 229 / 255, 240 / 255), - grDevices::rgb(194 / 255, 213 / 255, 231 / 255), - grDevices::rgb(173 / 255, 198 / 255, 223 / 255), - grDevices::rgb(154 / 255, 181 / 255, 214 / 255), - grDevices::rgb(143 / 255, 156 / 255, 201 / 255), - grDevices::rgb(140 / 255, 130 / 255, 188 / 255), - grDevices::rgb(139 / 255, 103 / 255, 175 / 255), - grDevices::rgb(137 / 255, 77 / 255, 162 / 255), - grDevices::rgb(126 / 255, 46 / 255, 138 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "13" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(233 / 255, 242 / 255, 247 / 255), - grDevices::rgb(218 / 255, 231 / 255, 241 / 255), - grDevices::rgb(199 / 255, 217 / 255, 233 / 255), - grDevices::rgb(180 / 255, 203 / 255, 226 / 255), - grDevices::rgb(160 / 255, 189 / 255, 219 / 255), - grDevices::rgb(149 / 255, 168 / 255, 207 / 255), - grDevices::rgb(140 / 255, 146 / 255, 196 / 255), - grDevices::rgb(140 / 255, 121 / 255, 183 / 255), - grDevices::rgb(139 / 255, 97 / 255, 171 / 255), - grDevices::rgb(136 / 255, 72 / 255, 160 / 255), - grDevices::rgb(125 / 255, 43 / 255, 135 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "14" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(234 / 255, 243 / 255, 248 / 255), - grDevices::rgb(221 / 255, 234 / 255, 242 / 255), - grDevices::rgb(203 / 255, 220 / 255, 235 / 255), - grDevices::rgb(185 / 255, 207 / 255, 228 / 255), - grDevices::rgb(168 / 255, 195 / 255, 221 / 255), - grDevices::rgb(153 / 255, 179 / 255, 213 / 255), - grDevices::rgb(144 / 255, 158 / 255, 202 / 255), - grDevices::rgb(140 / 255, 136 / 255, 191 / 255), - grDevices::rgb(140 / 255, 113 / 255, 180 / 255), - grDevices::rgb(138 / 255, 91 / 255, 169 / 255), - grDevices::rgb(136 / 255, 68 / 255, 158 / 255), - grDevices::rgb(124 / 255, 41 / 255, 133 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "15" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(235 / 255, 243 / 255, 248 / 255), - grDevices::rgb(223 / 255, 235 / 255, 243 / 255), - grDevices::rgb(207 / 255, 223 / 255, 236 / 255), - grDevices::rgb(191 / 255, 210 / 255, 229 / 255), - grDevices::rgb(174 / 255, 199 / 255, 224 / 255), - grDevices::rgb(158 / 255, 187 / 255, 217 / 255), - grDevices::rgb(149 / 255, 168 / 255, 207 / 255), - grDevices::rgb(140 / 255, 150 / 255, 197 / 255), - grDevices::rgb(140 / 255, 128 / 255, 187 / 255), - grDevices::rgb(140 / 255, 107 / 255, 177 / 255), - grDevices::rgb(138 / 255, 86 / 255, 166 / 255), - grDevices::rgb(135 / 255, 64 / 255, 157 / 255), - grDevices::rgb(123 / 255, 39 / 255, 131 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "16" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(236 / 255, 244 / 255, 248 / 255), - grDevices::rgb(225 / 255, 237 / 255, 244 / 255), - grDevices::rgb(210 / 255, 225 / 255, 238 / 255), - grDevices::rgb(195 / 255, 214 / 255, 231 / 255), - grDevices::rgb(180 / 255, 203 / 255, 226 / 255), - grDevices::rgb(164 / 255, 192 / 255, 220 / 255), - grDevices::rgb(153 / 255, 177 / 255, 212 / 255), - grDevices::rgb(144 / 255, 160 / 255, 203 / 255), - grDevices::rgb(140 / 255, 141 / 255, 193 / 255), - grDevices::rgb(140 / 255, 121 / 255, 183 / 255), - grDevices::rgb(139 / 255, 101 / 255, 174 / 255), - grDevices::rgb(138 / 255, 82 / 255, 164 / 255), - grDevices::rgb(134 / 255, 61 / 255, 153 / 255), - grDevices::rgb(122 / 255, 37 / 255, 129 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "17" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(236 / 255, 244 / 255, 249 / 255), - grDevices::rgb(226 / 255, 237 / 255, 245 / 255), - grDevices::rgb(213 / 255, 228 / 255, 239 / 255), - grDevices::rgb(199 / 255, 217 / 255, 233 / 255), - grDevices::rgb(184 / 255, 206 / 255, 227 / 255), - grDevices::rgb(170 / 255, 196 / 255, 222 / 255), - grDevices::rgb(156 / 255, 185 / 255, 216 / 255), - grDevices::rgb(149 / 255, 168 / 255, 207 / 255), - grDevices::rgb(141 / 255, 152 / 255, 199 / 255), - grDevices::rgb(140 / 255, 134 / 255, 190 / 255), - grDevices::rgb(140 / 255, 115 / 255, 180 / 255), - grDevices::rgb(139 / 255, 97 / 255, 171 / 255), - grDevices::rgb(137 / 255, 78 / 255, 163 / 255), - grDevices::rgb(132 / 255, 58 / 255, 150 / 255), - grDevices::rgb(121 / 255, 35 / 255, 128 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "18" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(237 / 255, 245 / 255, 249 / 255), - grDevices::rgb(228 / 255, 238 / 255, 245 / 255), - grDevices::rgb(216 / 255, 230 / 255, 240 / 255), - grDevices::rgb(202 / 255, 219 / 255, 234 / 255), - grDevices::rgb(189 / 255, 209 / 255, 229 / 255), - grDevices::rgb(175 / 255, 200 / 255, 224 / 255), - grDevices::rgb(161 / 255, 190 / 255, 219 / 255), - grDevices::rgb(152 / 255, 176 / 255, 212 / 255), - grDevices::rgb(145 / 255, 161 / 255, 203 / 255), - grDevices::rgb(140 / 255, 145 / 255, 195 / 255), - grDevices::rgb(140 / 255, 127 / 255, 186 / 255), - grDevices::rgb(140 / 255, 109 / 255, 178 / 255), - grDevices::rgb(139 / 255, 92 / 255, 169 / 255), - grDevices::rgb(137 / 255, 75 / 255, 161 / 255), - grDevices::rgb(131 / 255, 56 / 255, 147 / 255), - grDevices::rgb(121 / 255, 34 / 255, 127 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "19" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(238 / 255, 245 / 255, 249 / 255), - grDevices::rgb(229 / 255, 239 / 255, 245 / 255), - grDevices::rgb(218 / 255, 231 / 255, 241 / 255), - grDevices::rgb(205 / 255, 222 / 255, 236 / 255), - grDevices::rgb(192 / 255, 212 / 255, 230 / 255), - grDevices::rgb(180 / 255, 203 / 255, 226 / 255), - grDevices::rgb(167 / 255, 194 / 255, 221 / 255), - grDevices::rgb(156 / 255, 183 / 255, 215 / 255), - grDevices::rgb(149 / 255, 168 / 255, 207 / 255), - grDevices::rgb(142 / 255, 154 / 255, 200 / 255), - grDevices::rgb(140 / 255, 138 / 255, 192 / 255), - grDevices::rgb(140 / 255, 121 / 255, 183 / 255), - grDevices::rgb(139 / 255, 104 / 255, 175 / 255), - grDevices::rgb(138 / 255, 89 / 255, 168 / 255), - grDevices::rgb(136 / 255, 72 / 255, 160 / 255), - grDevices::rgb(130 / 255, 54 / 255, 145 / 255), - grDevices::rgb(120 / 255, 32 / 255, 126 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "20" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(238 / 255, 246 / 255, 249 / 255), - grDevices::rgb(230 / 255, 240 / 255, 246 / 255), - grDevices::rgb(220 / 255, 233 / 255, 242 / 255), - grDevices::rgb(208 / 255, 224 / 255, 237 / 255), - grDevices::rgb(196 / 255, 214 / 255, 232 / 255), - grDevices::rgb(184 / 255, 206 / 255, 227 / 255), - grDevices::rgb(172 / 255, 197 / 255, 223 / 255), - grDevices::rgb(159 / 255, 189 / 255, 218 / 255), - grDevices::rgb(152 / 255, 175 / 255, 211 / 255), - grDevices::rgb(145 / 255, 161 / 255, 204 / 255), - grDevices::rgb(140 / 255, 147 / 255, 196 / 255), - grDevices::rgb(140 / 255, 132 / 255, 189 / 255), - grDevices::rgb(140 / 255, 116 / 255, 181 / 255), - grDevices::rgb(139 / 255, 100 / 255, 173 / 255), - grDevices::rgb(138 / 255, 85 / 255, 166 / 255), - grDevices::rgb(136 / 255, 69 / 255, 159 / 255), - grDevices::rgb(129 / 255, 51 / 255, 143 / 255), - grDevices::rgb(119 / 255, 31 / 255, 125 / 255), - grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), - "type" = "sequential" - ), - "Oranges" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(254 / 255, 230 / 255, 206 / 255), - grDevices::rgb(230 / 255, 85 / 255, 13 / 255)), - "3" = tibble::lst(grDevices::rgb(254 / 255, 230 / 255, 206 / 255), - grDevices::rgb(253 / 255, 174 / 255, 107 / 255), - grDevices::rgb(230 / 255, 85 / 255, 13 / 255)), - "4" = tibble::lst(grDevices::rgb(254 / 255, 237 / 255, 222 / 255), - grDevices::rgb(253 / 255, 190 / 255, 133 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(217 / 255, 71 / 255, 1 / 255)), - "5" = tibble::lst(grDevices::rgb(254 / 255, 237 / 255, 222 / 255), - grDevices::rgb(253 / 255, 190 / 255, 133 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(230 / 255, 85 / 255, 13 / 255), - grDevices::rgb(166 / 255, 54 / 255, 3 / 255)), - "6" = tibble::lst(grDevices::rgb(254 / 255, 237 / 255, 222 / 255), - grDevices::rgb(253 / 255, 208 / 255, 162 / 255), - grDevices::rgb(253 / 255, 174 / 255, 107 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(230 / 255, 85 / 255, 13 / 255), - grDevices::rgb(166 / 255, 54 / 255, 3 / 255)), - "7" = tibble::lst(grDevices::rgb(254 / 255, 237 / 255, 222 / 255), - grDevices::rgb(253 / 255, 208 / 255, 162 / 255), - grDevices::rgb(253 / 255, 174 / 255, 107 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(241 / 255, 105 / 255, 19 / 255), - grDevices::rgb(217 / 255, 72 / 255, 1 / 255), - grDevices::rgb(140 / 255, 45 / 255, 4 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 245 / 255, 235 / 255), - grDevices::rgb(254 / 255, 230 / 255, 206 / 255), - grDevices::rgb(253 / 255, 208 / 255, 162 / 255), - grDevices::rgb(253 / 255, 174 / 255, 107 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(241 / 255, 105 / 255, 19 / 255), - grDevices::rgb(217 / 255, 72 / 255, 1 / 255), - grDevices::rgb(140 / 255, 45 / 255, 4 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 245 / 255, 235 / 255), - grDevices::rgb(254 / 255, 230 / 255, 206 / 255), - grDevices::rgb(253 / 255, 208 / 255, 162 / 255), - grDevices::rgb(253 / 255, 174 / 255, 107 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(241 / 255, 105 / 255, 19 / 255), - grDevices::rgb(217 / 255, 72 / 255, 1 / 255), - grDevices::rgb(166 / 255, 54 / 255, 3 / 255), - grDevices::rgb(127 / 255, 39 / 255, 4 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 233 / 255, 212 / 255), - grDevices::rgb(253 / 255, 217 / 255, 181 / 255), - grDevices::rgb(253 / 255, 196 / 255, 143 / 255), - grDevices::rgb(253 / 255, 170 / 255, 101 / 255), - grDevices::rgb(253 / 255, 144 / 255, 65 / 255), - grDevices::rgb(245 / 255, 117 / 255, 34 / 255), - grDevices::rgb(230 / 255, 90 / 255, 10 / 255), - grDevices::rgb(199 / 255, 65 / 255, 2 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 234 / 255, 214 / 255), - grDevices::rgb(254 / 255, 221 / 255, 188 / 255), - grDevices::rgb(253 / 255, 204 / 255, 156 / 255), - grDevices::rgb(253 / 255, 180 / 255, 117 / 255), - grDevices::rgb(253 / 255, 157 / 255, 83 / 255), - grDevices::rgb(250 / 255, 134 / 255, 52 / 255), - grDevices::rgb(242 / 255, 108 / 255, 24 / 255), - grDevices::rgb(226 / 255, 85 / 255, 7 / 255), - grDevices::rgb(193 / 255, 63 / 255, 2 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 235 / 255, 216 / 255), - grDevices::rgb(254 / 255, 223 / 255, 193 / 255), - grDevices::rgb(253 / 255, 209 / 255, 165 / 255), - grDevices::rgb(253 / 255, 189 / 255, 131 / 255), - grDevices::rgb(253 / 255, 168 / 255, 98 / 255), - grDevices::rgb(253 / 255, 147 / 255, 68 / 255), - grDevices::rgb(247 / 255, 124 / 255, 43 / 255), - grDevices::rgb(238 / 255, 102 / 255, 17 / 255), - grDevices::rgb(223 / 255, 81 / 255, 5 / 255), - grDevices::rgb(188 / 255, 61 / 255, 2 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 236 / 255, 218 / 255), - grDevices::rgb(254 / 255, 226 / 255, 198 / 255), - grDevices::rgb(253 / 255, 213 / 255, 172 / 255), - grDevices::rgb(253 / 255, 196 / 255, 143 / 255), - grDevices::rgb(253 / 255, 176 / 255, 111 / 255), - grDevices::rgb(253 / 255, 157 / 255, 83 / 255), - grDevices::rgb(252 / 255, 138 / 255, 56 / 255), - grDevices::rgb(245 / 255, 117 / 255, 34 / 255), - grDevices::rgb(235 / 255, 97 / 255, 14 / 255), - grDevices::rgb(221 / 255, 77 / 255, 3 / 255), - grDevices::rgb(184 / 255, 60 / 255, 2 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 236 / 255, 219 / 255), - grDevices::rgb(254 / 255, 228 / 255, 202 / 255), - grDevices::rgb(253 / 255, 216 / 255, 178 / 255), - grDevices::rgb(253 / 255, 202 / 255, 153 / 255), - grDevices::rgb(253 / 255, 184 / 255, 123 / 255), - grDevices::rgb(253 / 255, 166 / 255, 96 / 255), - grDevices::rgb(253 / 255, 148 / 255, 71 / 255), - grDevices::rgb(249 / 255, 130 / 255, 48 / 255), - grDevices::rgb(242 / 255, 110 / 255, 26 / 255), - grDevices::rgb(231 / 255, 92 / 255, 11 / 255), - grDevices::rgb(218 / 255, 74 / 255, 2 / 255), - grDevices::rgb(180 / 255, 59 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 237 / 255, 220 / 255), - grDevices::rgb(254 / 255, 229 / 255, 205 / 255), - grDevices::rgb(253 / 255, 218 / 255, 183 / 255), - grDevices::rgb(253 / 255, 208 / 255, 161 / 255), - grDevices::rgb(253 / 255, 191 / 255, 134 / 255), - grDevices::rgb(253 / 255, 173 / 255, 107 / 255), - grDevices::rgb(253 / 255, 157 / 255, 83 / 255), - grDevices::rgb(253 / 255, 140 / 255, 59 / 255), - grDevices::rgb(247 / 255, 123 / 255, 41 / 255), - grDevices::rgb(241 / 255, 104 / 255, 19 / 255), - grDevices::rgb(229 / 255, 88 / 255, 9 / 255), - grDevices::rgb(216 / 255, 71 / 255, 0 / 255), - grDevices::rgb(177 / 255, 58 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 237 / 255, 221 / 255), - grDevices::rgb(254 / 255, 230 / 255, 207 / 255), - grDevices::rgb(254 / 255, 221 / 255, 188 / 255), - grDevices::rgb(253 / 255, 210 / 255, 167 / 255), - grDevices::rgb(253 / 255, 196 / 255, 143 / 255), - grDevices::rgb(253 / 255, 180 / 255, 117 / 255), - grDevices::rgb(253 / 255, 165 / 255, 94 / 255), - grDevices::rgb(253 / 255, 149 / 255, 72 / 255), - grDevices::rgb(250 / 255, 134 / 255, 52 / 255), - grDevices::rgb(245 / 255, 117 / 255, 34 / 255), - grDevices::rgb(237 / 255, 100 / 255, 16 / 255), - grDevices::rgb(226 / 255, 85 / 255, 7 / 255), - grDevices::rgb(211 / 255,70 / 255, 1 / 255), - grDevices::rgb(175 / 255, 57 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 238 / 255, 222 / 255), - grDevices::rgb(254 / 255, 231 / 255, 209 / 255), - grDevices::rgb(254 / 255, 223 / 255, 192 / 255), - grDevices::rgb(253 / 255, 213 / 255, 172 / 255), - grDevices::rgb(253 / 255, 201 / 255, 151 / 255), - grDevices::rgb(253 / 255, 186 / 255, 127 / 255), - grDevices::rgb(253 / 255, 171 / 255, 104 / 255), - grDevices::rgb(253 / 255, 157 / 255, 83 / 255), - grDevices::rgb(253 / 255, 143 / 255, 63 / 255), - grDevices::rgb(248 / 255, 127 / 255, 46 / 255), - grDevices::rgb(243 / 255, 111 / 255, 28 / 255), - grDevices::rgb(235 / 255, 97 / 255, 14 / 255), - grDevices::rgb(224 / 255, 82 / 255, 5 / 255), - grDevices::rgb(207 / 255, 68 / 255, 1 / 255), - grDevices::rgb(172 / 255, 56 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 238 / 255, 223 / 255), - grDevices::rgb(254 / 255, 232 / 255, 211 / 255), - grDevices::rgb(254 / 255, 224 / 255, 195 / 255), - grDevices::rgb(253 / 255, 215 / 255, 177 / 255), - grDevices::rgb(253 / 255, 206 / 255, 158 / 255), - grDevices::rgb(253 / 255, 192 / 255, 136 / 255), - grDevices::rgb(253 / 255, 178 / 255, 113 / 255), - grDevices::rgb(253 / 255, 164 / 255, 93 / 255), - grDevices::rgb(253 / 255, 150 / 255, 74 / 255), - grDevices::rgb(251 / 255, 136 / 255, 55 / 255), - grDevices::rgb(246 / 255, 122 / 255, 40 / 255), - grDevices::rgb(241 / 255, 107 / 255, 22 / 255), - grDevices::rgb(232 / 255, 93 / 255, 12 / 255), - grDevices::rgb(222 / 255, 80 / 255, 4 / 255), - grDevices::rgb(202 / 255, 67 / 255, 1 / 255), - grDevices::rgb(170 / 255, 55 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 239 / 255, 223 / 255), - grDevices::rgb(254 / 255, 233 / 255, 212 / 255), - grDevices::rgb(254 / 255, 226 / 255, 198 / 255), - grDevices::rgb(253 / 255, 217 / 255, 181 / 255), - grDevices::rgb(253 / 255, 209 / 255, 164 / 255), - grDevices::rgb(253 / 255, 196 / 255, 143 / 255), - grDevices::rgb(253 / 255, 183 / 255, 122 / 255), - grDevices::rgb(253 / 255, 170 / 255, 101 / 255), - grDevices::rgb(253 / 255, 157 / 255, 83 / 255), - grDevices::rgb(253 / 255, 144 / 255, 65 / 255), - grDevices::rgb(249 / 255, 131 / 255, 49 / 255), - grDevices::rgb(245 / 255, 117 / 255, 34 / 255), - grDevices::rgb(239 / 255, 103 / 255, 18 / 255), - grDevices::rgb(230 / 255, 90 / 255, 10 / 255), - grDevices::rgb(221 / 255, 77 / 255, 3 / 255), - grDevices::rgb(199 / 255, 65 / 255, 2 / 255), - grDevices::rgb(169 / 255, 55 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), - grDevices::rgb(254 / 255, 239 / 255, 224 / 255), - grDevices::rgb(254 / 255, 233 / 255, 213 / 255), - grDevices::rgb(254 / 255, 227 / 255, 201 / 255), - grDevices::rgb(253 / 255, 219 / 255, 185 / 255), - grDevices::rgb(253 / 255, 211 / 255, 168 / 255), - grDevices::rgb(253 / 255, 200 / 255, 150 / 255), - grDevices::rgb(253 / 255, 188 / 255, 130 / 255), - grDevices::rgb(253 / 255, 175 / 255, 109 / 255), - grDevices::rgb(253 / 255, 163 / 255, 92 / 255), - grDevices::rgb(253 / 255, 151 / 255, 75 / 255), - grDevices::rgb(252 / 255, 139 / 255, 58 / 255), - grDevices::rgb(248 / 255, 126 / 255, 44 / 255), - grDevices::rgb(243 / 255, 112 / 255, 29 / 255), - grDevices::rgb(237 / 255, 99 / 255, 16 / 255), - grDevices::rgb(228 / 255, 88 / 255, 8 / 255), - grDevices::rgb(219 / 255, 75 / 255, 2 / 255), - grDevices::rgb(196 / 255, 64 / 255, 2 / 255), - grDevices::rgb(167 / 255, 54 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "type" = "sequential" - ), - "BuGn" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(), - "3" = tibble::lst(grDevices::rgb(229 / 255, 245 / 255, 249 / 255), - grDevices::rgb(153 / 255, 216 / 255, 201 / 255), - grDevices::rgb(44 / 255, 162 / 255, 95 / 255)), - "4" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), - grDevices::rgb(178 / 255, 226 / 255, 226 / 255), - grDevices::rgb(102 / 255, 194 / 255, 164 / 255), - grDevices::rgb(35 / 255, 139 / 255, 69 / 255)), - "5" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), - grDevices::rgb(178 / 255, 226 / 255, 226 / 255), - grDevices::rgb(102 / 255, 194 / 255, 164 / 255), - grDevices::rgb(44 / 255, 162 / 255, 95 / 255), - grDevices::rgb(0 / 255, 109 / 255, 44 / 255)), - "6" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), - grDevices::rgb(204 / 255, 236 / 255, 230 / 255), - grDevices::rgb(153 / 255, 216 / 255, 201 / 255), - grDevices::rgb(102 / 255, 194 / 255, 164 / 255), - grDevices::rgb(44 / 255, 162 / 255, 95 / 255), - grDevices::rgb(0 / 255, 109 / 255, 44 / 255)), - "7" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), - grDevices::rgb(204 / 255, 236 / 255, 230 / 255), - grDevices::rgb(153 / 255, 216 / 255, 201 / 255), - grDevices::rgb(102 / 255, 194 / 255, 164 / 255), - grDevices::rgb(65 / 255, 174 / 255, 118 / 255), - grDevices::rgb(35 / 255, 139 / 255, 69 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "8" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(229 / 255, 245 / 255, 249 / 255), - grDevices::rgb(204 / 255, 236 / 255, 230 / 255), - grDevices::rgb(153 / 255, 216 / 255, 201 / 255), - grDevices::rgb(102 / 255, 194 / 255, 164 / 255), - grDevices::rgb(65 / 255, 174 / 255, 118 / 255), - grDevices::rgb(35 / 255, 139 / 255, 69 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "9" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(229 / 255, 245 / 255, 249 / 255), - grDevices::rgb(204 / 255, 236 / 255, 230 / 255), - grDevices::rgb(153 / 255, 216 / 255, 201 / 255), - grDevices::rgb(102 / 255, 194 / 255, 164 / 255), - grDevices::rgb(65 / 255, 174 / 255, 118 / 255), - grDevices::rgb(35 / 255, 139 / 255, 69 / 255), - grDevices::rgb(0 / 255, 109 / 255, 44 / 255), - grDevices::rgb(0 / 255, 68 / 255, 27 / 255)), - "10" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(233 / 255, 246 / 255, 249 / 255), - grDevices::rgb(215 / 255, 240 / 255, 238 / 255), - grDevices::rgb(187 / 255, 229 / 255, 220 / 255), - grDevices::rgb(147 / 255, 213 / 255, 196 / 255), - grDevices::rgb(108 / 255, 196 / 255, 168 / 255), - grDevices::rgb(78 / 255, 180 / 255, 133 / 255), - grDevices::rgb(52 / 255, 158 / 255, 96 / 255), - grDevices::rgb(27 / 255, 127 / 255, 61 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "11" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(234 / 255, 247 / 255, 250 / 255), - grDevices::rgb(219 / 255, 241 / 255, 241 / 255), - grDevices::rgb(199 / 255, 234 / 255, 227 / 255), - grDevices::rgb(163 / 255, 220 / 255, 206 / 255), - grDevices::rgb(128 / 255, 205 / 255, 182 / 255), - grDevices::rgb(95 / 255, 190 / 255, 154 / 255), - grDevices::rgb(69 / 255, 176 / 255, 122 / 255), - grDevices::rgb(47 / 255, 152 / 255, 88 / 255), - grDevices::rgb(25 / 255, 123 / 255, 58 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "12" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(235 / 255, 247 / 255, 250 / 255), - grDevices::rgb(222 / 255, 242 / 255, 243 / 255), - grDevices::rgb(206 / 255, 236 / 255, 231 / 255), - grDevices::rgb(176 / 255, 225 / 255, 214 / 255), - grDevices::rgb(144 / 255, 212 / 255, 194 / 255), - grDevices::rgb(111 / 255, 198 / 255, 170 / 255), - grDevices::rgb(86 / 255, 184 / 255, 142 / 255), - grDevices::rgb(62 / 255, 170 / 255, 113 / 255), - grDevices::rgb(44 / 255, 148 / 255, 82 / 255), - grDevices::rgb(23 / 255, 119 / 255, 56 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "13" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(236 / 255, 247 / 255, 250 / 255), - grDevices::rgb(224 / 255, 243 / 255, 245 / 255), - grDevices::rgb(210 / 255, 238 / 255, 234 / 255), - grDevices::rgb(187 / 255, 229 / 255, 220 / 255), - grDevices::rgb(157 / 255, 217 / 255, 203 / 255), - grDevices::rgb(128 / 255, 205 / 255, 182 / 255), - grDevices::rgb(99 / 255, 192 / 255, 160 / 255), - grDevices::rgb(78 / 255, 180 / 255, 133 / 255), - grDevices::rgb(58 / 255, 165 / 255, 105 / 255), - grDevices::rgb(40 / 255, 144 / 255, 77 / 255), - grDevices::rgb(21 / 255, 117 / 255, 54 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "14" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(237 / 255, 248 / 255, 250 / 255), - grDevices::rgb(227 / 255, 244 / 255, 247 / 255), - grDevices::rgb(213 / 255, 239 / 255, 237 / 255), - grDevices::rgb(196 / 255, 232 / 255, 225 / 255), - grDevices::rgb(168 / 255, 222 / 255, 209 / 255), - grDevices::rgb(141 / 255, 210 / 255, 192 / 255), - grDevices::rgb(114 / 255, 199 / 255, 172 / 255), - grDevices::rgb(91 / 255, 187 / 255, 149 / 255), - grDevices::rgb(71 / 255, 177 / 255, 125 / 255), - grDevices::rgb(54 / 255, 160 / 255, 98 / 255), - grDevices::rgb(37 / 255, 141 / 255, 72 / 255), - grDevices::rgb(19 / 255, 114 / 255, 53 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "15" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(238 / 255, 248 / 255, 250 / 255), - grDevices::rgb(229 / 255, 244 / 255, 248 / 255), - grDevices::rgb(216 / 255, 240 / 255, 239 / 255), - grDevices::rgb(204 / 255, 235 / 255, 229 / 255), - grDevices::rgb(178 / 255, 226 / 255, 215 / 255), - grDevices::rgb(153 / 255, 216 / 255, 201 / 255), - grDevices::rgb(128 / 255, 205 / 255, 182 / 255), - grDevices::rgb(102 / 255, 193 / 255, 164 / 255), - grDevices::rgb(84 / 255, 184 / 255, 140 / 255), - grDevices::rgb(64 / 255, 173 / 255, 118 / 255), - grDevices::rgb(50 / 255, 156 / 255, 93 / 255), - grDevices::rgb(34 / 255, 139 / 255, 69 / 255), - grDevices::rgb(18 / 255, 112 / 255, 52 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "16" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(238 / 255, 248 / 255, 251 / 255), - grDevices::rgb(230 / 255, 245 / 255, 249 / 255), - grDevices::rgb(219 / 255, 241 / 255, 241 / 255), - grDevices::rgb(207 / 255, 237 / 255, 232 / 255), - grDevices::rgb(187 / 255, 229 / 255, 220 / 255), - grDevices::rgb(163 / 255, 220 / 255, 206 / 255), - grDevices::rgb(139 / 255, 210 / 255, 191 / 255), - grDevices::rgb(116 / 255, 199 / 255, 173 / 255), - grDevices::rgb(95 / 255, 190 / 255, 154 / 255), - grDevices::rgb(78 / 255, 180 / 255, 133 / 255), - grDevices::rgb(61 / 255, 169 / 255, 111 / 255), - grDevices::rgb(47 / 255, 152 / 255, 88 / 255), - grDevices::rgb(32 / 255, 135 / 255, 66 / 255), - grDevices::rgb(17 / 255, 111 / 255, 51 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "17" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(239 / 255, 248 / 255, 251 / 255), - grDevices::rgb(231 / 255, 245 / 255, 249 / 255), - grDevices::rgb(221 / 255, 242 / 255, 243 / 255), - grDevices::rgb(210 / 255, 238 / 255, 234 / 255), - grDevices::rgb(194 / 255, 232 / 255, 224 / 255), - grDevices::rgb(172 / 255, 223 / 255, 211 / 255), - grDevices::rgb(149 / 255, 214 / 255, 198 / 255), - grDevices::rgb(128 / 255, 205 / 255, 182 / 255), - grDevices::rgb(105 / 255, 195 / 255, 166 / 255), - grDevices::rgb(89 / 255, 186 / 255, 146 / 255), - grDevices::rgb(72 / 255, 177 / 255, 126 / 255), - grDevices::rgb(58 / 255, 165 / 255, 105 / 255), - grDevices::rgb(45 / 255, 149 / 255, 84 / 255), - grDevices::rgb(30 / 255, 132 / 255, 64 / 255), - grDevices::rgb(15 / 255, 109 / 255, 50 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "18" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(239 / 255, 249 / 255, 251 / 255), - grDevices::rgb(232 / 255, 246 / 255, 249 / 255), - grDevices::rgb(223 / 255, 242 / 255, 244 / 255), - grDevices::rgb(212 / 255, 239 / 255, 236 / 255), - grDevices::rgb(201 / 255, 234 / 255, 228 / 255), - grDevices::rgb(180 / 255, 226 / 255, 216 / 255), - grDevices::rgb(159 / 255, 218 / 255, 204 / 255), - grDevices::rgb(138 / 255, 209 / 255, 189 / 255), - grDevices::rgb(117 / 255, 200 / 255, 174 / 255), - grDevices::rgb(98 / 255, 191 / 255, 158 / 255), - grDevices::rgb(83 / 255, 183 / 255, 139 / 255), - grDevices::rgb(67 / 255, 175 / 255, 120 / 255), - grDevices::rgb(55 / 255, 161 / 255, 100 / 255), - grDevices::rgb(42 / 255, 147 / 255, 80 / 255), - grDevices::rgb(29 / 255, 129 / 255, 62 / 255), - grDevices::rgb(14 / 255, 108 / 255, 49 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "19" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(240 / 255, 249 / 255, 251 / 255), - grDevices::rgb(233 / 255, 246 / 255, 249 / 255), - grDevices::rgb(224 / 255, 243 / 255, 245 / 255), - grDevices::rgb(215 / 255, 240 / 255, 238 / 255), - grDevices::rgb(205 / 255, 236 / 255, 231 / 255), - grDevices::rgb(187 / 255, 229 / 255, 220 / 255), - grDevices::rgb(167 / 255, 221 / 255, 208 / 255), - grDevices::rgb(147 / 255, 213 / 255, 196 / 255), - grDevices::rgb(128 / 255, 205 / 255, 182 / 255), - grDevices::rgb(108 / 255, 196 / 255, 168 / 255), - grDevices::rgb(92 / 255, 188 / 255, 151 / 255), - grDevices::rgb(78 / 255, 180 / 255, 133 / 255), - grDevices::rgb(63 / 255, 172 / 255, 115 / 255), - grDevices::rgb(52 / 255, 158 / 255, 96 / 255), - grDevices::rgb(40 / 255, 144 / 255, 77 / 255), - grDevices::rgb(27 / 255, 127 / 255, 61 / 255), - grDevices::rgb(14 / 255, 107 / 255, 48 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "20" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), - grDevices::rgb(240 / 255, 249 / 255, 251 / 255), - grDevices::rgb(233 / 255, 246 / 255, 250 / 255), - grDevices::rgb(226 / 255, 244 / 255, 246 / 255), - grDevices::rgb(217 / 255, 240 / 255, 239 / 255), - grDevices::rgb(207 / 255, 237 / 255, 232 / 255), - grDevices::rgb(193 / 255, 231 / 255, 223 / 255), - grDevices::rgb(174 / 255, 224 / 255, 213 / 255), - grDevices::rgb(155 / 255, 217 / 255, 202 / 255), - grDevices::rgb(137 / 255, 209 / 255, 189 / 255), - grDevices::rgb(118 / 255, 200 / 255, 175 / 255), - grDevices::rgb(100 / 255, 192 / 255, 161 / 255), - grDevices::rgb(87 / 255, 185 / 255, 144 / 255), - grDevices::rgb(73 / 255, 178 / 255, 127 / 255), - grDevices::rgb(60 / 255, 168 / 255, 110 / 255), - grDevices::rgb(50 / 255, 155 / 255, 92 / 255), - grDevices::rgb(38 / 255, 142 / 255, 74 / 255), - grDevices::rgb(26 / 255, 125 / 255, 60 / 255), - grDevices::rgb(13 / 255, 106 / 255, 47 / 255), - grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), - "type" = "sequential" - ), - "YlOrBr" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 188 / 255), - grDevices::rgb(217 / 255, 95 / 255, 14 / 255)), - "3" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 188 / 255), - grDevices::rgb(254 / 255, 196 / 255, 79 / 255), - grDevices::rgb(217 / 255, 95 / 255, 14 / 255)), - "4" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 212 / 255), - grDevices::rgb(254 / 255, 217 / 255, 142 / 255), - grDevices::rgb(254 / 255, 153 / 255, 41 / 255), - grDevices::rgb(204 / 255, 76 / 255, 2 / 255)), - "5" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 212 / 255), - grDevices::rgb(254 / 255, 217 / 255, 142 / 255), - grDevices::rgb(254 / 255, 153 / 255, 41 / 255), - grDevices::rgb(217 / 255, 95 / 255, 14 / 255), - grDevices::rgb(153 / 255, 52 / 255, 4 / 255)), - "6" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 212 / 255), - grDevices::rgb(254 / 255, 227 / 255, 145 / 255), - grDevices::rgb(254 / 255, 196 / 255, 79 / 255), - grDevices::rgb(254 / 255, 153 / 255, 41 / 255), - grDevices::rgb(217 / 255, 95 / 255, 14 / 255), - grDevices::rgb(153 / 255, 52 / 255, 4 / 255)), - "7" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 212 / 255), - grDevices::rgb(254 / 255, 227 / 255, 145 / 255), - grDevices::rgb(254 / 255, 196 / 255, 79 / 255), - grDevices::rgb(254 / 255, 153 / 255, 41 / 255), - grDevices::rgb(236 / 255, 112 / 255, 20 / 255), - grDevices::rgb(204 / 255, 76 / 255, 2 / 255), - grDevices::rgb(140 / 255, 45 / 255, 4 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 247 / 255, 188 / 255), - grDevices::rgb(254 / 255, 227 / 255, 145 / 255), - grDevices::rgb(254 / 255, 196 / 255, 79 / 255), - grDevices::rgb(254 / 255, 153 / 255, 41 / 255), - grDevices::rgb(236 / 255, 112 / 255, 20 / 255), - grDevices::rgb(204 / 255, 76 / 255, 2 / 255), - grDevices::rgb(140 / 255, 45 / 255, 4 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 247 / 255, 188 / 255), - grDevices::rgb(254 / 255, 227 / 255, 145 / 255), - grDevices::rgb(254 / 255, 196 / 255, 79 / 255), - grDevices::rgb(254 / 255, 153 / 255, 41 / 255), - grDevices::rgb(236 / 255, 112 / 255, 20 / 255), - grDevices::rgb(204 / 255, 76 / 255, 2 / 255), - grDevices::rgb(153 / 255, 52 / 255, 4 / 255), - grDevices::rgb(102 / 255, 37 / 255, 6 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 248 / 255, 197 / 255), - grDevices::rgb(254 / 255, 235 / 255, 164 / 255), - grDevices::rgb(254 / 255, 216 / 255, 123 / 255), - grDevices::rgb(254 / 255, 191 / 255, 74 / 255), - grDevices::rgb(254 / 255, 157 / 255, 45 / 255), - grDevices::rgb(242 / 255, 125 / 255, 27 / 255), - grDevices::rgb(221 / 255, 96 / 255, 11 / 255), - grDevices::rgb(189 / 255, 68 / 255, 2 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 249 / 255, 200 / 255), - grDevices::rgb(254 / 255, 238 / 255, 170 / 255), - grDevices::rgb(254 / 255, 223 / 255, 138 / 255), - grDevices::rgb(254 / 255, 202 / 255, 92 / 255), - grDevices::rgb(254 / 255, 174 / 255, 60 / 255), - grDevices::rgb(250 / 255, 144 / 255, 36 / 255), - grDevices::rgb(237 / 255, 116 / 255, 22 / 255), - grDevices::rgb(216 / 255, 90 / 255, 8 / 255), - grDevices::rgb(184 / 255, 66 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 249 / 255, 202 / 255), - grDevices::rgb(255 / 255, 241 / 255, 176 / 255), - grDevices::rgb(254 / 255, 228 / 255, 148 / 255), - grDevices::rgb(254 / 255, 210 / 255, 109 / 255), - grDevices::rgb(254 / 255, 188 / 255, 72 / 255), - grDevices::rgb(254 / 255, 161 / 255, 48 / 255), - grDevices::rgb(246 / 255, 134 / 255, 31 / 255), - grDevices::rgb(233 / 255, 108 / 255, 18 / 255), - grDevices::rgb(212 / 255, 85 / 255, 6 / 255), - grDevices::rgb(180 / 255, 64 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 250 / 255, 205 / 255), - grDevices::rgb(255 / 255, 243 / 255, 180 / 255), - grDevices::rgb(254 / 255, 231 / 255, 155 / 255), - grDevices::rgb(254 / 255, 216 / 255, 123 / 255), - grDevices::rgb(254 / 255, 198 / 255, 84 / 255), - grDevices::rgb(254 / 255, 174 / 255, 60 / 255), - grDevices::rgb(252 / 255, 149 / 255, 39 / 255), - grDevices::rgb(242 / 255, 125 / 255, 27 / 255), - grDevices::rgb(227 / 255, 103 / 255, 15 / 255), - grDevices::rgb(209 / 255, 82 / 255, 4 / 255), - grDevices::rgb(176 / 255, 62 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 250 / 255, 206 / 255), - grDevices::rgb(255 / 255, 245 / 255, 184 / 255), - grDevices::rgb(254 / 255, 234 / 255, 161 / 255), - grDevices::rgb(254 / 255, 222 / 255, 135 / 255), - grDevices::rgb(254 / 255, 205 / 255, 100 / 255), - grDevices::rgb(254 / 255, 186 / 255, 70 / 255), - grDevices::rgb(254 / 255, 163 / 255, 50 / 255), - grDevices::rgb(248 / 255, 140 / 255, 34 / 255), - grDevices::rgb(238 / 255, 118 / 255, 23 / 255), - grDevices::rgb(223 / 255, 98 / 255, 12 / 255), - grDevices::rgb(206 / 255, 78 / 255, 3 / 255), - grDevices::rgb(173 / 255, 61 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 250 / 255, 208 / 255), - grDevices::rgb(255 / 255, 247 / 255, 187 / 255), - grDevices::rgb(254 / 255, 236 / 255, 166 / 255), - grDevices::rgb(254 / 255, 227 / 255, 145 / 255), - grDevices::rgb(254 / 255, 211 / 255, 112 / 255), - grDevices::rgb(254 / 255, 196 / 255, 78 / 255), - grDevices::rgb(254 / 255, 174 / 255, 60 / 255), - grDevices::rgb(254 / 255, 153 / 255, 40 / 255), - grDevices::rgb(245 / 255, 132 / 255, 30 / 255), - grDevices::rgb(235 / 255, 112 / 255, 19 / 255), - grDevices::rgb(219 / 255, 94 / 255, 10 / 255), - grDevices::rgb(204 / 255, 76 / 255, 1 / 255), - grDevices::rgb(171 / 255, 60 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 251 / 255, 209 / 255), - grDevices::rgb(255 / 255, 247 / 255, 190 / 255), - grDevices::rgb(254 / 255, 238 / 255, 170 / 255), - grDevices::rgb(254 / 255, 229 / 255, 150 / 255), - grDevices::rgb(254 / 255, 216 / 255, 123 / 255), - grDevices::rgb(254 / 255, 202 / 255, 92 / 255), - grDevices::rgb(254 / 255, 184 / 255, 69 / 255), - grDevices::rgb(254 / 255, 164 / 255, 51 / 255), - grDevices::rgb(250 / 255, 144 / 255, 36 / 255), - grDevices::rgb(242 / 255, 125 / 255, 27 / 255), - grDevices::rgb(231 / 255, 107 / 255, 17 / 255), - grDevices::rgb(216 / 255, 90 / 255, 8 / 255), - grDevices::rgb(199 / 255, 73 / 255, 2 / 255), - grDevices::rgb(169 / 255, 59 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 251 / 255, 211 / 255), - grDevices::rgb(255 / 255, 247 / 255, 193 / 255), - grDevices::rgb(255 / 255, 240 / 255, 174 / 255), - grDevices::rgb(254 / 255, 231 / 255, 155 / 255), - grDevices::rgb(254 / 255, 221 / 255, 133 / 255), - grDevices::rgb(254 / 255, 207 / 255, 104 / 255), - grDevices::rgb(254 / 255, 193 / 255, 76 / 255), - grDevices::rgb(254 / 255, 174 / 255, 60 / 255), - grDevices::rgb(254 / 255, 155 / 255, 43 / 255), - grDevices::rgb(247 / 255, 137 / 255, 33 / 255), - grDevices::rgb(239 / 255, 119 / 255, 24 / 255), - grDevices::rgb(227 / 255, 103 / 255, 15 / 255), - grDevices::rgb(213 / 255, 87 / 255, 6 / 255), - grDevices::rgb(195 / 255, 72 / 255, 2 / 255), - grDevices::rgb(167 / 255, 58 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 251 / 255, 212 / 255), - grDevices::rgb(255 / 255, 248 / 255, 195 / 255), - grDevices::rgb(255 / 255, 242 / 255, 177 / 255), - grDevices::rgb(254 / 255, 234 / 255, 160 / 255), - grDevices::rgb(254 / 255, 225 / 255, 141 / 255), - grDevices::rgb(254 / 255, 212 / 255, 114 / 255), - grDevices::rgb(254 / 255, 199 / 255, 87 / 255), - grDevices::rgb(254 / 255, 183 / 255, 68 / 255), - grDevices::rgb(254 / 255, 165 / 255, 52 / 255), - grDevices::rgb(251 / 255, 148 / 255, 38 / 255), - grDevices::rgb(244 / 255, 131 / 255, 30 / 255), - grDevices::rgb(237 / 255, 114 / 255, 21 / 255), - grDevices::rgb(224 / 255, 99 / 255, 13 / 255), - grDevices::rgb(211 / 255, 84 / 255, 5 / 255), - grDevices::rgb(192 / 255, 70 / 255, 2 / 255), - grDevices::rgb(165 / 255, 57 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 251 / 255, 213 / 255), - grDevices::rgb(255 / 255, 248 / 255, 197 / 255), - grDevices::rgb(255 / 255, 243 / 255, 180 / 255), - grDevices::rgb(254 / 255, 235 / 255, 164 / 255), - grDevices::rgb(254 / 255, 228 / 255, 147 / 255), - grDevices::rgb(254 / 255, 216 / 255, 123 / 255), - grDevices::rgb(254 / 255, 204 / 255, 98 / 255), - grDevices::rgb(254 / 255, 191 / 255, 74 / 255), - grDevices::rgb(254 / 255, 174 / 255, 60 / 255), - grDevices::rgb(254 / 255, 157 / 255, 45 / 255), - grDevices::rgb(249 / 255, 141 / 255, 35 / 255), - grDevices::rgb(242 / 255, 125 / 255, 27 / 255), - grDevices::rgb(234 / 255, 110 / 255, 19 / 255), - grDevices::rgb(221 / 255, 96 / 255, 11 / 255), - grDevices::rgb(209 / 255, 82 / 255, 4 / 255), - grDevices::rgb(189 / 255, 68 / 255, 2 / 255), - grDevices::rgb(164 / 255, 56 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(255 / 255, 252 / 255, 213 / 255), - grDevices::rgb(255 / 255, 249 / 255, 198 / 255), - grDevices::rgb(255 / 255, 244 / 255, 183 / 255), - grDevices::rgb(254 / 255, 237 / 255, 167 / 255), - grDevices::rgb(254 / 255, 230 / 255, 151 / 255), - grDevices::rgb(254 / 255, 220 / 255, 131 / 255), - grDevices::rgb(254 / 255, 209 / 255, 107 / 255), - grDevices::rgb(254 / 255, 197 / 255, 82 / 255), - grDevices::rgb(254 / 255, 182 / 255, 67 / 255), - grDevices::rgb(254 / 255, 166 / 255, 53 / 255), - grDevices::rgb(253 / 255, 150 / 255, 39 / 255), - grDevices::rgb(246 / 255, 136 / 255, 32 / 255), - grDevices::rgb(239 / 255, 120 / 255, 24 / 255), - grDevices::rgb(230 / 255, 106 / 255, 17 / 255), - grDevices::rgb(219 / 255, 93 / 255, 10 / 255), - grDevices::rgb(207 / 255, 79 / 255, 3 / 255), - grDevices::rgb(186 / 255, 67 / 255, 2 / 255), - grDevices::rgb(163 / 255, 56 / 255, 3 / 255), - grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), - "type" = "sequential" - ), - "YlGn" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 185 / 255), - grDevices::rgb(49 / 255, 163 / 255, 84 / 255)), - "3" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 185 / 255), - grDevices::rgb(173 / 255, 221 / 255, 142 / 255), - grDevices::rgb(49 / 255, 163 / 255, 84 / 255)), - "4" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(194 / 255, 230 / 255, 153 / 255), - grDevices::rgb(120 / 255, 198 / 255, 121 / 255), - grDevices::rgb(35 / 255, 132 / 255, 67 / 255)), - "5" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(194 / 255, 230 / 255, 153 / 255), - grDevices::rgb(120 / 255, 198 / 255, 121 / 255), - grDevices::rgb(49 / 255, 163 / 255, 84 / 255), - grDevices::rgb(0 / 255, 104 / 255, 55 / 255)), - "6" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(217 / 255, 240 / 255, 163 / 255), - grDevices::rgb(173 / 255, 221 / 255, 142 / 255), - grDevices::rgb(120 / 255, 198 / 255, 121 / 255), - grDevices::rgb(49 / 255, 163 / 255, 84 / 255), - grDevices::rgb(0 / 255, 104 / 255, 55 / 255)), - "7" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(217 / 255, 240 / 255, 163 / 255), - grDevices::rgb(173 / 255, 221 / 255, 142 / 255), - grDevices::rgb(120 / 255, 198 / 255, 121 / 255), - grDevices::rgb(65 / 255, 171 / 255, 93 / 255), - grDevices::rgb(35 / 255, 132 / 255, 67 / 255), - grDevices::rgb(0 / 255, 90 / 255, 50 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(247 / 255, 252 / 255, 185 / 255), - grDevices::rgb(217 / 255, 240 / 255, 163 / 255), - grDevices::rgb(173 / 255, 221 / 255, 142 / 255), - grDevices::rgb(120 / 255, 198 / 255, 121 / 255), - grDevices::rgb(65 / 255, 171 / 255, 93 / 255), - grDevices::rgb(35 / 255, 132 / 255, 67 / 255), - grDevices::rgb(0 / 255, 90 / 255, 50 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(247 / 255, 252 / 255, 185 / 255), - grDevices::rgb(217 / 255, 240 / 255, 163 / 255), - grDevices::rgb(173 / 255, 221 / 255, 142 / 255), - grDevices::rgb(120 / 255, 198 / 255, 121 / 255), - grDevices::rgb(65 / 255, 171 / 255, 93 / 255), - grDevices::rgb(35 / 255, 132 / 255, 67 / 255), - grDevices::rgb(0 / 255, 104 / 255, 55 / 255), - grDevices::rgb(0 / 255, 69 / 255, 41 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(248 / 255, 252 / 255, 194 / 255), - grDevices::rgb(230 / 255, 245 / 255, 172 / 255), - grDevices::rgb(202 / 255, 233 / 255, 155 / 255), - grDevices::rgb(167 / 255, 218 / 255, 139 / 255), - grDevices::rgb(126 / 255, 200 / 255, 123 / 255), - grDevices::rgb(84 / 255, 179 / 255, 102 / 255), - grDevices::rgb(51 / 255, 153 / 255, 81 / 255), - grDevices::rgb(28 / 255, 122 / 255, 63 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(249 / 255, 252 / 255, 198 / 255), - grDevices::rgb(235 / 255, 247 / 255, 176 / 255), - grDevices::rgb(212 / 255, 238 / 255, 160 / 255), - grDevices::rgb(181 / 255, 224 / 255, 146 / 255), - grDevices::rgb(147 / 255, 209 / 255, 131 / 255), - grDevices::rgb(109 / 255, 192 / 255, 115 / 255), - grDevices::rgb(71 / 255, 173 / 255, 95 / 255), - grDevices::rgb(47 / 255, 147 / 255, 77 / 255), - grDevices::rgb(25 / 255, 119 / 255, 61 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(250 / 255, 253 / 255, 201 / 255), - grDevices::rgb(238 / 255, 248 / 255, 178 / 255), - grDevices::rgb(219 / 255, 241 / 255, 164 / 255), - grDevices::rgb(193 / 255, 229 / 255, 151 / 255), - grDevices::rgb(163 / 255, 216 / 255, 138 / 255), - grDevices::rgb(130 / 255, 202 / 255, 124 / 255), - grDevices::rgb(96 / 255, 185 / 255, 108 / 255), - grDevices::rgb(62 / 255, 167 / 255, 90 / 255), - grDevices::rgb(43 / 255, 142 / 255, 73 / 255), - grDevices::rgb(23 / 255, 116 / 255, 60 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(250 / 255, 253 / 255, 203 / 255), - grDevices::rgb(242 / 255, 250 / 255, 181 / 255), - grDevices::rgb(224 / 255, 243 / 255, 168 / 255), - grDevices::rgb(202 / 255, 233 / 255, 155 / 255), - grDevices::rgb(176 / 255, 222 / 255, 143 / 255), - grDevices::rgb(147 / 255, 209 / 255, 131 / 255), - grDevices::rgb(115 / 255, 195 / 255, 118 / 255), - grDevices::rgb(84 / 255, 179 / 255, 102 / 255), - grDevices::rgb(57 / 255, 161 / 255, 86 / 255), - grDevices::rgb(40 / 255, 138 / 255, 71 / 255), - grDevices::rgb(21 / 255, 114 / 255, 59 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(251 / 255, 253 / 255, 205 / 255), - grDevices::rgb(244 / 255, 251 / 255, 183 / 255), - grDevices::rgb(228 / 255, 244 / 255, 171 / 255), - grDevices::rgb(210 / 255, 237 / 255, 159 / 255), - grDevices::rgb(186 / 255, 226 / 255, 148 / 255), - grDevices::rgb(161 / 255, 215 / 255, 137 / 255), - grDevices::rgb(132 / 255, 203 / 255, 125 / 255), - grDevices::rgb(104 / 255, 189 / 255, 112 / 255), - grDevices::rgb(74 / 255, 175 / 255, 97 / 255), - grDevices::rgb(53 / 255, 155 / 255, 82 / 255), - grDevices::rgb(37 / 255, 134 / 255, 68 / 255), - grDevices::rgb(20 / 255, 112 / 255, 59 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(251 / 255, 253 / 255, 207 / 255), - grDevices::rgb(247 / 255, 252 / 255, 184 / 255), - grDevices::rgb(232 / 255, 246 / 255, 173 / 255), - grDevices::rgb(216 / 255, 240 / 255, 163 / 255), - grDevices::rgb(195 / 255, 230 / 255, 152 / 255), - grDevices::rgb(172 / 255, 221 / 255, 141 / 255), - grDevices::rgb(147 / 255, 209 / 255, 131 / 255), - grDevices::rgb(120 / 255, 197 / 255, 121 / 255), - grDevices::rgb(94 / 255, 184 / 255, 106 / 255), - grDevices::rgb(64 / 255, 171 / 255, 93 / 255), - grDevices::rgb(50 / 255, 151 / 255, 79 / 255), - grDevices::rgb(34 / 255, 132 / 255, 67 / 255), - grDevices::rgb(19 / 255, 110 / 255, 58 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(251 / 255, 253 / 255, 208 / 255), - grDevices::rgb(247 / 255, 252 / 255, 187 / 255), - grDevices::rgb(235 / 255, 247 / 255, 176 / 255), - grDevices::rgb(221 / 255, 241 / 255, 165 / 255), - grDevices::rgb(202 / 255, 233 / 255, 155 / 255), - grDevices::rgb(181 / 255, 224 / 255, 146 / 255), - grDevices::rgb(159 / 255, 214 / 255, 136 / 255), - grDevices::rgb(134 / 255, 204 / 255, 126 / 255), - grDevices::rgb(109 / 255, 192 / 255, 115 / 255), - grDevices::rgb(84 / 255, 179 / 255, 102 / 255), - grDevices::rgb(61 / 255, 165 / 255, 89 / 255), - grDevices::rgb(47 / 255, 147 / 255, 77 / 255), - grDevices::rgb(32 / 255, 129 / 255, 65 / 255), - grDevices::rgb(17 / 255, 109 / 255, 57 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(251 / 255, 253 / 255, 209 / 255), - grDevices::rgb(248 / 255, 252 / 255, 190 / 255), - grDevices::rgb(237 / 255, 248 / 255, 178 / 255), - grDevices::rgb(224 / 255, 243 / 255, 168 / 255), - grDevices::rgb(208 / 255, 236 / 255, 159 / 255), - grDevices::rgb(189 / 255, 228 / 255, 149 / 255), - grDevices::rgb(169 / 255, 219 / 255, 140 / 255), - grDevices::rgb(147 / 255, 209 / 255, 131 / 255), - grDevices::rgb(123 / 255, 199 / 255, 122 / 255), - grDevices::rgb(100 / 255, 187 / 255, 110 / 255), - grDevices::rgb(76 / 255, 176 / 255, 98 / 255), - grDevices::rgb(57 / 255, 161 / 255, 86 / 255), - grDevices::rgb(44 / 255, 143 / 255, 74 / 255), - grDevices::rgb(31 / 255, 126 / 255, 64 / 255), - grDevices::rgb(16 / 255, 108 / 255, 57 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(252 / 255, 253 / 255, 210 / 255), - grDevices::rgb(248 / 255, 252 / 255, 192 / 255), - grDevices::rgb(239 / 255, 249 / 255, 179 / 255), - grDevices::rgb(227 / 255, 244 / 255, 170 / 255), - grDevices::rgb(214 / 255, 238 / 255, 161 / 255), - grDevices::rgb(196 / 255, 231 / 255, 153 / 255), - grDevices::rgb(178 / 255, 223 / 255, 144 / 255), - grDevices::rgb(157 / 255, 214 / 255, 135 / 255), - grDevices::rgb(136 / 255, 204 / 255, 127 / 255), - grDevices::rgb(114 / 255, 194 / 255, 117 / 255), - grDevices::rgb(92 / 255, 183 / 255, 106 / 255), - grDevices::rgb(68 / 255, 172 / 255, 94 / 255), - grDevices::rgb(54 / 255, 157 / 255, 83 / 255), - grDevices::rgb(42 / 255, 141 / 255, 72 / 255), - grDevices::rgb(29 / 255, 124 / 255, 63 / 255), - grDevices::rgb(15 / 255, 106 / 255, 56 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(252 / 255, 253 / 255, 211 / 255), - grDevices::rgb(248 / 255, 252 / 255, 194 / 255), - grDevices::rgb(242 / 255, 250 / 255, 181 / 255), - grDevices::rgb(230 / 255, 245 / 255, 172 / 255), - grDevices::rgb(218 / 255, 240 / 255, 164 / 255), - grDevices::rgb(202 / 255, 233 / 255, 155 / 255), - grDevices::rgb(185 / 255, 226 / 255, 147 / 255), - grDevices::rgb(167 / 255, 218 / 255, 139 / 255), - grDevices::rgb(147 / 255, 209 / 255, 131 / 255), - grDevices::rgb(126 / 255, 200 / 255, 123 / 255), - grDevices::rgb(105 / 255, 190 / 255, 113 / 255), - grDevices::rgb(84 / 255, 179 / 255, 102 / 255), - grDevices::rgb(63 / 255, 168 / 255, 91 / 255), - grDevices::rgb(51 / 255, 153 / 255, 81 / 255), - grDevices::rgb(40 / 255, 138 / 255, 71 / 255), - grDevices::rgb(28 / 255, 122 / 255, 63 / 255), - grDevices::rgb(15 / 255, 105 / 255, 56 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), - grDevices::rgb(252 / 255, 253 / 255, 212 / 255), - grDevices::rgb(249 / 255, 252 / 255, 196 / 255), - grDevices::rgb(243 / 255, 250 / 255, 182 / 255), - grDevices::rgb(232 / 255, 246 / 255, 174 / 255), - grDevices::rgb(221 / 255, 241 / 255, 166 / 255), - grDevices::rgb(207 / 255, 236 / 255, 158 / 255), - grDevices::rgb(191 / 255, 229 / 255, 150 / 255), - grDevices::rgb(175 / 255, 222 / 255, 143 / 255), - grDevices::rgb(156 / 255, 213 / 255, 135 / 255), - grDevices::rgb(137 / 255, 205 / 255, 127 / 255), - grDevices::rgb(117 / 255, 196 / 255, 119 / 255), - grDevices::rgb(98 / 255, 186 / 255, 109 / 255), - grDevices::rgb(77 / 255, 176 / 255, 98 / 255), - grDevices::rgb(60 / 255, 164 / 255, 88 / 255), - grDevices::rgb(49 / 255, 150 / 255, 79 / 255), - grDevices::rgb(38 / 255, 136 / 255, 69 / 255), - grDevices::rgb(26 / 255, 120 / 255, 62 / 255), - grDevices::rgb(14 / 255, 105 / 255, 56 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "type" = "sequential" - ), - "Reds" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(254 / 255, 224 / 255, 210 / 255), - grDevices::rgb(222 / 255, 45 / 255, 38 / 255)), - "3" = tibble::lst(grDevices::rgb(254 / 255, 224 / 255, 210 / 255), - grDevices::rgb(252 / 255, 146 / 255, 114 / 255), - grDevices::rgb(222 / 255, 45 / 255, 38 / 255)), - "4" = tibble::lst(grDevices::rgb(254 / 255, 229 / 255, 217 / 255), - grDevices::rgb(252 / 255, 174 / 255, 145 / 255), - grDevices::rgb(251 / 255, 106 / 255, 74 / 255), - grDevices::rgb(203 / 255, 24 / 255, 29 / 255)), - "5" = tibble::lst(grDevices::rgb(254 / 255, 229 / 255, 217 / 255), - grDevices::rgb(252 / 255, 174 / 255, 145 / 255), - grDevices::rgb(251 / 255, 106 / 255, 74 / 255), - grDevices::rgb(222 / 255, 45 / 255, 38 / 255), - grDevices::rgb(165 / 255, 15 / 255, 21 / 255)), - "6" = tibble::lst(grDevices::rgb(254 / 255, 229 / 255, 217 / 255), - grDevices::rgb(252 / 255, 187 / 255, 161 / 255), - grDevices::rgb(252 / 255, 146 / 255, 114 / 255), - grDevices::rgb(251 / 255, 106 / 255, 74 / 255), - grDevices::rgb(222 / 255, 45 / 255, 38 / 255), - grDevices::rgb(165 / 255, 15 / 255, 21 / 255)), - "7" = tibble::lst(grDevices::rgb(254 / 255, 229 / 255, 217 / 255), - grDevices::rgb(252 / 255, 187 / 255, 161 / 255), - grDevices::rgb(252 / 255, 146 / 255, 114 / 255), - grDevices::rgb(251 / 255, 106 / 255, 74 / 255), - grDevices::rgb(239 / 255, 59 / 255, 44 / 255), - grDevices::rgb(203 / 255, 24 / 255, 29 / 255), - grDevices::rgb(153 / 255, 0 / 255, 13 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 245 / 255, 240 / 255), - grDevices::rgb(254 / 255, 224 / 255, 210 / 255), - grDevices::rgb(252 / 255, 187 / 255, 161 / 255), - grDevices::rgb(252 / 255, 146 / 255, 114 / 255), - grDevices::rgb(251 / 255, 106 / 255, 74 / 255), - grDevices::rgb(239 / 255, 59 / 255, 44 / 255), - grDevices::rgb(203 / 255, 24 / 255, 29 / 255), - grDevices::rgb(153 / 255, 0 / 255, 13 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 245 / 255, 240 / 255), - grDevices::rgb(254 / 255, 224 / 255, 210 / 255), - grDevices::rgb(252 / 255, 187 / 255, 161 / 255), - grDevices::rgb(252 / 255, 146 / 255, 114 / 255), - grDevices::rgb(251 / 255, 106 / 255, 74 / 255), - grDevices::rgb(239 / 255, 59 / 255, 44 / 255), - grDevices::rgb(203 / 255, 24 / 255, 29 / 255), - grDevices::rgb(165 / 255, 15 / 255, 21 / 255), - grDevices::rgb(103 / 255, 0 / 255, 13 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 228 / 255, 216 / 255), - grDevices::rgb(253 / 255, 203 / 255, 182 / 255), - grDevices::rgb(252 / 255, 173 / 255, 145 / 255), - grDevices::rgb(252 / 255, 141 / 255, 109 / 255), - grDevices::rgb(251 / 255, 110 / 255, 78 / 255), - grDevices::rgb(243 / 255,76 / 255, 53 / 255), - grDevices::rgb(222 / 255, 45 / 255, 37 / 255), - grDevices::rgb(191 / 255, 18 / 255, 25 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 230 / 255, 218 / 255), - grDevices::rgb(253 / 255, 209 / 255, 190 / 255), - grDevices::rgb(252 / 255, 182 / 255, 156 / 255), - grDevices::rgb(252 / 255, 154 / 255, 123 / 255), - grDevices::rgb(252 / 255, 126 / 255, 93 / 255), - grDevices::rgb(248 / 255, 97 / 255, 67 / 255), - grDevices::rgb(240 / 255, 64 / 255, 46 / 255), - grDevices::rgb(217 / 255, 39 / 255, 34 / 255), - grDevices::rgb(187 / 255, 17 / 255, 24 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 231 / 255, 220 / 255), - grDevices::rgb(254 / 255, 213 / 255, 196 / 255), - grDevices::rgb(252 / 255, 190 / 255, 165 / 255), - grDevices::rgb(252 / 255, 164 / 255, 135 / 255), - grDevices::rgb(252 / 255, 139 / 255, 106 / 255), - grDevices::rgb(251 / 255, 113 / 255, 81 / 255), - grDevices::rgb(245 / 255, 86 / 255, 60 / 255), - grDevices::rgb(235 / 255, 56 / 255, 42 / 255), - grDevices::rgb(212 / 255, 35 / 255, 33 / 255), - grDevices::rgb(184 / 255, 15 / 255, 23 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 232 / 255, 222 / 255), - grDevices::rgb(254 / 255, 217 / 255, 201 / 255), - grDevices::rgb(253 / 255, 196 / 255, 173 / 255), - grDevices::rgb(252 / 255, 173 / 255, 145 / 255), - grDevices::rgb(252 / 255, 149 / 255, 117 / 255), - grDevices::rgb(252 / 255, 126 / 255, 93 / 255), - grDevices::rgb(250 / 255, 102 / 255, 71 / 255), - grDevices::rgb(243 / 255, 76 / 255, 53 / 255), - grDevices::rgb(229 / 255, 51 / 255, 40 / 255), - grDevices::rgb(208 / 255, 31 / 255, 31 / 255), - grDevices::rgb(181 / 255, 14 / 255, 22 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 233 / 255, 223 / 255), - grDevices::rgb(254 / 255, 221 / 255, 206 / 255), - grDevices::rgb(253 / 255, 201 / 255, 179 / 255), - grDevices::rgb(252 / 255, 180 / 255, 153 / 255), - grDevices::rgb(252 / 255, 158 / 255, 128 / 255), - grDevices::rgb(252 / 255, 137 / 255, 104 / 255), - grDevices::rgb(251 / 255, 115 / 255, 83 / 255), - grDevices::rgb(247 / 255, 93 / 255, 64 / 255), - grDevices::rgb(240 / 255, 67 / 255, 48 / 255), - grDevices::rgb(225 / 255, 46 / 255, 38 / 255), - grDevices::rgb(205 / 255, 27 / 255, 30 / 255), - grDevices::rgb(179 / 255, 13 / 255, 21 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 234 / 255, 224 / 255), - grDevices::rgb(254 / 255, 223 / 255, 210 / 255), - grDevices::rgb(253 / 255, 205 / 255, 185 / 255), - grDevices::rgb(252 / 255, 186 / 255, 160 / 255), - grDevices::rgb(252 / 255, 166 / 255, 137 / 255), - grDevices::rgb(252 / 255, 146 / 255, 114 / 255), - grDevices::rgb(252 / 255, 126 / 255, 93 / 255), - grDevices::rgb(250 / 255, 106 / 255, 74 / 255), - grDevices::rgb(245 / 255, 84 / 255, 58 / 255), - grDevices::rgb(238 / 255, 58 / 255, 44 / 255), - grDevices::rgb(220 / 255, 43 / 255, 36 / 255), - grDevices::rgb(203 / 255, 24 / 255, 29 / 255), - grDevices::rgb(177 / 255, 12 / 255, 20 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 235 / 255, 225 / 255), - grDevices::rgb(254 / 255, 225 / 255, 211 / 255), - grDevices::rgb(253 / 255, 209 / 255, 190 / 255), - grDevices::rgb(252 / 255, 191 / 255, 167 / 255), - grDevices::rgb(252 / 255, 173 / 255, 145 / 255), - grDevices::rgb(252 / 255, 154 / 255, 123 / 255), - grDevices::rgb(252 / 255, 135 / 255, 103 / 255), - grDevices::rgb(251 / 255, 117 / 255, 84 / 255), - grDevices::rgb(248 / 255, 97 / 255, 67 / 255), - grDevices::rgb(243 / 255, 76 / 255, 53 / 255), - grDevices::rgb(234 / 255, 54 / 255, 41 / 255), - grDevices::rgb(217 / 255, 39 / 255, 34 / 255), - grDevices::rgb(199 / 255, 22 / 255, 27 / 255), - grDevices::rgb(176 / 255, 11 / 255, 20 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 235 / 255, 226 / 255), - grDevices::rgb(254 / 255, 226 / 255, 213 / 255), - grDevices::rgb(253 / 255, 212 / 255, 194 / 255), - grDevices::rgb(253 / 255, 196 / 255, 173 / 255), - grDevices::rgb(252 / 255, 179 / 255, 152 / 255), - grDevices::rgb(252 / 255, 161 / 255, 131 / 255), - grDevices::rgb(252 / 255, 143 / 255, 111 / 255), - grDevices::rgb(252 / 255, 126 / 255, 93 / 255), - grDevices::rgb(251 / 255, 108 / 255, 76 / 255), - grDevices::rgb(246 / 255, 90 / 255, 62 / 255), - grDevices::rgb(241 / 255, 69 / 255, 49 / 255), - grDevices::rgb(229 / 255, 51 / 255, 40 / 255), - grDevices::rgb(214 / 255, 36 / 255, 33 / 255), - grDevices::rgb(196 / 255, 21 / 255, 26 / 255), - grDevices::rgb(174 / 255, 10 / 255, 19 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 236 / 255, 227 / 255), - grDevices::rgb(254 / 255, 227 / 255, 215 / 255), - grDevices::rgb(254 / 255, 215 / 255, 198 / 255), - grDevices::rgb(253 / 255, 200 / 255, 178 / 255), - grDevices::rgb(252 / 255, 184 / 255, 158 / 255), - grDevices::rgb(252 / 255, 167 / 255, 138 / 255), - grDevices::rgb(252 / 255, 150 / 255, 119 / 255), - grDevices::rgb(252 / 255, 134 / 255, 102 / 255), - grDevices::rgb(251 / 255, 118 / 255, 85 / 255), - grDevices::rgb(249 / 255, 101 / 255, 70 / 255), - grDevices::rgb(244 / 255, 83 / 255, 58 / 255), - grDevices::rgb(239 / 255, 62 / 255, 45 / 255), - grDevices::rgb(226 / 255, 47 / 255, 38 / 255), - grDevices::rgb(211 / 255, 33 / 255, 32 / 255), - grDevices::rgb(193 / 255, 20 / 255, 26 / 255), - grDevices::rgb(173 / 255, 9 / 255, 19 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 236 / 255, 228 / 255), - grDevices::rgb(254 / 255, 228 / 255, 216 / 255), - grDevices::rgb(254 / 255, 217 / 255, 201 / 255), - grDevices::rgb(253 / 255, 203 / 255, 182 / 255), - grDevices::rgb(252 / 255, 189 / 255, 163 / 255), - grDevices::rgb(252 / 255, 173 / 255, 145 / 255), - grDevices::rgb(252 / 255, 157 / 255, 126 / 255), - grDevices::rgb(252 / 255, 141 / 255, 109 / 255), - grDevices::rgb(252 / 255, 126 / 255, 93 / 255), - grDevices::rgb(251 / 255, 110 / 255, 78 / 255), - grDevices::rgb(247 / 255, 94 / 255, 65 / 255), - grDevices::rgb(243 / 255, 76 / 255, 53 / 255), - grDevices::rgb(236 / 255, 57 / 255, 43 / 255), - grDevices::rgb(222 / 255, 45 / 255, 37 / 255), - grDevices::rgb(208 / 255, 31 / 255, 31 / 255), - grDevices::rgb(191 / 255, 18 / 255, 25 / 255), - grDevices::rgb(172 / 255, 9 / 255, 19 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), - grDevices::rgb(254 / 255, 237 / 255, 228 / 255), - grDevices::rgb(254 / 255, 229 / 255, 217 / 255), - grDevices::rgb(254 / 255, 220 / 255, 204 / 255), - grDevices::rgb(253 / 255, 206 / 255, 186 / 255), - grDevices::rgb(252 / 255, 192 / 255, 168 / 255), - grDevices::rgb(252 / 255, 178 / 255, 150 / 255), - grDevices::rgb(252 / 255, 163 / 255, 133 / 255), - grDevices::rgb(252 / 255, 148 / 255, 116 / 255), - grDevices::rgb(252 / 255, 133 / 255, 101 / 255), - grDevices::rgb(251 / 255, 119 / 255, 86 / 255), - grDevices::rgb(250 / 255, 103 / 255, 72 / 255), - grDevices::rgb(246 / 255, 88 / 255, 61 / 255), - grDevices::rgb(241 / 255, 70 / 255, 50 / 255), - grDevices::rgb(233 / 255, 54 / 255, 41 / 255), - grDevices::rgb(219 / 255, 42 / 255, 35 / 255), - grDevices::rgb(206 / 255, 28 / 255, 30 / 255), - grDevices::rgb(189 / 255, 17 / 255, 24 / 255), - grDevices::rgb(171 / 255, 8 / 255, 18 / 255), - grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), - "type" = "sequential" - ), - "RdPu" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(253 / 255, 224 / 255, 221 / 255), - grDevices::rgb(197 / 255, 27 / 255, 138 / 255)), - "3" = tibble::lst(grDevices::rgb(253 / 255, 224 / 255, 221 / 255), - grDevices::rgb(250 / 255, 159 / 255, 181 / 255), - grDevices::rgb(197 / 255, 27 / 255, 138 / 255)), - "4" = tibble::lst(grDevices::rgb(254 / 255, 235 / 255, 226 / 255), - grDevices::rgb(251 / 255, 180 / 255, 185 / 255), - grDevices::rgb(247 / 255, 104 / 255, 161 / 255), - grDevices::rgb(174 / 255, 1 / 255, 126 / 255)), - "5" = tibble::lst(grDevices::rgb(254 / 255, 235 / 255, 226 / 255), - grDevices::rgb(251 / 255, 180 / 255, 185 / 255), - grDevices::rgb(247 / 255, 104 / 255, 161 / 255), - grDevices::rgb(197 / 255, 27 / 255, 138 / 255), - grDevices::rgb(122 / 255, 1 / 255, 119 / 255)), - "6" = tibble::lst(grDevices::rgb(254 / 255, 235 / 255, 226 / 255), - grDevices::rgb(252 / 255, 197 / 255, 192 / 255), - grDevices::rgb(250 / 255, 159 / 255, 181 / 255), - grDevices::rgb(247 / 255, 104 / 255, 161 / 255), - grDevices::rgb(197 / 255, 27 / 255, 138 / 255), - grDevices::rgb(122 / 255, 1 / 255, 119 / 255)), - "7" = tibble::lst(grDevices::rgb(254 / 255, 235 / 255, 226 / 255), - grDevices::rgb(252 / 255, 197 / 255, 192 / 255), - grDevices::rgb(250 / 255, 159 / 255, 181 / 255), - grDevices::rgb(247 / 255, 104 / 255, 161 / 255), - grDevices::rgb(221 / 255, 52 / 255, 151 / 255), - grDevices::rgb(174 / 255, 1 / 255, 126 / 255), - grDevices::rgb(122 / 255, 1 / 255, 119 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 243 / 255), - grDevices::rgb(253 / 255, 224 / 255, 221 / 255), - grDevices::rgb(252 / 255, 197 / 255, 192 / 255), - grDevices::rgb(250 / 255, 159 / 255, 181 / 255), - grDevices::rgb(247 / 255, 104 / 255, 161 / 255), - grDevices::rgb(221 / 255, 52 / 255, 151 / 255), - grDevices::rgb(174 / 255, 1 / 255, 126 / 255), - grDevices::rgb(122 / 255, 1 / 255, 119 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 243 / 255), - grDevices::rgb(253 / 255, 224 / 255, 221 / 255), - grDevices::rgb(252 / 255, 197 / 255, 192 / 255), - grDevices::rgb(250 / 255, 159 / 255, 181 / 255), - grDevices::rgb(247 / 255, 104 / 255, 161 / 255), - grDevices::rgb(221 / 255, 52 / 255, 151 / 255), - grDevices::rgb(174 / 255, 1 / 255, 126 / 255), - grDevices::rgb(122 / 255, 1 / 255, 119 / 255), - grDevices::rgb(73 / 255, 0 / 255, 106 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(253 / 255, 229 / 255, 225 / 255), - grDevices::rgb(252 / 255, 209 / 255, 204 / 255), - grDevices::rgb(251 / 255, 184 / 255, 188 / 255), - grDevices::rgb(249 / 255, 153 / 255, 178 / 255), - grDevices::rgb(247 / 255, 110 / 255, 163 / 255), - grDevices::rgb(229 / 255, 71 / 255, 154 / 255), - grDevices::rgb(199 / 255, 34 / 255, 139 / 255), - grDevices::rgb(162 / 255, 0 / 255, 124 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(253 / 255, 230 / 255, 227 / 255), - grDevices::rgb(252 / 255, 213 / 255, 209 / 255), - grDevices::rgb(251 / 255, 193 / 255, 190 / 255), - grDevices::rgb(250 / 255, 166 / 255, 183 / 255), - grDevices::rgb(249 / 255, 132 / 255, 170 / 255), - grDevices::rgb(241 / 255, 94 / 255, 159 / 255), - grDevices::rgb(223 / 255, 58 / 255, 152 / 255), - grDevices::rgb(192 / 255, 27 / 255, 135 / 255), - grDevices::rgb(158 / 255, 0 / 255, 123 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(253 / 255, 232 / 255, 228 / 255), - grDevices::rgb(252 / 255, 216 / 255, 213 / 255), - grDevices::rgb(252 / 255, 199 / 255, 194 / 255), - grDevices::rgb(251 / 255, 176 / 255, 186 / 255), - grDevices::rgb(249 / 255, 149 / 255, 177 / 255), - grDevices::rgb(247 / 255, 114 / 255, 164 / 255), - grDevices::rgb(235 / 255, 82 / 255, 156 / 255), - grDevices::rgb(216 / 255, 48 / 255, 148 / 255), - grDevices::rgb(186 / 255, 20 / 255, 132 / 255), - grDevices::rgb(155 / 255, 0 / 255, 123 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(253 / 255, 233 / 255, 230 / 255), - grDevices::rgb(252 / 255, 219 / 255, 216 / 255), - grDevices::rgb(252 / 255, 203 / 255, 199 / 255), - grDevices::rgb(251 / 255, 184 / 255, 188 / 255), - grDevices::rgb(250 / 255, 162 / 255, 181 / 255), - grDevices::rgb(249 / 255, 132 / 255, 170 / 255), - grDevices::rgb(244 / 255, 100 / 255, 160 / 255), - grDevices::rgb(229 / 255, 71 / 255, 154 / 255), - grDevices::rgb(209 / 255, 42 / 255, 144 / 255), - grDevices::rgb(181 / 255, 14 / 255, 130 / 255), - grDevices::rgb(152 / 255, 0 / 255, 123 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(254 / 255, 234 / 255, 231 / 255), - grDevices::rgb(253 / 255, 221 / 255, 218 / 255), - grDevices::rgb(252 / 255, 207 / 255, 203 / 255), - grDevices::rgb(251 / 255, 191 / 255, 190 / 255), - grDevices::rgb(250 / 255, 170 / 255, 184 / 255), - grDevices::rgb(249 / 255, 147 / 255, 176 / 255), - grDevices::rgb(248 / 255, 117 / 255, 165 / 255), - grDevices::rgb(239 / 255, 89 / 255, 157 / 255), - grDevices::rgb(225 / 255, 61 / 255, 152 / 255), - grDevices::rgb(202 / 255, 36 / 255, 141 / 255), - grDevices::rgb(177 / 255, 6 / 255, 127 / 255), - grDevices::rgb(150 / 255, 0 / 255, 122 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(254 / 255, 235 / 255, 231 / 255), - grDevices::rgb(253 / 255, 223 / 255, 221 / 255), - grDevices::rgb(252 / 255, 210 / 255, 206 / 255), - grDevices::rgb(252 / 255, 197 / 255, 191 / 255), - grDevices::rgb(251 / 255, 178 / 255, 186 / 255), - grDevices::rgb(249 / 255, 159 / 255, 180 / 255), - grDevices::rgb(249 / 255, 132 / 255, 170 / 255), - grDevices::rgb(247 / 255, 103 / 255, 160 / 255), - grDevices::rgb(234 / 255, 80 / 255, 156 / 255), - grDevices::rgb(221 / 255, 51 / 255, 151 / 255), - grDevices::rgb(197 / 255, 31 / 255, 138 / 255), - grDevices::rgb(173 / 255, 0 / 255, 126 / 255), - grDevices::rgb(148 / 255, 0 / 255, 122 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(254 / 255, 236 / 255, 232 / 255), - grDevices::rgb(253 / 255, 225 / 255, 222 / 255), - grDevices::rgb(252 / 255, 213 / 255, 209 / 255), - grDevices::rgb(252 / 255, 200 / 255, 195 / 255), - grDevices::rgb(251 / 255, 184 / 255, 188 / 255), - grDevices::rgb(250 / 255, 166 / 255, 183 / 255), - grDevices::rgb(249 / 255, 145 / 255, 175 / 255), - grDevices::rgb(248 / 255, 119 / 255, 166 / 255), - grDevices::rgb(241 / 255, 94 / 255, 159 / 255), - grDevices::rgb(229 / 255, 71 / 255, 154 / 255), - grDevices::rgb(214 / 255, 46 / 255, 147 / 255), - grDevices::rgb(192 / 255, 27 / 255, 135 / 255), - grDevices::rgb(170 / 255, 0 / 255, 125 / 255), - grDevices::rgb(146 / 255, 0 / 255, 122 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(254 / 255, 236 / 255, 233 / 255), - grDevices::rgb(253 / 255, 226 / 255, 223 / 255), - grDevices::rgb(252 / 255, 215 / 255, 211 / 255), - grDevices::rgb(252 / 255, 203 / 255, 199 / 255), - grDevices::rgb(251 / 255, 190 / 255, 189 / 255), - grDevices::rgb(251 / 255, 173 / 255, 185 / 255), - grDevices::rgb(249 / 255, 155 / 255, 179 / 255), - grDevices::rgb(249 / 255, 132 / 255, 170 / 255), - grDevices::rgb(247 / 255, 107 / 255, 162 / 255), - grDevices::rgb(237 / 255, 86 / 255, 157 / 255), - grDevices::rgb(225 / 255, 63 / 255, 152 / 255), - grDevices::rgb(209 / 255, 42 / 255, 144 / 255), - grDevices::rgb(188 / 255, 22 / 255, 133 / 255), - grDevices::rgb(167 / 255, 0 / 255, 125 / 255), - grDevices::rgb(144 / 255, 0 / 255, 122 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(254 / 255, 237 / 255, 233 / 255), - grDevices::rgb(253 / 255, 228 / 255, 224 / 255), - grDevices::rgb(252 / 255, 217 / 255, 214 / 255), - grDevices::rgb(252 / 255, 206 / 255, 202 / 255), - grDevices::rgb(251 / 255, 194 / 255, 191 / 255), - grDevices::rgb(251 / 255, 179 / 255, 186 / 255), - grDevices::rgb(250 / 255, 163 / 255, 182 / 255), - grDevices::rgb(249 / 255, 143 / 255, 175 / 255), - grDevices::rgb(248 / 255, 121 / 255, 166 / 255), - grDevices::rgb(243 / 255, 98 / 255, 159 / 255), - grDevices::rgb(233 / 255, 78 / 255, 155 / 255), - grDevices::rgb(222 / 255, 55 / 255, 151 / 255), - grDevices::rgb(204 / 255, 38 / 255, 142 / 255), - grDevices::rgb(184 / 255, 18 / 255, 131 / 255), - grDevices::rgb(164 / 255, 0 / 255, 124 / 255), - grDevices::rgb(143 / 255, 0 / 255, 121 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(254 / 255, 238 / 255, 234 / 255), - grDevices::rgb(253 / 255, 229 / 255, 225 / 255), - grDevices::rgb(252 / 255, 219 / 255, 216 / 255), - grDevices::rgb(252 / 255, 209 / 255, 204 / 255), - grDevices::rgb(252 / 255, 198 / 255, 193 / 255), - grDevices::rgb(251 / 255, 184 / 255, 188 / 255), - grDevices::rgb(250 / 255, 169 / 255, 184 / 255), - grDevices::rgb(249 / 255, 153 / 255, 178 / 255), - grDevices::rgb(249 / 255, 132 / 255, 170 / 255), - grDevices::rgb(247 / 255, 110 / 255, 163 / 255), - grDevices::rgb(239 / 255, 91 / 255, 158 / 255), - grDevices::rgb(229 / 255, 71 / 255, 154 / 255), - grDevices::rgb(218 / 255, 49 / 255, 149 / 255), - grDevices::rgb(199 / 255, 34 / 255, 139 / 255), - grDevices::rgb(181 / 255, 14 / 255, 130 / 255), - grDevices::rgb(162 / 255, 0 / 255, 124 / 255), - grDevices::rgb(142 / 255, 0 / 255, 121 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), - grDevices::rgb(254 / 255, 238 / 255, 234 / 255), - grDevices::rgb(253 / 255, 230 / 255, 226 / 255), - grDevices::rgb(253 / 255, 221 / 255, 217 / 255), - grDevices::rgb(252 / 255, 211 / 255, 207 / 255), - grDevices::rgb(252 / 255, 201 / 255, 196 / 255), - grDevices::rgb(251 / 255, 189 / 255, 189 / 255), - grDevices::rgb(251 / 255, 175 / 255, 185 / 255), - grDevices::rgb(250 / 255, 161 / 255, 181 / 255), - grDevices::rgb(249 / 255, 142 / 255, 174 / 255), - grDevices::rgb(248 / 255, 122 / 255, 167 / 255), - grDevices::rgb(245 / 255, 101 / 255, 160 / 255), - grDevices::rgb(236 / 255, 84 / 255, 156 / 255), - grDevices::rgb(226 / 255, 64 / 255, 153 / 255), - grDevices::rgb(213 / 255, 46 / 255, 147 / 255), - grDevices::rgb(196 / 255, 30 / 255, 137 / 255), - grDevices::rgb(178 / 255, 9 / 255, 128 / 255), - grDevices::rgb(160 / 255, 0 / 255, 124 / 255), - grDevices::rgb(141 / 255, 0 / 255, 121 / 255), - grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), - "type" = "sequential" - ), - "Greens" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(229 / 255, 245 / 255, 224 / 255), - grDevices::rgb(49 / 255, 163 / 255, 84 / 255)), - "3" = tibble::lst(grDevices::rgb(229 / 255, 245 / 255, 224 / 255), - grDevices::rgb(161 / 255, 217 / 255, 155 / 255), - grDevices::rgb(49 / 255, 163 / 255, 84 / 255)), - "4" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 233 / 255), - grDevices::rgb(186 / 255, 228 / 255, 179 / 255), - grDevices::rgb(116 / 255, 196 / 255, 118 / 255), - grDevices::rgb(35 / 255, 139 / 255, 69 / 255)), - "5" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 233 / 255), - grDevices::rgb(186 / 255, 228 / 255, 179 / 255), - grDevices::rgb(116 / 255, 196 / 255, 118 / 255), - grDevices::rgb(49 / 255, 163 / 255, 84 / 255), - grDevices::rgb(0 / 255, 109 / 255, 44 / 255)), - "6" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 233 / 255), - grDevices::rgb(199 / 255, 233 / 255, 192 / 255), - grDevices::rgb(161 / 255, 217 / 255, 155 / 255), - grDevices::rgb(116 / 255, 196 / 255, 118 / 255), - grDevices::rgb(49 / 255, 163 / 255, 84 / 255), - grDevices::rgb(0 / 255, 109 / 255, 44 / 255)), - "7" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 233 / 255), - grDevices::rgb(199 / 255, 233 / 255, 192 / 255), - grDevices::rgb(161 / 255, 217 / 255, 155 / 255), - grDevices::rgb(116 / 255, 196 / 255, 118 / 255), - grDevices::rgb(65 / 255, 171 / 255, 93 / 255), - grDevices::rgb(35 / 255, 139 / 255, 69 / 255), - grDevices::rgb(0 / 255, 90 / 255, 50 / 255)), - "8" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 245 / 255), - grDevices::rgb(229 / 255, 245 / 255, 224 / 255), - grDevices::rgb(199 / 255, 233 / 255, 192 / 255), - grDevices::rgb(161 / 255, 217 / 255, 155 / 255), - grDevices::rgb(116 / 255, 196 / 255, 118 / 255), - grDevices::rgb(65 / 255, 171 / 255, 93 / 255), - grDevices::rgb(35 / 255, 139 / 255, 69 / 255), - grDevices::rgb(0 / 255, 90 / 255, 50 / 255)), - "9" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 245 / 255), - grDevices::rgb(229 / 255, 245 / 255, 224 / 255), - grDevices::rgb(199 / 255, 233 / 255, 192 / 255), - grDevices::rgb(161 / 255, 217 / 255, 155 / 255), - grDevices::rgb(116 / 255, 196 / 255, 118 / 255), - grDevices::rgb(65 / 255, 171 / 255, 93 / 255), - grDevices::rgb(35 / 255, 139 / 255, 69 / 255), - grDevices::rgb(0 / 255, 109 / 255, 44 / 255), - grDevices::rgb(0 / 255, 68 / 255, 27 / 255)), - "10" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(233 / 255, 246 / 255, 228 / 255), - grDevices::rgb(212 / 255, 238 / 255, 206 / 255), - grDevices::rgb(186 / 255, 227 / 255, 179 / 255), - grDevices::rgb(156 / 255, 214 / 255, 150 / 255), - grDevices::rgb(121 / 255, 198 / 255, 122 / 255), - grDevices::rgb(83 / 255, 179 / 255, 101 / 255), - grDevices::rgb(52 / 255, 156 / 255, 82 / 255), - grDevices::rgb(28 / 255, 127 / 255, 64 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "11" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(234 / 255, 247 / 255, 230 / 255), - grDevices::rgb(217 / 255, 240 / 255, 211 / 255), - grDevices::rgb(195 / 255, 231 / 255, 188 / 255), - grDevices::rgb(168 / 255, 220 / 255, 162 / 255), - grDevices::rgb(138 / 255, 206 / 255, 136 / 255), - grDevices::rgb(106 / 255, 190 / 255, 112 / 255), - grDevices::rgb(70 / 255, 173 / 255, 95 / 255), - grDevices::rgb(47 / 255, 151 / 255, 78 / 255), - grDevices::rgb(25 / 255, 123 / 255, 63 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "12" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(235 / 255, 247 / 255, 231 / 255), - grDevices::rgb(220 / 255, 241 / 255, 215 / 255), - grDevices::rgb(201 / 255, 234 / 255, 194 / 255), - grDevices::rgb(178 / 255, 224 / 255, 171 / 255), - grDevices::rgb(153 / 255, 213 / 255, 148 / 255), - grDevices::rgb(124 / 255, 199 / 255, 124 / 255), - grDevices::rgb(94 / 255, 184 / 255, 106 / 255), - grDevices::rgb(62 / 255, 168 / 255, 90 / 255), - grDevices::rgb(43 / 255, 147 / 255, 75 / 255), - grDevices::rgb(23 / 255, 120 / 255, 62 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "13" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(236 / 255, 247 / 255, 232 / 255), - grDevices::rgb(224 / 255, 243 / 255, 218 / 255), - grDevices::rgb(206 / 255, 236 / 255, 199 / 255), - grDevices::rgb(186 / 255, 227 / 255, 179 / 255), - grDevices::rgb(164 / 255, 218 / 255, 158 / 255), - grDevices::rgb(138 / 255, 206 / 255, 136 / 255), - grDevices::rgb(112 / 255, 193 / 255, 115 / 255), - grDevices::rgb(83 / 255, 179 / 255, 101 / 255), - grDevices::rgb(57 / 255, 162 / 255, 86 / 255), - grDevices::rgb(40 / 255, 144 / 255, 72 / 255), - grDevices::rgb(21 / 255, 118 / 255, 61 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "14" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(237 / 255, 248 / 255, 233 / 255), - grDevices::rgb(226 / 255, 244 / 255, 221 / 255), - grDevices::rgb(210 / 255, 237 / 255, 204 / 255), - grDevices::rgb(193 / 255, 230 / 255, 186 / 255), - grDevices::rgb(172 / 255, 221 / 255, 166 / 255), - grDevices::rgb(150 / 255, 212 / 255, 146 / 255), - grDevices::rgb(126 / 255, 200 / 255, 126 / 255), - grDevices::rgb(101 / 255, 188 / 255, 110 / 255), - grDevices::rgb(73 / 255, 174 / 255, 96 / 255), - grDevices::rgb(53 / 255, 158 / 255, 83 / 255), - grDevices::rgb(37 / 255, 141 / 255, 70 / 255), - grDevices::rgb(20 / 255, 115 / 255, 60 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "15" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(238 / 255, 248 / 255, 234 / 255), - grDevices::rgb(229 / 255, 244 / 255, 223 / 255), - grDevices::rgb(214 / 255, 239 / 255, 207 / 255), - grDevices::rgb(198 / 255, 233 / 255, 191 / 255), - grDevices::rgb(180 / 255, 225 / 255, 173 / 255), - grDevices::rgb(160 / 255, 216 / 255, 154 / 255), - grDevices::rgb(138 / 255, 206 / 255, 136 / 255), - grDevices::rgb(115 / 255, 196 / 255, 118 / 255), - grDevices::rgb(91 / 255, 183 / 255, 105 / 255), - grDevices::rgb(64 / 255, 171 / 255, 93 / 255), - grDevices::rgb(50 / 255, 154 / 255, 80 / 255), - grDevices::rgb(34 / 255, 139 / 255, 69 / 255), - grDevices::rgb(18 / 255, 114 / 255, 59 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "16" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(238 / 255, 248 / 255, 235 / 255), - grDevices::rgb(230 / 255, 245 / 255, 225 / 255), - grDevices::rgb(217 / 255, 240 / 255, 211 / 255), - grDevices::rgb(203 / 255, 234 / 255, 196 / 255), - grDevices::rgb(186 / 255, 227 / 255, 179 / 255), - grDevices::rgb(168 / 255, 220 / 255, 162 / 255), - grDevices::rgb(149 / 255, 211 / 255, 145 / 255), - grDevices::rgb(128 / 255, 201 / 255, 127 / 255), - grDevices::rgb(106 / 255, 190 / 255, 112 / 255), - grDevices::rgb(83 / 255, 179 / 255, 101 / 255), - grDevices::rgb(61 / 255, 166 / 255, 89 / 255), - grDevices::rgb(47 / 255, 151 / 255, 78 / 255), - grDevices::rgb(32 / 255, 135 / 255, 67 / 255), - grDevices::rgb(17 / 255, 112 / 255, 58 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "17" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(239 / 255, 248 / 255, 235 / 255), - grDevices::rgb(231 / 255, 245 / 255, 226 / 255), - grDevices::rgb(219 / 255, 241 / 255, 213 / 255), - grDevices::rgb(206 / 255, 236 / 255, 199 / 255), - grDevices::rgb(191 / 255, 230 / 255, 185 / 255), - grDevices::rgb(175 / 255, 223 / 255, 168 / 255), - grDevices::rgb(158 / 255, 215 / 255, 152 / 255), - grDevices::rgb(138 / 255, 206 / 255, 136 / 255), - grDevices::rgb(118 / 255, 197 / 255, 120 / 255), - grDevices::rgb(98 / 255, 186 / 255, 108 / 255), - grDevices::rgb(75 / 255, 175 / 255, 97 / 255), - grDevices::rgb(57 / 255, 162 / 255, 86 / 255), - grDevices::rgb(44 / 255, 148 / 255, 76 / 255), - grDevices::rgb(31 / 255, 132 / 255, 66 / 255), - grDevices::rgb(16 / 255, 110 / 255, 58 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "18" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(239 / 255, 249 / 255, 236 / 255), - grDevices::rgb(232 / 255, 246 / 255, 227 / 255), - grDevices::rgb(221 / 255, 242 / 255, 216 / 255), - grDevices::rgb(209 / 255, 237 / 255, 203 / 255), - grDevices::rgb(196 / 255, 232 / 255, 189 / 255), - grDevices::rgb(181 / 255, 225 / 255, 174 / 255), - grDevices::rgb(165 / 255, 218 / 255, 159 / 255), - grDevices::rgb(148 / 255, 210 / 255, 144 / 255), - grDevices::rgb(129 / 255, 202 / 255, 128 / 255), - grDevices::rgb(110 / 255, 193 / 255, 115 / 255), - grDevices::rgb(90 / 255, 182 / 255, 104 / 255), - grDevices::rgb(68 / 255, 172 / 255, 94 / 255), - grDevices::rgb(54 / 255, 159 / 255, 84 / 255), - grDevices::rgb(42 / 255, 146 / 255, 74 / 255), - grDevices::rgb(29 / 255, 130 / 255, 65 / 255), - grDevices::rgb(15 / 255, 109 / 255, 57 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "19" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(240 / 255, 249 / 255, 236 / 255), - grDevices::rgb(233 / 255, 246 / 255, 228 / 255), - grDevices::rgb(224 / 255, 243 / 255, 218 / 255), - grDevices::rgb(212 / 255, 238 / 255, 206 / 255), - grDevices::rgb(200 / 255, 233 / 255, 193 / 255), - grDevices::rgb(186 / 255, 227 / 255, 179 / 255), - grDevices::rgb(171 / 255, 221 / 255, 165 / 255), - grDevices::rgb(156 / 255, 214 / 255, 150 / 255), - grDevices::rgb(138 / 255, 206 / 255, 136 / 255), - grDevices::rgb(121 / 255, 198 / 255, 122 / 255), - grDevices::rgb(102 / 255, 189 / 255, 110 / 255), - grDevices::rgb(83 / 255, 179 / 255, 101 / 255), - grDevices::rgb(63 / 255, 169 / 255, 91 / 255), - grDevices::rgb(52 / 255, 156 / 255, 82 / 255), - grDevices::rgb(40 / 255, 144 / 255, 72 / 255), - grDevices::rgb(28 / 255, 127 / 255, 64 / 255), - grDevices::rgb(14 / 255, 108 / 255, 57 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "20" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), - grDevices::rgb(240 / 255, 249 / 255, 237 / 255), - grDevices::rgb(233 / 255, 246 / 255, 229 / 255), - grDevices::rgb(225 / 255, 243 / 255, 220 / 255), - grDevices::rgb(214 / 255, 239 / 255, 208 / 255), - grDevices::rgb(203 / 255, 234 / 255, 197 / 255), - grDevices::rgb(191 / 255, 229 / 255, 184 / 255), - grDevices::rgb(177 / 255, 223 / 255, 170 / 255), - grDevices::rgb(163 / 255, 217 / 255, 156 / 255), - grDevices::rgb(147 / 255, 210 / 255, 143 / 255), - grDevices::rgb(130 / 255, 202 / 255, 129 / 255), - grDevices::rgb(113 / 255, 194 / 255, 116 / 255), - grDevices::rgb(95 / 255, 185 / 255, 107 / 255), - grDevices::rgb(76 / 255, 176 / 255, 98 / 255), - grDevices::rgb(60 / 255, 165 / 255, 89 / 255), - grDevices::rgb(49 / 255, 154 / 255, 80 / 255), - grDevices::rgb(38 / 255, 142 / 255, 71 / 255), - grDevices::rgb(26 / 255, 125 / 255, 63 / 255), - grDevices::rgb(13 / 255, 107 / 255, 56 / 255), - grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), - "type" = "sequential" - ), - "YlGnBu" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 177 / 255), - grDevices::rgb(44 / 255, 127 / 255, 184 / 255)), - "3" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 177 / 255), - grDevices::rgb(127 / 255, 205 / 255, 187 / 255), - grDevices::rgb(44 / 255, 127 / 255, 184 / 255)), - "4" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(161 / 255, 218 / 255, 180 / 255), - grDevices::rgb(65 / 255, 182 / 255, 196 / 255), - grDevices::rgb(34 / 255, 94 / 255, 168 / 255)), - "5" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(161 / 255, 218 / 255, 180 / 255), - grDevices::rgb(65 / 255, 182 / 255, 196 / 255), - grDevices::rgb(44 / 255, 127 / 255, 184 / 255), - grDevices::rgb(37 / 255, 52 / 255, 148 / 255)), - "6" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(199 / 255, 233 / 255, 180 / 255), - grDevices::rgb(127 / 255, 205 / 255, 187 / 255), - grDevices::rgb(65 / 255, 182 / 255, 196 / 255), - grDevices::rgb(44 / 255, 127 / 255, 184 / 255), - grDevices::rgb(37 / 255, 52 / 255, 148 / 255)), - "7" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(199 / 255, 233 / 255, 180 / 255), - grDevices::rgb(127 / 255, 205 / 255, 187 / 255), - grDevices::rgb(65 / 255, 182 / 255, 196 / 255), - grDevices::rgb(29 / 255, 145 / 255, 192 / 255), - grDevices::rgb(34 / 255, 94 / 255, 168 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 217 / 255), - grDevices::rgb(237 / 255, 248 / 255, 177 / 255), - grDevices::rgb(199 / 255, 233 / 255, 180 / 255), - grDevices::rgb(127 / 255, 205 / 255, 187 / 255), - grDevices::rgb(65 / 255, 182 / 255, 196 / 255), - grDevices::rgb(29 / 255, 145 / 255, 192 / 255), - grDevices::rgb(34 / 255, 94 / 255, 168 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 217 / 255), - grDevices::rgb(237 / 255, 248 / 255, 177 / 255), - grDevices::rgb(199 / 255, 233 / 255, 180 / 255), - grDevices::rgb(127 / 255, 205 / 255, 187 / 255), - grDevices::rgb(65 / 255, 182 / 255, 196 / 255), - grDevices::rgb(29 / 255, 145 / 255, 192 / 255), - grDevices::rgb(34 / 255, 94 / 255, 168 / 255), - grDevices::rgb(37 / 255, 52 / 255, 148 / 255), - grDevices::rgb(8 / 255, 29 / 255, 88 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(241 / 255, 249 / 255, 185 / 255), - grDevices::rgb(216 / 255, 239 / 255, 178 / 255), - grDevices::rgb(176 / 255, 223 / 255, 182 / 255), - grDevices::rgb(121 / 255, 202 / 255, 188 / 255), - grDevices::rgb(74 / 255, 184 / 255, 195 / 255), - grDevices::rgb(44 / 255, 157 / 255, 193 / 255), - grDevices::rgb(34 / 255, 122 / 255, 181 / 255), - grDevices::rgb(31 / 255, 82 / 255, 159 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(242 / 255, 250 / 255, 189 / 255), - grDevices::rgb(222 / 255, 242 / 255, 178 / 255), - grDevices::rgb(192 / 255, 230 / 255, 180 / 255), - grDevices::rgb(142 / 255, 210 / 255, 185 / 255), - grDevices::rgb(100 / 255, 193 / 255, 191 / 255), - grDevices::rgb(59 / 255, 174 / 255, 195 / 255), - grDevices::rgb(34 / 255, 148 / 255, 192 / 255), - grDevices::rgb(35 / 255, 114 / 255, 177 / 255), - grDevices::rgb(29 / 255, 78 / 255, 157 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(243 / 255, 250 / 255, 191 / 255), - grDevices::rgb(226 / 255, 243 / 255, 177 / 255), - grDevices::rgb(202 / 255, 234 / 255, 179 / 255), - grDevices::rgb(161 / 255, 217 / 255, 184 / 255), - grDevices::rgb(117 / 255, 200 / 255, 188 / 255), - grDevices::rgb(79 / 255, 186 / 255, 194 / 255), - grDevices::rgb(52 / 255, 164 / 255, 194 / 255), - grDevices::rgb(30 / 255, 140 / 255, 189 / 255), - grDevices::rgb(35 / 255, 107 / 255, 174 / 255), - grDevices::rgb(28 / 255, 75 / 255, 154 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(244 / 255, 250 / 255, 193 / 255), - grDevices::rgb(230 / 255, 245 / 255, 177 / 255), - grDevices::rgb(208 / 255, 236 / 255, 179 / 255), - grDevices::rgb(176 / 255, 223 / 255, 182 / 255), - grDevices::rgb(133 / 255, 207 / 255, 186 / 255), - grDevices::rgb(100 / 255, 193 / 255, 191 / 255), - grDevices::rgb(62 / 255, 178 / 255, 195 / 255), - grDevices::rgb(44 / 255, 157 / 255, 193 / 255), - grDevices::rgb(33 / 255, 132 / 255, 186 / 255), - grDevices::rgb(34 / 255, 102 / 255, 172 / 255), - grDevices::rgb(27 / 255, 72 / 255, 152 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(245 / 255, 251 / 255, 195 / 255), - grDevices::rgb(234 / 255, 246 / 255, 177 / 255), - grDevices::rgb(213 / 255, 238 / 255, 178 / 255), - grDevices::rgb(188 / 255, 228 / 255, 181 / 255), - grDevices::rgb(151 / 255, 213 / 255, 185 / 255), - grDevices::rgb(115 / 255, 199 / 255, 189 / 255), - grDevices::rgb(83 / 255, 187 / 255, 194 / 255), - grDevices::rgb(56 / 255, 170 / 255, 194 / 255), - grDevices::rgb(37 / 255, 150 / 255, 192 / 255), - grDevices::rgb(34 / 255, 125 / 255, 182 / 255), - grDevices::rgb(34 / 255, 97 / 255, 169 / 255), - grDevices::rgb(26 / 255, 70 / 255, 151 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(246 / 255, 251 / 255, 197 / 255), - grDevices::rgb(236 / 255, 248 / 255, 177 / 255), - grDevices::rgb(218 / 255, 240 / 255, 178 / 255), - grDevices::rgb(198 / 255, 233 / 255, 179 / 255), - grDevices::rgb(165 / 255, 218 / 255, 183 / 255), - grDevices::rgb(127 / 255, 204 / 255, 186 / 255), - grDevices::rgb(100 / 255, 193 / 255, 191 / 255), - grDevices::rgb(64 / 255, 182 / 255, 196 / 255), - grDevices::rgb(50 / 255, 163 / 255, 194 / 255), - grDevices::rgb(29 / 255, 145 / 255, 191 / 255), - grDevices::rgb(35 / 255, 119 / 255, 180 / 255), - grDevices::rgb(33 / 255, 94 / 255, 167 / 255), - grDevices::rgb(26 / 255, 68 / 255, 149 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(246 / 255, 251 / 255, 198 / 255), - grDevices::rgb(238 / 255, 248 / 255, 179 / 255), - grDevices::rgb(222 / 255, 242 / 255, 178 / 255), - grDevices::rgb(204 / 255, 235 / 255, 179 / 255), - grDevices::rgb(176 / 255, 223 / 255, 182 / 255), - grDevices::rgb(142 / 255, 210 / 255, 185 / 255), - grDevices::rgb(113 / 255, 198 / 255, 189 / 255), - grDevices::rgb(85 / 255, 188 / 255, 193 / 255), - grDevices::rgb(59 / 255, 174 / 255, 195 / 255), - grDevices::rgb(44 / 255, 157 / 255, 193 / 255), - grDevices::rgb(31 / 255, 138 / 255, 188 / 255), - grDevices::rgb(35 / 255, 114 / 255, 177 / 255), - grDevices::rgb(33 / 255, 90 / 255, 165 / 255), - grDevices::rgb(25 / 255, 67 / 255, 148 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(247 / 255, 251 / 255, 199 / 255), - grDevices::rgb(239 / 255, 248 / 255, 182 / 255), - grDevices::rgb(225 / 255, 243 / 255, 177 / 255), - grDevices::rgb(208 / 255, 236 / 255, 179 / 255), - grDevices::rgb(186 / 255, 227 / 255, 181 / 255), - grDevices::rgb(156 / 255, 215 / 255, 184 / 255), - grDevices::rgb(123 / 255, 203 / 255, 187 / 255), - grDevices::rgb(100 / 255, 193 / 255, 191 / 255), - grDevices::rgb(70 / 255, 183 / 255, 195 / 255), - grDevices::rgb(54 / 255, 167 / 255, 194 / 255), - grDevices::rgb(38 / 255, 151 / 255, 192 / 255), - grDevices::rgb(33 / 255, 132 / 255, 186 / 255), - grDevices::rgb(35 / 255, 109 / 255, 175 / 255), - grDevices::rgb(32 / 255, 87 / 255, 163 / 255), - grDevices::rgb(24 / 255, 65 / 255, 147 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(247 / 255, 252 / 255, 200 / 255), - grDevices::rgb(240 / 255, 249 / 255, 184 / 255), - grDevices::rgb(228 / 255, 244 / 255, 177 / 255), - grDevices::rgb(212 / 255, 238 / 255, 178 / 255), - grDevices::rgb(195 / 255, 231 / 255, 180 / 255), - grDevices::rgb(167 / 255, 219 / 255, 183 / 255), - grDevices::rgb(136 / 255, 208 / 255, 186 / 255), - grDevices::rgb(111 / 255, 198 / 255, 189 / 255), - grDevices::rgb(87 / 255, 188 / 255, 193 / 255), - grDevices::rgb(61 / 255, 177 / 255, 195 / 255), - grDevices::rgb(49 / 255, 162 / 255, 193 / 255), - grDevices::rgb(32 / 255, 147 / 255, 192 / 255), - grDevices::rgb(34 / 255, 126 / 255, 183 / 255), - grDevices::rgb(35 / 255, 105 / 255, 173 / 255), - grDevices::rgb(31 / 255, 85 / 255, 161 / 255), - grDevices::rgb(24 / 255, 64 / 255, 146 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(248 / 255, 252 / 255, 201 / 255), - grDevices::rgb(241 / 255, 249 / 255, 185 / 255), - grDevices::rgb(230 / 255, 245 / 255, 177 / 255), - grDevices::rgb(216 / 255, 239 / 255, 178 / 255), - grDevices::rgb(201 / 255, 233 / 255, 179 / 255), - grDevices::rgb(176 / 255, 223 / 255, 182 / 255), - grDevices::rgb(148 / 255, 212 / 255, 185 / 255), - grDevices::rgb(121 / 255, 202 / 255, 188 / 255), - grDevices::rgb(100 / 255, 193 / 255, 191 / 255), - grDevices::rgb(74 / 255, 184 / 255, 195 / 255), - grDevices::rgb(57 / 255, 171 / 255, 194 / 255), - grDevices::rgb(44 / 255, 157 / 255, 193 / 255), - grDevices::rgb(30 / 255, 142 / 255, 190 / 255), - grDevices::rgb(34 / 255, 122 / 255, 181 / 255), - grDevices::rgb(34 / 255, 102 / 255, 172 / 255), - grDevices::rgb(31 / 255, 82 / 255, 159 / 255), - grDevices::rgb(23 / 255, 63 / 255, 145 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), - grDevices::rgb(248 / 255, 252 / 255, 202 / 255), - grDevices::rgb(241 / 255, 249 / 255, 187 / 255), - grDevices::rgb(233 / 255, 246 / 255, 177 / 255), - grDevices::rgb(219 / 255, 240 / 255, 178 / 255), - grDevices::rgb(205 / 255, 235 / 255, 179 / 255), - grDevices::rgb(185 / 255, 227 / 255, 181 / 255), - grDevices::rgb(159 / 255, 216 / 255, 184 / 255), - grDevices::rgb(131 / 255, 206 / 255, 186 / 255), - grDevices::rgb(110 / 255, 197 / 255, 189 / 255), - grDevices::rgb(88 / 255, 189 / 255, 193 / 255), - grDevices::rgb(63 / 255, 180 / 255, 195 / 255), - grDevices::rgb(53 / 255, 166 / 255, 194 / 255), - grDevices::rgb(39 / 255, 152 / 255, 192 / 255), - grDevices::rgb(31 / 255, 136 / 255, 188 / 255), - grDevices::rgb(35 / 255, 117 / 255, 179 / 255), - grDevices::rgb(34 / 255, 99 / 255, 170 / 255), - grDevices::rgb(30 / 255, 80 / 255, 158 / 255), - grDevices::rgb(23 / 255, 62 / 255, 145 / 255), - grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), - "type" = "sequential" - ), - "Purples" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(239 / 255, 237 / 255, 245 / 255), - grDevices::rgb(117 / 255, 107 / 255, 177 / 255)), - "3" = tibble::lst(grDevices::rgb(239 / 255, 237 / 255, 245 / 255), - grDevices::rgb(188 / 255, 189 / 255, 220 / 255), - grDevices::rgb(117 / 255, 107 / 255, 177 / 255)), - "4" = tibble::lst(grDevices::rgb(242 / 255, 240 / 255, 247 / 255), - grDevices::rgb(203 / 255, 201 / 255, 226 / 255), - grDevices::rgb(158 / 255, 154 / 255, 200 / 255), - grDevices::rgb(106 / 255, 81 / 255, 163 / 255)), - "5" = tibble::lst(grDevices::rgb(242 / 255, 240 / 255, 247 / 255), - grDevices::rgb(203 / 255, 201 / 255, 226 / 255), - grDevices::rgb(158 / 255, 154 / 255, 200 / 255), - grDevices::rgb(117 / 255, 107 / 255, 177 / 255), - grDevices::rgb(84 / 255, 39 / 255, 143 / 255)), - "6" = tibble::lst(grDevices::rgb(242 / 255, 240 / 255, 247 / 255), - grDevices::rgb(218 / 255, 218 / 255, 235 / 255), - grDevices::rgb(188 / 255, 189 / 255, 220 / 255), - grDevices::rgb(158 / 255, 154 / 255, 200 / 255), - grDevices::rgb(117 / 255, 107 / 255, 177 / 255), - grDevices::rgb(84 / 255, 39 / 255, 143 / 255)), - "7" = tibble::lst(grDevices::rgb(242 / 255, 240 / 255, 247 / 255), - grDevices::rgb(218 / 255, 218 / 255, 235 / 255), - grDevices::rgb(188 / 255, 189 / 255, 220 / 255), - grDevices::rgb(158 / 255, 154 / 255, 200 / 255), - grDevices::rgb(128 / 255, 125 / 255, 186 / 255), - grDevices::rgb(106 / 255, 81 / 255, 163 / 255), - grDevices::rgb(74 / 255, 20 / 255, 134 / 255)), - "8" = tibble::lst(grDevices::rgb(252 / 255, 251 / 255, 253 / 255), - grDevices::rgb(239 / 255, 237 / 255, 245 / 255), - grDevices::rgb(218 / 255, 218 / 255, 235 / 255), - grDevices::rgb(188 / 255, 189 / 255, 220 / 255), - grDevices::rgb(158 / 255, 154 / 255, 200 / 255), - grDevices::rgb(128 / 255, 125 / 255, 186 / 255), - grDevices::rgb(106 / 255, 81 / 255, 163 / 255), - grDevices::rgb(74 / 255, 20 / 255, 134 / 255)), - "9" = tibble::lst(grDevices::rgb(252 / 255, 251 / 255, 253 / 255), - grDevices::rgb(239 / 255, 237 / 255, 245 / 255), - grDevices::rgb(218 / 255, 218 / 255, 235 / 255), - grDevices::rgb(188 / 255, 189 / 255, 220 / 255), - grDevices::rgb(158 / 255, 154 / 255, 200 / 255), - grDevices::rgb(128 / 255, 125 / 255, 186 / 255), - grDevices::rgb(106 / 255, 81 / 255, 163 / 255), - grDevices::rgb(84 / 255, 39 / 255, 143 / 255), - grDevices::rgb(63 / 255, 0 / 255, 125 / 255)), - "10" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(241 / 255, 240 / 255, 246 / 255), - grDevices::rgb(227 / 255, 226 / 255, 239 / 255), - grDevices::rgb(207 / 255, 208 / 255, 229 / 255), - grDevices::rgb(184 / 255, 185 / 255, 217 / 255), - grDevices::rgb(161 / 255, 157 / 255, 202 / 255), - grDevices::rgb(138 / 255, 134 / 255, 190 / 255), - grDevices::rgb(118 / 255, 105 / 255, 175 / 255), - grDevices::rgb(99 / 255, 68 / 255, 156 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "11" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(242 / 255, 241 / 255, 247 / 255), - grDevices::rgb(230 / 255, 229 / 255, 241 / 255), - grDevices::rgb(214 / 255, 215 / 255, 233 / 255), - grDevices::rgb(193 / 255, 194 / 255, 223 / 255), - grDevices::rgb(172 / 255, 171 / 255, 209 / 255), - grDevices::rgb(152 / 255, 148 / 255, 197 / 255), - grDevices::rgb(131 / 255, 127 / 255, 187 / 255), - grDevices::rgb(115 / 255, 98 / 255, 172 / 255), - grDevices::rgb(97 / 255, 64 / 255, 154 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "12" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(243 / 255, 242 / 255, 247 / 255), - grDevices::rgb(233 / 255, 231 / 255, 242 / 255), - grDevices::rgb(219 / 255, 219 / 255, 235 / 255), - grDevices::rgb(201 / 255, 202 / 255, 226 / 255), - grDevices::rgb(182 / 255, 182 / 255, 216 / 255), - grDevices::rgb(163 / 255, 160 / 255, 203 / 255), - grDevices::rgb(144 / 255, 140 / 255, 193 / 255), - grDevices::rgb(126 / 255, 120 / 255, 183 / 255), - grDevices::rgb(112 / 255, 92 / 255, 169 / 255), - grDevices::rgb(95 / 255, 60 / 255, 152 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "13" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(244 / 255, 242 / 255, 248 / 255), - grDevices::rgb(235 / 255, 233 / 255, 243 / 255), - grDevices::rgb(223 / 255, 222 / 255, 237 / 255), - grDevices::rgb(207 / 255, 208 / 255, 229 / 255), - grDevices::rgb(190 / 255, 191 / 255, 221 / 255), - grDevices::rgb(172 / 255, 171 / 255, 209 / 255), - grDevices::rgb(155 / 255, 151 / 255, 198 / 255), - grDevices::rgb(138 / 255, 134 / 255, 190 / 255), - grDevices::rgb(122 / 255, 113 / 255, 180 / 255), - grDevices::rgb(109 / 255, 88 / 255, 166 / 255), - grDevices::rgb(93 / 255, 57 / 255, 150 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "14" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(244 / 255, 243 / 255, 248 / 255), - grDevices::rgb(237 / 255, 235 / 255, 244 / 255), - grDevices::rgb(226 / 255, 225 / 255, 238 / 255), - grDevices::rgb(213 / 255, 213 / 255, 232 / 255), - grDevices::rgb(197 / 255, 197 / 255, 224 / 255), - grDevices::rgb(181 / 255, 180 / 255, 215 / 255), - grDevices::rgb(164 / 255, 161 / 255, 204 / 255), - grDevices::rgb(148 / 255, 144 / 255, 195 / 255), - grDevices::rgb(132 / 255, 129 / 255, 188 / 255), - grDevices::rgb(119 / 255, 108 / 255, 177 / 255), - grDevices::rgb(107 / 255, 84 / 255, 164 / 255), - grDevices::rgb(91 / 255, 55 / 255, 149 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "15" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(245 / 255, 243 / 255, 248 / 255), - grDevices::rgb(238 / 255, 236 / 255, 244 / 255), - grDevices::rgb(228 / 255, 227 / 255, 239 / 255), - grDevices::rgb(217 / 255, 217 / 255, 235 / 255), - grDevices::rgb(202 / 255, 203 / 255, 227 / 255), - grDevices::rgb(187 / 255, 189 / 255, 220 / 255), - grDevices::rgb(172 / 255, 171 / 255, 209 / 255), - grDevices::rgb(158 / 255, 153 / 255, 199 / 255), - grDevices::rgb(143 / 255, 139 / 255, 193 / 255), - grDevices::rgb(127 / 255, 125 / 255, 185 / 255), - grDevices::rgb(117 / 255, 102 / 255, 174 / 255), - grDevices::rgb(106 / 255, 81 / 255, 163 / 255), - grDevices::rgb(90 / 255, 52 / 255, 148 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "16" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(245 / 255, 244 / 255, 249 / 255), - grDevices::rgb(239 / 255, 237 / 255, 245 / 255), - grDevices::rgb(230 / 255, 229 / 255, 241 / 255), - grDevices::rgb(220 / 255, 220 / 255, 236 / 255), - grDevices::rgb(207 / 255, 208 / 255, 229 / 255), - grDevices::rgb(193 / 255, 194 / 255, 223 / 255), - grDevices::rgb(179 / 255, 179 / 255, 214 / 255), - grDevices::rgb(165 / 255, 163 / 255, 205 / 255), - grDevices::rgb(152 / 255, 148 / 255, 197 / 255), - grDevices::rgb(138 / 255, 134 / 255, 190 / 255), - grDevices::rgb(125 / 255, 119 / 255, 182 / 255), - grDevices::rgb(115 / 255, 98 / 255, 172 / 255), - grDevices::rgb(104 / 255, 77 / 255, 161 / 255), - grDevices::rgb(89 / 255, 50 / 255, 147 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "17" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(246 / 255, 244 / 255, 249 / 255), - grDevices::rgb(240 / 255, 238 / 255, 245 / 255), - grDevices::rgb(232 / 255, 231 / 255, 241 / 255), - grDevices::rgb(223 / 255, 222 / 255, 237 / 255), - grDevices::rgb(212 / 255, 212 / 255, 232 / 255), - grDevices::rgb(199 / 255, 199 / 255, 225 / 255), - grDevices::rgb(186 / 255, 186 / 255, 218 / 255), - grDevices::rgb(172 / 255, 171 / 255, 209 / 255), - grDevices::rgb(159 / 255, 156 / 255, 201 / 255), - grDevices::rgb(146 / 255, 142 / 255, 194 / 255), - grDevices::rgb(133 / 255, 130 / 255, 188 / 255), - grDevices::rgb(122 / 255, 113 / 255, 180 / 255), - grDevices::rgb(113 / 255, 94 / 255, 170 / 255), - grDevices::rgb(102 / 255, 74 / 255, 159 / 255), - grDevices::rgb(88 / 255, 49 / 255, 146 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "18" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(246 / 255, 245 / 255, 249 / 255), - grDevices::rgb(241 / 255, 239 / 255, 246 / 255), - grDevices::rgb(234 / 255, 232 / 255, 242 / 255), - grDevices::rgb(225 / 255, 224 / 255, 238 / 255), - grDevices::rgb(216 / 255, 216 / 255, 234 / 255), - grDevices::rgb(203 / 255, 204 / 255, 227 / 255), - grDevices::rgb(191 / 255, 192 / 255, 221 / 255), - grDevices::rgb(179 / 255, 178 / 255, 214 / 255), - grDevices::rgb(166 / 255, 164 / 255, 205 / 255), - grDevices::rgb(154 / 255, 150 / 255, 198 / 255), - grDevices::rgb(142 / 255, 138 / 255, 192 / 255), - grDevices::rgb(129 / 255, 126 / 255, 186 / 255), - grDevices::rgb(120 / 255, 109 / 255, 177 / 255), - grDevices::rgb(111 / 255, 91 / 255, 168 / 255), - grDevices::rgb(100 / 255, 71 / 255, 157 / 255), - grDevices::rgb(87 / 255, 47 / 255, 145 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "19" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(246 / 255, 245 / 255, 249 / 255), - grDevices::rgb(241 / 255, 240 / 255, 246 / 255), - grDevices::rgb(235 / 255, 233 / 255, 243 / 255), - grDevices::rgb(227 / 255, 226 / 255, 239 / 255), - grDevices::rgb(219 / 255, 219 / 255, 235 / 255), - grDevices::rgb(207 / 255, 208 / 255, 229 / 255), - grDevices::rgb(196 / 255, 196 / 255, 224 / 255), - grDevices::rgb(184 / 255, 185 / 255, 217 / 255), - grDevices::rgb(172 / 255, 171 / 255, 209 / 255), - grDevices::rgb(161 / 255, 157 / 255, 202 / 255), - grDevices::rgb(149 / 255, 145 / 255, 196 / 255), - grDevices::rgb(138 / 255, 134 / 255, 190 / 255), - grDevices::rgb(126 / 255, 122 / 255, 184 / 255), - grDevices::rgb(118 / 255, 105 / 255, 175 / 255), - grDevices::rgb(109 / 255, 88 / 255, 166 / 255), - grDevices::rgb(99 / 255, 68 / 255, 156 / 255), - grDevices::rgb(87 / 255, 46 / 255, 145 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "20" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), - grDevices::rgb(247 / 255, 245 / 255, 250 / 255), - grDevices::rgb(242 / 255, 240 / 255, 247 / 255), - grDevices::rgb(236 / 255, 234 / 255, 243 / 255), - grDevices::rgb(229 / 255, 227 / 255, 240 / 255), - grDevices::rgb(221 / 255, 220 / 255, 236 / 255), - grDevices::rgb(211 / 255, 211 / 255, 231 / 255), - grDevices::rgb(200 / 255, 201 / 255, 226 / 255), - grDevices::rgb(189 / 255, 190 / 255, 220 / 255), - grDevices::rgb(178 / 255, 177 / 255, 213 / 255), - grDevices::rgb(167 / 255, 164 / 255, 206 / 255), - grDevices::rgb(156 / 255, 152 / 255, 199 / 255), - grDevices::rgb(145 / 255, 141 / 255, 194 / 255), - grDevices::rgb(134 / 255, 131 / 255, 188 / 255), - grDevices::rgb(124 / 255, 118 / 255, 182 / 255), - grDevices::rgb(116 / 255, 101 / 255, 173 / 255), - grDevices::rgb(108 / 255, 85 / 255, 165 / 255), - grDevices::rgb(98 / 255, 66 / 255, 155 / 255), - grDevices::rgb(86 / 255, 45 / 255, 144 / 255), - grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), - "type" = "sequential" - ), - "GnBu" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(224 / 255, 243 / 255, 219 / 255), - grDevices::rgb(67 / 255, 162 / 255, 202 / 255)), - "3" = tibble::lst(grDevices::rgb(224 / 255, 243 / 255, 219 / 255), - grDevices::rgb(168 / 255, 221 / 255, 181 / 255), - grDevices::rgb(67 / 255, 162 / 255, 202 / 255)), - "4" = tibble::lst(grDevices::rgb(240 / 255, 249 / 255, 232 / 255), - grDevices::rgb(186 / 255, 228 / 255, 188 / 255), - grDevices::rgb(123 / 255, 204 / 255, 196 / 255), - grDevices::rgb(43 / 255, 140 / 255, 190 / 255)), - "5" = tibble::lst(grDevices::rgb(240 / 255, 249 / 255, 232 / 255), - grDevices::rgb(186 / 255, 228 / 255, 188 / 255), - grDevices::rgb(123 / 255, 204 / 255, 196 / 255), - grDevices::rgb(67 / 255, 162 / 255, 202 / 255), - grDevices::rgb(8 / 255, 104 / 255, 172 / 255)), - "6" = tibble::lst(grDevices::rgb(240 / 255, 249 / 255, 232 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(168 / 255, 221 / 255, 181 / 255), - grDevices::rgb(123 / 255, 204 / 255, 196 / 255), - grDevices::rgb(67 / 255, 162 / 255, 202 / 255), - grDevices::rgb(8 / 255, 104 / 255, 172 / 255)), - "7" = tibble::lst(grDevices::rgb(240 / 255, 249 / 255, 232 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(168 / 255, 221 / 255, 181 / 255), - grDevices::rgb(123 / 255, 204 / 255, 196 / 255), - grDevices::rgb(78 / 255, 179 / 255, 211 / 255), - grDevices::rgb(43 / 255, 140 / 255, 190 / 255), - grDevices::rgb(8 / 255, 88 / 255, 158 / 255)), - "8" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(224 / 255, 243 / 255, 219 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(168 / 255, 221 / 255, 181 / 255), - grDevices::rgb(123 / 255, 204 / 255, 196 / 255), - grDevices::rgb(78 / 255, 179 / 255, 211 / 255), - grDevices::rgb(43 / 255, 140 / 255, 190 / 255), - grDevices::rgb(8 / 255, 88 / 255, 158 / 255)), - "9" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(224 / 255, 243 / 255, 219 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(168 / 255, 221 / 255, 181 / 255), - grDevices::rgb(123 / 255, 204 / 255, 196 / 255), - grDevices::rgb(78 / 255, 179 / 255, 211 / 255), - grDevices::rgb(43 / 255, 140 / 255, 190 / 255), - grDevices::rgb(8 / 255, 104 / 255, 172 / 255), - grDevices::rgb(8 / 255, 64 / 255, 129 / 255)), - "10" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(229 / 255, 245 / 255, 223 / 255), - grDevices::rgb(212 / 255, 238 / 255, 206 / 255), - grDevices::rgb(192 / 255, 230 / 255, 191 / 255), - grDevices::rgb(163 / 255, 219 / 255, 182 / 255), - grDevices::rgb(128 / 255, 205 / 255, 194 / 255), - grDevices::rgb(95 / 255, 187 / 255, 206 / 255), - grDevices::rgb(63 / 255, 161 / 255, 201 / 255), - grDevices::rgb(37 / 255, 128 / 255, 182 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "11" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(230 / 255, 245 / 255, 225 / 255), - grDevices::rgb(216 / 255, 239 / 255, 210 / 255), - grDevices::rgb(200 / 255, 233 / 255, 195 / 255), - grDevices::rgb(175 / 255, 223 / 255, 184 / 255), - grDevices::rgb(146 / 255, 212 / 255, 188 / 255), - grDevices::rgb(115 / 255, 198 / 255, 199 / 255), - grDevices::rgb(83 / 255, 181 / 255, 209 / 255), - grDevices::rgb(58 / 255, 155 / 255, 198 / 255), - grDevices::rgb(35 / 255, 124 / 255, 180 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "12" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(232 / 255, 246 / 255, 226 / 255), - grDevices::rgb(218 / 255, 240 / 255, 212 / 255), - grDevices::rgb(205 / 255, 235 / 255, 198 / 255), - grDevices::rgb(184 / 255, 227 / 255, 188 / 255), - grDevices::rgb(160 / 255, 217 / 255, 183 / 255), - grDevices::rgb(132 / 255, 207 / 255, 193 / 255), - grDevices::rgb(105 / 255, 192 / 255, 202 / 255), - grDevices::rgb(75 / 255, 175 / 255, 209 / 255), - grDevices::rgb(53 / 255, 150 / 255, 195 / 255), - grDevices::rgb(34 / 255, 120 / 255, 178 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "13" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(233 / 255, 246 / 255, 227 / 255), - grDevices::rgb(220 / 255, 241 / 255, 215 / 255), - grDevices::rgb(209 / 255, 237 / 255, 202 / 255), - grDevices::rgb(192 / 255, 230 / 255, 191 / 255), - grDevices::rgb(171 / 255, 222 / 255, 182 / 255), - grDevices::rgb(146 / 255, 212 / 255, 188 / 255), - grDevices::rgb(119 / 255, 201 / 255, 197 / 255), - grDevices::rgb(95 / 255, 187 / 255, 206 / 255), - grDevices::rgb(70 / 255, 169 / 255, 205 / 255), - grDevices::rgb(49 / 255, 146 / 255, 193 / 255), - grDevices::rgb(32 / 255, 117 / 255, 176 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "14" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(234 / 255, 247 / 255, 228 / 255), - grDevices::rgb(222 / 255, 242 / 255, 217 / 255), - grDevices::rgb(211 / 255, 238 / 255, 205 / 255), - grDevices::rgb(198 / 255, 232 / 255, 194 / 255), - grDevices::rgb(179 / 255, 225 / 255, 185 / 255), - grDevices::rgb(158 / 255, 217 / 255, 184 / 255), - grDevices::rgb(134 / 255, 207 / 255, 192 / 255), - grDevices::rgb(111 / 255, 196 / 255, 200 / 255), - grDevices::rgb(86 / 255, 182 / 255, 208 / 255), - grDevices::rgb(65 / 255, 163 / 255, 202 / 255), - grDevices::rgb(46 / 255, 142 / 255, 191 / 255), - grDevices::rgb(31 / 255, 115 / 255, 175 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "15" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(235 / 255, 247 / 255, 229 / 255), - grDevices::rgb(223 / 255, 242 / 255, 218 / 255), - grDevices::rgb(214 / 255, 239 / 255, 207 / 255), - grDevices::rgb(204 / 255, 235 / 255, 197 / 255), - grDevices::rgb(186 / 255, 228 / 255, 188 / 255), - grDevices::rgb(167 / 255, 221 / 255, 180 / 255), - grDevices::rgb(146 / 255, 212 / 255, 188 / 255), - grDevices::rgb(122 / 255, 204 / 255, 196 / 255), - grDevices::rgb(103 / 255, 191 / 255, 203 / 255), - grDevices::rgb(77 / 255, 178 / 255, 210 / 255), - grDevices::rgb(61 / 255, 159 / 255, 200 / 255), - grDevices::rgb(43 / 255, 140 / 255, 190 / 255), - grDevices::rgb(30 / 255, 113 / 255, 173 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "16" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(236 / 255, 247 / 255, 230 / 255), - grDevices::rgb(225 / 255, 243 / 255, 220 / 255), - grDevices::rgb(216 / 255, 239 / 255, 210 / 255), - grDevices::rgb(206 / 255, 236 / 255, 199 / 255), - grDevices::rgb(192 / 255, 230 / 255, 191 / 255), - grDevices::rgb(175 / 255, 223 / 255, 184 / 255), - grDevices::rgb(157 / 255, 216 / 255, 185 / 255), - grDevices::rgb(136 / 255, 208 / 255, 192 / 255), - grDevices::rgb(115 / 255, 198 / 255, 199 / 255), - grDevices::rgb(95 / 255, 187 / 255, 206 / 255), - grDevices::rgb(73 / 255, 173 / 255, 208 / 255), - grDevices::rgb(58 / 255, 155 / 255, 198 / 255), - grDevices::rgb(41 / 255, 136 / 255, 187 / 255), - grDevices::rgb(29 / 255, 111 / 255, 172 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "17" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(236 / 255, 248 / 255, 230 / 255), - grDevices::rgb(226 / 255, 244 / 255, 221 / 255), - grDevices::rgb(217 / 255, 240 / 255, 212 / 255), - grDevices::rgb(209 / 255, 237 / 255, 202 / 255), - grDevices::rgb(197 / 255, 232 / 255, 193 / 255), - grDevices::rgb(181 / 255, 226 / 255, 186 / 255), - grDevices::rgb(165 / 255, 219 / 255, 181 / 255), - grDevices::rgb(146 / 255, 212 / 255, 188 / 255), - grDevices::rgb(126 / 255, 205 / 255, 195 / 255), - grDevices::rgb(108 / 255, 194 / 255, 201 / 255), - grDevices::rgb(88 / 255, 183 / 255, 208 / 255), - grDevices::rgb(70 / 255, 169 / 255, 205 / 255), - grDevices::rgb(55 / 255, 151 / 255, 196 / 255), - grDevices::rgb(40 / 255, 133 / 255, 185 / 255), - grDevices::rgb(28 / 255, 110 / 255, 171 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "18" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(237 / 255, 248 / 255, 231 / 255), - grDevices::rgb(228 / 255, 244 / 255, 222 / 255), - grDevices::rgb(219 / 255, 241 / 255, 213 / 255), - grDevices::rgb(211 / 255, 237 / 255, 204 / 255), - grDevices::rgb(201 / 255, 234 / 255, 196 / 255), - grDevices::rgb(187 / 255, 228 / 255, 189 / 255), - grDevices::rgb(172 / 255, 222 / 255, 182 / 255), - grDevices::rgb(155 / 255, 215 / 255, 185 / 255), - grDevices::rgb(137 / 255, 208 / 255, 191 / 255), - grDevices::rgb(118 / 255, 201 / 255, 197 / 255), - grDevices::rgb(101 / 255, 190 / 255, 204 / 255), - grDevices::rgb(81 / 255, 180 / 255, 210 / 255), - grDevices::rgb(66 / 255, 165 / 255, 203 / 255), - grDevices::rgb(52 / 255, 149 / 255, 194 / 255), - grDevices::rgb(38 / 255, 130 / 255, 184 / 255), - grDevices::rgb(27 / 255, 108 / 255, 171 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "19" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(238 / 255, 248 / 255, 231 / 255), - grDevices::rgb(229 / 255, 245 / 255, 223 / 255), - grDevices::rgb(220 / 255, 241 / 255, 215 / 255), - grDevices::rgb(212 / 255, 238 / 255, 206 / 255), - grDevices::rgb(205 / 255, 235 / 255, 198 / 255), - grDevices::rgb(192 / 255, 230 / 255, 191 / 255), - grDevices::rgb(178 / 255, 224 / 255, 185 / 255), - grDevices::rgb(163 / 255, 219 / 255, 182 / 255), - grDevices::rgb(146 / 255, 212 / 255, 188 / 255), - grDevices::rgb(128 / 255, 205 / 255, 194 / 255), - grDevices::rgb(112 / 255, 196 / 255, 200 / 255), - grDevices::rgb(95 / 255, 187 / 255, 206 / 255), - grDevices::rgb(76 / 255, 176 / 255, 209 / 255), - grDevices::rgb(63 / 255, 161 / 255, 201 / 255), - grDevices::rgb(49 / 255, 146 / 255, 193 / 255), - grDevices::rgb(37 / 255, 128 / 255, 182 / 255), - grDevices::rgb(26 / 255, 107 / 255, 170 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "20" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), - grDevices::rgb(238 / 255, 248 / 255, 232 / 255), - grDevices::rgb(230 / 255, 245 / 255, 224 / 255), - grDevices::rgb(221 / 255, 242 / 255, 216 / 255), - grDevices::rgb(214 / 255, 239 / 255, 208 / 255), - grDevices::rgb(207 / 255, 236 / 255, 200 / 255), - grDevices::rgb(196 / 255, 232 / 255, 193 / 255), - grDevices::rgb(183 / 255, 226 / 255, 187 / 255), - grDevices::rgb(169 / 255, 221 / 255, 181 / 255), - grDevices::rgb(154 / 255, 215 / 255, 185 / 255), - grDevices::rgb(138 / 255, 209 / 255, 191 / 255), - grDevices::rgb(121 / 255, 202 / 255, 196 / 255), - grDevices::rgb(106 / 255, 193 / 255, 202 / 255), - grDevices::rgb(89 / 255, 184 / 255, 207 / 255), - grDevices::rgb(73 / 255, 172 / 255, 207 / 255), - grDevices::rgb(61 / 255, 158 / 255, 199 / 255), - grDevices::rgb(47 / 255, 144 / 255, 192 / 255), - grDevices::rgb(36 / 255, 125 / 255, 181 / 255), - grDevices::rgb(25 / 255, 106 / 255, 169 / 255), - grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), - "type" = "sequential" - ), - "Greys" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(240 / 255, 240 / 255, 240 / 255), - grDevices::rgb(99 / 255, 99 / 255, 99 / 255)), - "3" = tibble::lst(grDevices::rgb(240 / 255, 240 / 255, 240 / 255), - grDevices::rgb(189 / 255, 189 / 255, 189 / 255), - grDevices::rgb(99 / 255, 99 / 255, 99 / 255)), - "4" = tibble::lst(grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(204 / 255, 204 / 255, 204 / 255), - grDevices::rgb(150 / 255, 150 / 255, 150 / 255), - grDevices::rgb(82 / 255, 82 / 255, 82 / 255)), - "5" = tibble::lst(grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(204 / 255, 204 / 255, 204 / 255), - grDevices::rgb(150 / 255, 150 / 255, 150 / 255), - grDevices::rgb(99 / 255, 99 / 255, 99 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "6" = tibble::lst(grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(217 / 255, 217 / 255, 217 / 255), - grDevices::rgb(189 / 255, 189 / 255, 189 / 255), - grDevices::rgb(150 / 255, 150 / 255, 150 / 255), - grDevices::rgb(99 / 255, 99 / 255, 99 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "7" = tibble::lst(grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(217 / 255, 217 / 255, 217 / 255), - grDevices::rgb(189 / 255, 189 / 255, 189 / 255), - grDevices::rgb(150 / 255, 150 / 255, 150 / 255), - grDevices::rgb(115 / 255, 115 / 255, 115 / 255), - grDevices::rgb(82 / 255, 82 / 255, 82 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(240 / 255, 240 / 255, 240 / 255), - grDevices::rgb(217 / 255, 217 / 255, 217 / 255), - grDevices::rgb(189 / 255, 189 / 255, 189 / 255), - grDevices::rgb(150 / 255, 150 / 255, 150 / 255), - grDevices::rgb(115 / 255, 115 / 255, 115 / 255), - grDevices::rgb(82 / 255, 82 / 255, 82 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(240 / 255, 240 / 255, 240 / 255), - grDevices::rgb(217 / 255, 217 / 255, 217 / 255), - grDevices::rgb(189 / 255, 189 / 255, 189 / 255), - grDevices::rgb(150 / 255, 150 / 255, 150 / 255), - grDevices::rgb(115 / 255, 115 / 255, 115 / 255), - grDevices::rgb(82 / 255, 82 / 255, 82 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255), - grDevices::rgb(0 / 255, 0 / 255, 0 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(243 / 255, 243 / 255, 243 / 255), - grDevices::rgb(227 / 255, 227 / 255, 227 / 255), - grDevices::rgb(207 / 255, 207 / 255, 207 / 255), - grDevices::rgb(184 / 255, 184 / 255, 184 / 255), - grDevices::rgb(154 / 255, 154 / 255, 154 / 255), - grDevices::rgb(126 / 255, 126 / 255, 126 / 255), - grDevices::rgb(100 / 255, 100 / 255, 100 / 255), - grDevices::rgb(71 / 255, 71 / 255,71 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(244 / 255, 244 / 255, 244 / 255), - grDevices::rgb(230 / 255, 230 / 255, 230 / 255), - grDevices::rgb(214 / 255, 214 / 255, 214 / 255), - grDevices::rgb(194 / 255, 194 / 255, 194 / 255), - grDevices::rgb(169 / 255, 169 / 255, 169 / 255), - grDevices::rgb(142 / 255, 142 / 255, 142 / 255), - grDevices::rgb(118 / 255, 118 / 255, 118 / 255), - grDevices::rgb(94 / 255, 94 / 255, 94 / 255), - grDevices::rgb(67 / 255, 67 / 255, 67 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(245 / 255, 245 / 255, 245 / 255), - grDevices::rgb(233 / 255, 233 / 255, 233 / 255), - grDevices::rgb(219 / 255, 219 / 255, 219 / 255), - grDevices::rgb(201 / 255, 201 / 255, 201 / 255), - grDevices::rgb(181 / 255, 181 / 255, 181 / 255), - grDevices::rgb(156 / 255, 156 / 255, 156 / 255), - grDevices::rgb(133 / 255, 133 / 255, 133 / 255), - grDevices::rgb(111 / 255, 111 / 255, 111 / 255), - grDevices::rgb(90 / 255, 90 / 255, 90 / 255), - grDevices::rgb(64 / 255, 64 / 255, 64 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(246 / 255, 246 / 255, 246 / 255), - grDevices::rgb(236 / 255, 236 / 255, 236 / 255), - grDevices::rgb(222 / 255, 222 / 255, 222 / 255), - grDevices::rgb(207 / 255, 207 / 255, 207 / 255), - grDevices::rgb(191 / 255, 191 / 255, 191 / 255), - grDevices::rgb(169 / 255, 169 / 255, 169 / 255), - grDevices::rgb(147 / 255, 147 / 255, 147 / 255), - grDevices::rgb(126 / 255, 126 / 255, 126 / 255), - grDevices::rgb(106 / 255, 106 / 255, 106 / 255), - grDevices::rgb(87 / 255, 87 / 255, 87 / 255), - grDevices::rgb(62 / 255, 62 / 255, 62 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(246 / 255, 246 / 255, 246 / 255), - grDevices::rgb(238 / 255, 238 / 255, 238 / 255), - grDevices::rgb(225 / 255, 225 / 255, 225 / 255), - grDevices::rgb(212 / 255, 212 / 255, 212 / 255), - grDevices::rgb(197 / 255, 197 / 255, 197 / 255), - grDevices::rgb(179 / 255, 179 / 255, 179 / 255), - grDevices::rgb(158 / 255, 158 / 255, 158 / 255), - grDevices::rgb(139 / 255, 139 / 255, 139 / 255), - grDevices::rgb(120 / 255, 120 / 255, 120 / 255), - grDevices::rgb(102 / 255, 102 / 255, 102 / 255), - grDevices::rgb(84 / 255, 84 / 255, 84 / 255), - grDevices::rgb(60 / 255, 60 / 255, 60 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(240 / 255, 240 / 255, 240 / 255), - grDevices::rgb(228 / 255, 228 / 255, 228 / 255), - grDevices::rgb(216 / 255, 216 / 255, 216 / 255), - grDevices::rgb(202 / 255, 202 / 255, 202 / 255), - grDevices::rgb(189 / 255, 189 / 255, 189 / 255), - grDevices::rgb(169 / 255, 169 / 255, 169 / 255), - grDevices::rgb(150 / 255, 150 / 255, 150 / 255), - grDevices::rgb(132 / 255, 132 / 255, 132 / 255), - grDevices::rgb(114 / 255, 114 / 255, 114 / 255), - grDevices::rgb(98 / 255, 98 / 255, 98 / 255), - grDevices::rgb(82 / 255, 82 / 255, 82 / 255), - grDevices::rgb(58 / 255, 58 / 255, 58 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(247 / 255, 247 / 255, 247 / 255), - grDevices::rgb(240 / 255, 240 / 255, 240 / 255), - grDevices::rgb(230 / 255, 230 / 255, 230 / 255), - grDevices::rgb(220 / 255, 220 / 255, 220 / 255), - grDevices::rgb(207 / 255, 207 / 255, 207 / 255), - grDevices::rgb(194 / 255, 194 / 255, 194 / 255), - grDevices::rgb(178 / 255, 178 / 255, 178 / 255), - grDevices::rgb(160 / 255, 160 / 255, 160 / 255), - grDevices::rgb(142 / 255, 142 / 255, 142 / 255), - grDevices::rgb(126 / 255, 126 / 255, 126 / 255), - grDevices::rgb(110 / 255, 110 / 255, 110 / 255), - grDevices::rgb(94 / 255, 94 / 255, 94 / 255), - grDevices::rgb(78 / 255, 78 / 255,78 / 255), - grDevices::rgb(57 / 255, 57 / 255, 57 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(248 / 255, 248 / 255, 248 / 255), - grDevices::rgb(241 / 255, 241 / 255, 241 / 255), - grDevices::rgb(232 / 255, 232 / 255, 232 / 255), - grDevices::rgb(222 / 255, 222 / 255, 222 / 255), - grDevices::rgb(211 / 255, 211 / 255, 211 / 255), - grDevices::rgb(199 / 255, 199 / 255, 199 / 255), - grDevices::rgb(186 / 255, 186 / 255, 186 / 255), - grDevices::rgb(169 / 255, 169 / 255, 169 / 255), - grDevices::rgb(152 / 255, 152 / 255, 152 / 255), - grDevices::rgb(136 / 255, 136 / 255, 136 / 255), - grDevices::rgb(121 / 255, 121 / 255, 121 / 255), - grDevices::rgb(106 / 255, 106 / 255, 106 / 255), - grDevices::rgb(92 / 255, 92 / 255, 92 / 255), - grDevices::rgb(76 / 255, 76 / 255,76 / 255), - grDevices::rgb(55 / 255, 55 / 255, 55 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(248 / 255, 248 / 255, 248 / 255), - grDevices::rgb(242 / 255, 242 / 255, 242 / 255), - grDevices::rgb(234 / 255, 234 / 255, 234 / 255), - grDevices::rgb(225 / 255, 225 / 255, 225 / 255), - grDevices::rgb(215 / 255, 215 / 255, 215 / 255), - grDevices::rgb(203 / 255, 203 / 255, 203 / 255), - grDevices::rgb(192 / 255, 192 / 255, 192 / 255), - grDevices::rgb(177 / 255, 177 / 255, 177 / 255), - grDevices::rgb(161 / 255, 161 / 255, 161 / 255), - grDevices::rgb(145 / 255, 145 / 255, 145 / 255), - grDevices::rgb(131 / 255, 131 / 255, 131 / 255), - grDevices::rgb(117 / 255, 117 / 255, 117 / 255), - grDevices::rgb(103 / 255, 103 / 255, 103 / 255), - grDevices::rgb(89 / 255, 89 / 255, 89 / 255), - grDevices::rgb(73 / 255, 73 / 255,73 / 255), - grDevices::rgb(54 / 255, 54 / 255, 54 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(249 / 255, 249 / 255, 249 / 255), - grDevices::rgb(243 / 255, 243 / 255, 243 / 255), - grDevices::rgb(236 / 255, 236 / 255, 236 / 255), - grDevices::rgb(227 / 255, 227 / 255, 227 / 255), - grDevices::rgb(218 / 255, 218 / 255, 218 / 255), - grDevices::rgb(207 / 255, 207 / 255, 207 / 255), - grDevices::rgb(196 / 255, 196 / 255, 196 / 255), - grDevices::rgb(184 / 255, 184 / 255, 184 / 255), - grDevices::rgb(169 / 255, 169 / 255, 169 / 255), - grDevices::rgb(154 / 255, 154 / 255, 154 / 255), - grDevices::rgb(140 / 255, 140 / 255, 140 / 255), - grDevices::rgb(126 / 255, 126 / 255, 126 / 255), - grDevices::rgb(113 / 255, 113 / 255, 113 / 255), - grDevices::rgb(100 / 255, 100 / 255, 100 / 255), - grDevices::rgb(87 / 255, 87 / 255, 87 / 255), - grDevices::rgb(71 / 255, 71 / 255,71 / 255), - grDevices::rgb(53 / 255, 53 / 255, 53 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), - grDevices::rgb(249 / 255, 249 / 255, 249 / 255), - grDevices::rgb(243 / 255, 243 / 255, 243 / 255), - grDevices::rgb(237 / 255, 237 / 255, 237 / 255), - grDevices::rgb(229 / 255, 229 / 255, 229 / 255), - grDevices::rgb(220 / 255, 220 / 255, 220 / 255), - grDevices::rgb(211 / 255, 211 / 255, 211 / 255), - grDevices::rgb(200 / 255, 200 / 255, 200 / 255), - grDevices::rgb(190 / 255, 190 / 255, 190 / 255), - grDevices::rgb(176 / 255, 176 / 255, 176 / 255), - grDevices::rgb(162 / 255, 162 / 255, 162 / 255), - grDevices::rgb(148 / 255, 148 / 255, 148 / 255), - grDevices::rgb(135 / 255, 135 / 255, 135 / 255), - grDevices::rgb(122 / 255, 122 / 255, 122 / 255), - grDevices::rgb(109 / 255, 109 / 255, 109 / 255), - grDevices::rgb(97 / 255, 97 / 255, 97 / 255), - grDevices::rgb(85 / 255, 85 / 255, 85 / 255), - grDevices::rgb(69 / 255, 69 / 255, 69 / 255), - grDevices::rgb(52 / 255, 52 / 255, 52 / 255), - grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), - "type" = "sequential" - ), - "YlOrRd" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(255 / 255, 237 / 255, 160 / 255), - grDevices::rgb(240 / 255, 59 / 255, 32 / 255)), - "3" = tibble::lst(grDevices::rgb(255 / 255, 237 / 255, 160 / 255), - grDevices::rgb(254 / 255, 178 / 255, 76 / 255), - grDevices::rgb(240 / 255, 59 / 255, 32 / 255)), - "4" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 178 / 255), - grDevices::rgb(254 / 255, 204 / 255, 92 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(227 / 255, 26 / 255, 28 / 255)), - "5" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 178 / 255), - grDevices::rgb(254 / 255, 204 / 255, 92 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(240 / 255, 59 / 255, 32 / 255), - grDevices::rgb(189 / 255, 0 / 255, 38 / 255)), - "6" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 178 / 255), - grDevices::rgb(254 / 255, 217 / 255, 118 / 255), - grDevices::rgb(254 / 255, 178 / 255, 76 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(240 / 255, 59 / 255, 32 / 255), - grDevices::rgb(189 / 255, 0 / 255, 38 / 255)), - "7" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 178 / 255), - grDevices::rgb(254 / 255, 217 / 255, 118 / 255), - grDevices::rgb(254 / 255, 178 / 255, 76 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(252 / 255,78 / 255, 42 / 255), - grDevices::rgb(227 / 255, 26 / 255, 28 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 237 / 255, 160 / 255), - grDevices::rgb(254 / 255, 217 / 255, 118 / 255), - grDevices::rgb(254 / 255, 178 / 255, 76 / 255), - grDevices::rgb(253 / 255, 141 / 255, 60 / 255), - grDevices::rgb(252 / 255, 78 / 255, 42 / 255), - grDevices::rgb(227 / 255, 26 / 255, 28 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 239 / 255, 165 / 255), - grDevices::rgb(254 / 255, 221 / 255, 128 / 255), - grDevices::rgb(254 / 255, 192 / 255, 91 / 255), - grDevices::rgb(253 / 255, 159 / 255, 67 / 255), - grDevices::rgb(253 / 255, 119 / 255, 52 / 255), - grDevices::rgb(245 / 255, 67 / 255, 38 / 255), - grDevices::rgb(220 / 255, 23 / 255, 29 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 240 / 255, 169 / 255), - grDevices::rgb(254 / 255, 225 / 255, 136 / 255), - grDevices::rgb(254 / 255, 204 / 255, 104 / 255), - grDevices::rgb(254 / 255, 174 / 255, 74 / 255), - grDevices::rgb(253 / 255, 145 / 255, 61 / 255), - grDevices::rgb(252 / 255, 101 / 255, 47 / 255), - grDevices::rgb(240 / 255, 58 / 255, 35 / 255), - grDevices::rgb(215 / 255, 20 / 255, 30 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 242 / 255, 173 / 255), - grDevices::rgb(254 / 255, 228 / 255, 143 / 255), - grDevices::rgb(254 / 255, 213 / 255, 113 / 255), - grDevices::rgb(254 / 255, 185 / 255, 84 / 255), - grDevices::rgb(253 / 255, 159 / 255, 67 / 255), - grDevices::rgb(253 / 255, 129 / 255, 56 / 255), - grDevices::rgb(252 / 255, 85 / 255, 43 / 255), - grDevices::rgb(237 / 255, 51 / 255, 33 / 255), - grDevices::rgb(211 / 255, 18 / 255, 31 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 243 / 255, 175 / 255), - grDevices::rgb(255 / 255, 231 / 255, 148 / 255), - grDevices::rgb(254 / 255, 218 / 255, 121 / 255), - grDevices::rgb(254 / 255, 195 / 255, 95 / 255), - grDevices::rgb(254 / 255, 171 / 255, 73 / 255), - grDevices::rgb(253 / 255, 147 / 255, 62 / 255), - grDevices::rgb(253 / 255, 115 / 255, 51 / 255), - grDevices::rgb(249 / 255,74 / 255, 40 / 255), - grDevices::rgb(233 / 255, 44 / 255, 31 / 255), - grDevices::rgb(208 / 255, 17 / 255, 32 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 244 / 255, 178 / 255), - grDevices::rgb(255 / 255, 233 / 255, 153 / 255), - grDevices::rgb(254 / 255, 221 / 255, 128 / 255), - grDevices::rgb(254 / 255, 204 / 255, 104 / 255), - grDevices::rgb(254 / 255, 181 / 255, 79 / 255), - grDevices::rgb(253 / 255, 159 / 255, 67 / 255), - grDevices::rgb(253 / 255, 136 / 255, 58 / 255), - grDevices::rgb(252 / 255, 101 / 255, 47 / 255), - grDevices::rgb(245 / 255, 67 / 255, 38 / 255), - grDevices::rgb(231 / 255, 38 / 255, 30 / 255), - grDevices::rgb(205 / 255, 15 / 255, 33 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 245 / 255, 180 / 255), - grDevices::rgb(255 / 255, 235 / 255, 156 / 255), - grDevices::rgb(254 / 255, 224 / 255, 134 / 255), - grDevices::rgb(254 / 255, 211 / 255, 111 / 255), - grDevices::rgb(254 / 255, 190 / 255, 89 / 255), - grDevices::rgb(254 / 255, 169 / 255, 72 / 255), - grDevices::rgb(253 / 255, 149 / 255, 63 / 255), - grDevices::rgb(253 / 255, 123 / 255, 54 / 255), - grDevices::rgb(252 / 255, 89 / 255, 44 / 255), - grDevices::rgb(242 / 255, 61 / 255, 36 / 255), - grDevices::rgb(228 / 255, 31 / 255, 29 / 255), - grDevices::rgb(203 / 255, 14 / 255, 33 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 245 / 255, 181 / 255), - grDevices::rgb(255 / 255, 236 / 255, 159 / 255), - grDevices::rgb(254 / 255, 226 / 255, 139 / 255), - grDevices::rgb(254 / 255, 216 / 255, 118 / 255), - grDevices::rgb(254 / 255, 197 / 255, 97 / 255), - grDevices::rgb(254 / 255, 178 / 255, 76 / 255), - grDevices::rgb(253 / 255, 159 / 255, 67 / 255), - grDevices::rgb(253 / 255, 140 / 255, 59 / 255), - grDevices::rgb(253 / 255, 112 / 255, 50 / 255), - grDevices::rgb(252 / 255,77 / 255, 42 / 255), - grDevices::rgb(239 / 255, 56 / 255, 34 / 255), - grDevices::rgb(227 / 255, 25 / 255, 27 / 255), - grDevices::rgb(201 / 255, 13 / 255, 33 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 246 / 255, 183 / 255), - grDevices::rgb(255 / 255, 238 / 255, 162 / 255), - grDevices::rgb(254 / 255, 228 / 255, 143 / 255), - grDevices::rgb(254 / 255, 219 / 255, 123 / 255), - grDevices::rgb(254 / 255, 204 / 255, 104 / 255), - grDevices::rgb(254 / 255, 185 / 255, 84 / 255), - grDevices::rgb(253 / 255, 168 / 255, 71 / 255), - grDevices::rgb(253 / 255, 151 / 255, 64 / 255), - grDevices::rgb(253 / 255, 129 / 255, 56 / 255), - grDevices::rgb(252 / 255, 101 / 255, 47 / 255), - grDevices::rgb(248 / 255,72 / 255, 40 / 255), - grDevices::rgb(237 / 255, 51 / 255, 33 / 255), - grDevices::rgb(223 / 255, 24 / 255, 28 / 255), - grDevices::rgb(200 / 255, 12 / 255, 34 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 247 / 255, 184 / 255), - grDevices::rgb(255 / 255, 239 / 255, 165 / 255), - grDevices::rgb(255 / 255, 230 / 255, 146 / 255), - grDevices::rgb(254 / 255, 221 / 255, 128 / 255), - grDevices::rgb(254 / 255, 209 / 255, 110 / 255), - grDevices::rgb(254 / 255, 192 / 255, 91 / 255), - grDevices::rgb(254 / 255, 175 / 255, 74 / 255), - grDevices::rgb(253 / 255, 159 / 255, 67 / 255), - grDevices::rgb(253 / 255, 143 / 255, 60 / 255), - grDevices::rgb(253 / 255, 119 / 255, 52 / 255), - grDevices::rgb(252 / 255, 91 / 255, 45 / 255), - grDevices::rgb(245 / 255, 67 / 255, 38 / 255), - grDevices::rgb(234 / 255, 46 / 255, 32 / 255), - grDevices::rgb(220 / 255, 23 / 255, 29 / 255), - grDevices::rgb(198 / 255, 11 / 255, 34 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 247 / 255, 185 / 255), - grDevices::rgb(255 / 255, 240 / 255, 167 / 255), - grDevices::rgb(255 / 255, 232 / 255, 150 / 255), - grDevices::rgb(254 / 255, 224 / 255, 132 / 255), - grDevices::rgb(254 / 255, 214 / 255, 115 / 255), - grDevices::rgb(254 / 255, 198 / 255, 98 / 255), - grDevices::rgb(254 / 255, 182 / 255, 81 / 255), - grDevices::rgb(253 / 255, 167 / 255, 71 / 255), - grDevices::rgb(253 / 255, 152 / 255, 64 / 255), - grDevices::rgb(253 / 255, 134 / 255, 57 / 255), - grDevices::rgb(253 / 255, 110 / 255, 50 / 255), - grDevices::rgb(252 / 255, 82 / 255, 42 / 255), - grDevices::rgb(243 / 255, 62 / 255, 36 / 255), - grDevices::rgb(232 / 255, 42 / 255, 31 / 255), - grDevices::rgb(218 / 255, 21 / 255, 30 / 255), - grDevices::rgb(197 / 255, 11 / 255, 34 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 247 / 255, 186 / 255), - grDevices::rgb(255 / 255, 240 / 255, 169 / 255), - grDevices::rgb(255 / 255, 233 / 255, 153 / 255), - grDevices::rgb(254 / 255, 225 / 255, 136 / 255), - grDevices::rgb(254 / 255, 218 / 255, 120 / 255), - grDevices::rgb(254 / 255, 204 / 255, 104 / 255), - grDevices::rgb(254 / 255, 188 / 255, 87 / 255), - grDevices::rgb(254 / 255, 174 / 255, 74 / 255), - grDevices::rgb(253 / 255, 159 / 255, 67 / 255), - grDevices::rgb(253 / 255, 145 / 255, 61 / 255), - grDevices::rgb(253 / 255, 125 / 255, 54 / 255), - grDevices::rgb(252 / 255, 101 / 255, 47 / 255), - grDevices::rgb(250 / 255,75 / 255, 41 / 255), - grDevices::rgb(240 / 255, 58 / 255, 35 / 255), - grDevices::rgb(231 / 255, 38 / 255, 30 / 255), - grDevices::rgb(215 / 255, 20 / 255, 30 / 255), - grDevices::rgb(196 / 255, 10 / 255, 34 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), - grDevices::rgb(255 / 255, 248 / 255, 187 / 255), - grDevices::rgb(255 / 255, 241 / 255, 171 / 255), - grDevices::rgb(255 / 255, 234 / 255, 155 / 255), - grDevices::rgb(254 / 255, 227 / 255, 140 / 255), - grDevices::rgb(254 / 255, 220 / 255, 124 / 255), - grDevices::rgb(254 / 255, 208 / 255, 109 / 255), - grDevices::rgb(254 / 255, 194 / 255, 93 / 255), - grDevices::rgb(254 / 255, 180 / 255, 78 / 255), - grDevices::rgb(253 / 255, 166 / 255,70 / 255), - grDevices::rgb(253 / 255, 152 / 255, 64 / 255), - grDevices::rgb(253 / 255, 138 / 255, 58 / 255), - grDevices::rgb(253 / 255, 117 / 255, 52 / 255), - grDevices::rgb(252 / 255, 93 / 255, 45 / 255), - grDevices::rgb(248 / 255,71 / 255, 39 / 255), - grDevices::rgb(238 / 255, 54 / 255, 34 / 255), - grDevices::rgb(229 / 255, 33 / 255, 29 / 255), - grDevices::rgb(213 / 255, 19 / 255, 31 / 255), - grDevices::rgb(195 / 255, 9 / 255, 35 / 255), - grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), - "type" = "sequential" - ), - "PuRd" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(231 / 255, 225 / 255, 239 / 255), - grDevices::rgb(221 / 255, 28 / 255, 119 / 255)), - "3" = tibble::lst(grDevices::rgb(231 / 255, 225 / 255, 239 / 255), - grDevices::rgb(201 / 255, 148 / 255, 199 / 255), - grDevices::rgb(221 / 255, 28 / 255, 119 / 255)), - "4" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), - grDevices::rgb(215 / 255, 181 / 255, 216 / 255), - grDevices::rgb(223 / 255, 101 / 255, 176 / 255), - grDevices::rgb(206 / 255, 18 / 255, 86 / 255)), - "5" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), - grDevices::rgb(215 / 255, 181 / 255, 216 / 255), - grDevices::rgb(223 / 255, 101 / 255, 176 / 255), - grDevices::rgb(221 / 255, 28 / 255, 119 / 255), - grDevices::rgb(152 / 255, 0 / 255, 67 / 255)), - "6" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), - grDevices::rgb(212 / 255, 185 / 255, 218 / 255), - grDevices::rgb(201 / 255, 148 / 255, 199 / 255), - grDevices::rgb(223 / 255, 101 / 255, 176 / 255), - grDevices::rgb(221 / 255, 28 / 255, 119 / 255), - grDevices::rgb(152 / 255, 0 / 255, 67 / 255)), - "7" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), - grDevices::rgb(212 / 255, 185 / 255, 218 / 255), - grDevices::rgb(201 / 255, 148 / 255, 199 / 255), - grDevices::rgb(223 / 255, 101 / 255, 176 / 255), - grDevices::rgb(231 / 255, 41 / 255, 138 / 255), - grDevices::rgb(206 / 255, 18 / 255, 86 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "8" = tibble::lst(grDevices::rgb(247 / 255, 244 / 255, 249 / 255), - grDevices::rgb(231 / 255, 225 / 255, 239 / 255), - grDevices::rgb(212 / 255, 185 / 255, 218 / 255), - grDevices::rgb(201 / 255, 148 / 255, 199 / 255), - grDevices::rgb(223 / 255, 101 / 255, 176 / 255), - grDevices::rgb(231 / 255, 41 / 255, 138 / 255), - grDevices::rgb(206 / 255, 18 / 255, 86 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "9" = tibble::lst(grDevices::rgb(247 / 255, 244 / 255, 249 / 255), - grDevices::rgb(231 / 255, 225 / 255, 239 / 255), - grDevices::rgb(212 / 255, 185 / 255, 218 / 255), - grDevices::rgb(201 / 255, 148 / 255, 199 / 255), - grDevices::rgb(223 / 255, 101 / 255, 176 / 255), - grDevices::rgb(231 / 255, 41 / 255, 138 / 255), - grDevices::rgb(206 / 255, 18 / 255, 86 / 255), - grDevices::rgb(152 / 255, 0 / 255, 67 / 255), - grDevices::rgb(103 / 255, 0 / 255, 31 / 255)), - "10" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(234 / 255, 229 / 255, 241 / 255), - grDevices::rgb(220 / 255, 202 / 255, 227 / 255), - grDevices::rgb(208 / 255, 172 / 255, 211 / 255), - grDevices::rgb(203 / 255, 143 / 255, 196 / 255), - grDevices::rgb(220 / 255, 106 / 255, 178 / 255), - grDevices::rgb(229 / 255, 66 / 255, 150 / 255), - grDevices::rgb(220 / 255, 31 / 255, 114 / 255), - grDevices::rgb(192 / 255, 13 / 255, 80 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "11" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(235 / 255, 230 / 255, 241 / 255), - grDevices::rgb(223 / 255, 208 / 255, 230 / 255), - grDevices::rgb(210 / 255, 181 / 255, 216 / 255), - grDevices::rgb(203 / 255, 155 / 255, 202 / 255), - grDevices::rgb(213 / 255, 126 / 255, 187 / 255), - grDevices::rgb(225 / 255, 91 / 255, 168 / 255), - grDevices::rgb(230 / 255, 49 / 255, 141 / 255), - grDevices::rgb(216 / 255, 27 / 255, 106 / 255), - grDevices::rgb(187 / 255, 11 / 255, 78 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "12" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(236 / 255, 231 / 255, 242 / 255), - grDevices::rgb(225 / 255, 214 / 255, 233 / 255), - grDevices::rgb(213 / 255, 188 / 255, 219 / 255), - grDevices::rgb(206 / 255, 164 / 255, 207 / 255), - grDevices::rgb(205 / 255, 140 / 255, 194 / 255), - grDevices::rgb(219 / 255, 110 / 255, 180 / 255), - grDevices::rgb(227 / 255, 78 / 255, 158 / 255), - grDevices::rgb(228 / 255, 39 / 255, 133 / 255), - grDevices::rgb(213 / 255, 24 / 255, 99 / 255), - grDevices::rgb(183 / 255, 10 / 255,77 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "13" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(237 / 255, 232 / 255, 243 / 255), - grDevices::rgb(227 / 255, 218 / 255, 235 / 255), - grDevices::rgb(216 / 255, 194 / 255, 223 / 255), - grDevices::rgb(208 / 255, 172 / 255, 211 / 255), - grDevices::rgb(201 / 255, 151 / 255, 200 / 255), - grDevices::rgb(213 / 255, 126 / 255, 187 / 255), - grDevices::rgb(223 / 255, 97 / 255, 172 / 255), - grDevices::rgb(229 / 255, 66 / 255, 150 / 255), - grDevices::rgb(224 / 255, 35 / 255, 124 / 255), - grDevices::rgb(210 / 255, 22 / 255, 94 / 255), - grDevices::rgb(180 / 255, 9 / 255, 76 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "14" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(238 / 255, 233 / 255, 243 / 255), - grDevices::rgb(229 / 255, 221 / 255, 237 / 255), - grDevices::rgb(219 / 255, 200 / 255, 226 / 255), - grDevices::rgb(210 / 255, 179 / 255, 215 / 255), - grDevices::rgb(204 / 255, 159 / 255, 204 / 255), - grDevices::rgb(206 / 255, 138 / 255, 193 / 255), - grDevices::rgb(218 / 255, 113 / 255, 181 / 255), - grDevices::rgb(226 / 255, 86 / 255, 164 / 255), - grDevices::rgb(230 / 255, 53 / 255, 143 / 255), - grDevices::rgb(221 / 255, 32 / 255, 117 / 255), - grDevices::rgb(208 / 255, 20 / 255, 89 / 255), - grDevices::rgb(177 / 255, 8 / 255, 75 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "15" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(238 / 255, 234 / 255, 243 / 255), - grDevices::rgb(230 / 255, 224 / 255, 238 / 255), - grDevices::rgb(221 / 255, 204 / 255, 228 / 255), - grDevices::rgb(211 / 255, 184 / 255, 217 / 255), - grDevices::rgb(206 / 255, 166 / 255, 208 / 255), - grDevices::rgb(201 / 255, 147 / 255, 198 / 255), - grDevices::rgb(213 / 255, 126 / 255, 187 / 255), - grDevices::rgb(223 / 255, 101 / 255, 176 / 255), - grDevices::rgb(227 / 255, 76 / 255, 156 / 255), - grDevices::rgb(230 / 255, 40 / 255, 138 / 255), - grDevices::rgb(218 / 255, 30 / 255, 111 / 255), - grDevices::rgb(205 / 255, 18 / 255, 85 / 255), - grDevices::rgb(175 / 255,7 / 255,74 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "16" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(239 / 255, 235 / 255, 244 / 255), - grDevices::rgb(232 / 255, 226 / 255, 239 / 255), - grDevices::rgb(223 / 255, 208 / 255, 230 / 255), - grDevices::rgb(214 / 255, 190 / 255, 220 / 255), - grDevices::rgb(208 / 255, 172 / 255, 211 / 255), - grDevices::rgb(203 / 255, 155 / 255, 202 / 255), - grDevices::rgb(207 / 255, 136 / 255, 192 / 255), - grDevices::rgb(217 / 255, 114 / 255, 182 / 255), - grDevices::rgb(225 / 255, 91 / 255, 168 / 255), - grDevices::rgb(229 / 255, 66 / 255, 150 / 255), - grDevices::rgb(227 / 255, 38 / 255, 130 / 255), - grDevices::rgb(216 / 255, 27 / 255, 106 / 255), - grDevices::rgb(201 / 255, 16 / 255, 84 / 255), - grDevices::rgb(172 / 255, 7 / 255,73 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "17" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(239 / 255, 235 / 255, 244 / 255), - grDevices::rgb(232 / 255, 227 / 255, 240 / 255), - grDevices::rgb(225 / 255, 212 / 255, 232 / 255), - grDevices::rgb(216 / 255, 194 / 255, 223 / 255), - grDevices::rgb(210 / 255, 178 / 255, 214 / 255), - grDevices::rgb(205 / 255, 161 / 255, 206 / 255), - grDevices::rgb(202 / 255, 145 / 255, 197 / 255), - grDevices::rgb(213 / 255, 126 / 255, 187 / 255), - grDevices::rgb(221 / 255, 104 / 255, 177 / 255), - grDevices::rgb(226 / 255, 82 / 255, 161 / 255), - grDevices::rgb(229 / 255, 56 / 255, 144 / 255), - grDevices::rgb(224 / 255, 35 / 255, 124 / 255), - grDevices::rgb(214 / 255, 25 / 255, 101 / 255), - grDevices::rgb(198 / 255, 15 / 255, 83 / 255), - grDevices::rgb(171 / 255, 6 / 255, 72 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "18" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(240 / 255, 236 / 255, 244 / 255), - grDevices::rgb(233 / 255, 228 / 255, 240 / 255), - grDevices::rgb(226 / 255, 215 / 255, 234 / 255), - grDevices::rgb(218 / 255, 199 / 255, 225 / 255), - grDevices::rgb(211 / 255, 182 / 255, 216 / 255), - grDevices::rgb(207 / 255, 167 / 255, 209 / 255), - grDevices::rgb(202 / 255, 152 / 255, 201 / 255), - grDevices::rgb(208 / 255, 135 / 255, 192 / 255), - grDevices::rgb(217 / 255, 116 / 255, 182 / 255), - grDevices::rgb(224 / 255, 95 / 255, 171 / 255), - grDevices::rgb(228 / 255, 74 / 255, 155 / 255), - grDevices::rgb(230 / 255, 46 / 255, 140 / 255), - grDevices::rgb(222 / 255, 33 / 255, 119 / 255), - grDevices::rgb(212 / 255, 24 / 255, 97 / 255), - grDevices::rgb(194 / 255, 14 / 255, 81 / 255), - grDevices::rgb(169 / 255, 6 / 255,72 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "19" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(240 / 255, 236 / 255, 245 / 255), - grDevices::rgb(234 / 255, 229 / 255, 241 / 255), - grDevices::rgb(227 / 255, 218 / 255, 235 / 255), - grDevices::rgb(220 / 255, 202 / 255, 227 / 255), - grDevices::rgb(213 / 255, 187 / 255, 219 / 255), - grDevices::rgb(208 / 255, 172 / 255, 211 / 255), - grDevices::rgb(204 / 255, 158 / 255, 204 / 255), - grDevices::rgb(203 / 255, 143 / 255, 196 / 255), - grDevices::rgb(213 / 255, 126 / 255, 187 / 255), - grDevices::rgb(220 / 255, 106 / 255, 178 / 255), - grDevices::rgb(225 / 255, 87 / 255, 165 / 255), - grDevices::rgb(229 / 255, 66 / 255, 150 / 255), - grDevices::rgb(229 / 255, 39 / 255, 135 / 255), - grDevices::rgb(220 / 255, 31 / 255, 114 / 255), - grDevices::rgb(210 / 255, 22 / 255, 94 / 255), - grDevices::rgb(192 / 255, 13 / 255, 80 / 255), - grDevices::rgb(168 / 255, 5 / 255, 71 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "20" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), - grDevices::rgb(241 / 255, 236 / 255, 245 / 255), - grDevices::rgb(235 / 255, 229 / 255, 241 / 255), - grDevices::rgb(229 / 255, 220 / 255, 236 / 255), - grDevices::rgb(222 / 255, 205 / 255, 229 / 255), - grDevices::rgb(215 / 255, 191 / 255, 221 / 255), - grDevices::rgb(209 / 255, 177 / 255, 213 / 255), - grDevices::rgb(205 / 255, 163 / 255, 206 / 255), - grDevices::rgb(201 / 255, 149 / 255, 199 / 255), - grDevices::rgb(208 / 255, 134 / 255, 191 / 255), - grDevices::rgb(216 / 255, 117 / 255, 183 / 255), - grDevices::rgb(223 / 255, 98 / 255, 173 / 255), - grDevices::rgb(227 / 255, 80 / 255, 159 / 255), - grDevices::rgb(229 / 255, 58 / 255, 145 / 255), - grDevices::rgb(227 / 255, 37 / 255, 129 / 255), - grDevices::rgb(218 / 255, 29 / 255, 110 / 255), - grDevices::rgb(208 / 255, 20 / 255, 91 / 255), - grDevices::rgb(189 / 255, 12 / 255, 79 / 255), - grDevices::rgb(167 / 255, 5 / 255,71 / 255), - grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), - "type" = "sequential" - ), - "Blues" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(222 / 255, 235 / 255, 247 / 255), - grDevices::rgb(49 / 255, 130 / 255, 189 / 255)), - "3" = tibble::lst(grDevices::rgb(222 / 255, 235 / 255, 247 / 255), - grDevices::rgb(158 / 255, 202 / 255, 225 / 255), - grDevices::rgb(49 / 255, 130 / 255, 189 / 255)), - "4" = tibble::lst(grDevices::rgb(239 / 255, 243 / 255, 255 / 255), - grDevices::rgb(189 / 255, 215 / 255, 231 / 255), - grDevices::rgb(107 / 255, 174 / 255, 214 / 255), - grDevices::rgb(33 / 255, 113 / 255, 181 / 255)), - "5" = tibble::lst(grDevices::rgb(239 / 255, 243 / 255, 255 / 255), - grDevices::rgb(189 / 255, 215 / 255, 231 / 255), - grDevices::rgb(107 / 255, 174 / 255, 214 / 255), - grDevices::rgb(49 / 255, 130 / 255, 189 / 255), - grDevices::rgb(8 / 255, 81 / 255, 156 / 255)), - "6" = tibble::lst(grDevices::rgb(239 / 255, 243 / 255, 255 / 255), - grDevices::rgb(198 / 255, 219 / 255, 239 / 255), - grDevices::rgb(158 / 255, 202 / 255, 225 / 255), - grDevices::rgb(107 / 255, 174 / 255, 214 / 255), - grDevices::rgb(49 / 255, 130 / 255, 189 / 255), - grDevices::rgb(8 / 255, 81 / 255, 156 / 255)), - "7" = tibble::lst(grDevices::rgb(239 / 255, 243 / 255, 255 / 255), - grDevices::rgb(198 / 255, 219 / 255, 239 / 255), - grDevices::rgb(158 / 255, 202 / 255, 225 / 255), - grDevices::rgb(107 / 255, 174 / 255, 214 / 255), - grDevices::rgb(66 / 255, 146 / 255, 198 / 255), - grDevices::rgb(33 / 255, 113 / 255, 181 / 255), - grDevices::rgb(8 / 255, 69 / 255, 148 / 255)), - "8" = tibble::lst(grDevices::rgb(247 / 255, 251 / 255, 255 / 255), - grDevices::rgb(222 / 255, 235 / 255, 247 / 255), - grDevices::rgb(198 / 255, 219 / 255, 239 / 255), - grDevices::rgb(158 / 255, 202 / 255, 225 / 255), - grDevices::rgb(107 / 255, 174 / 255, 214 / 255), - grDevices::rgb(66 / 255, 146 / 255, 198 / 255), - grDevices::rgb(33 / 255, 113 / 255, 181 / 255), - grDevices::rgb(8 / 255, 69 / 255, 148 / 255)), - "9" = tibble::lst(grDevices::rgb(247 / 255, 251 / 255, 255 / 255), - grDevices::rgb(222 / 255, 235 / 255, 247 / 255), - grDevices::rgb(198 / 255, 219 / 255, 239 / 255), - grDevices::rgb(158 / 255, 202 / 255, 225 / 255), - grDevices::rgb(107 / 255, 174 / 255, 214 / 255), - grDevices::rgb(66 / 255, 146 / 255, 198 / 255), - grDevices::rgb(33 / 255, 113 / 255, 181 / 255), - grDevices::rgb(8 / 255, 81 / 255, 156 / 255), - grDevices::rgb(8 / 255, 48 / 255, 107 / 255)), - "10" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(227 / 255, 238 / 255, 248 / 255), - grDevices::rgb(208 / 255, 226 / 255, 242 / 255), - grDevices::rgb(184 / 255, 213 / 255, 234 / 255), - grDevices::rgb(152 / 255, 198 / 255, 223 / 255), - grDevices::rgb(113 / 255, 177 / 255, 215 / 255), - grDevices::rgb(80 / 255, 155 / 255, 203 / 255), - grDevices::rgb(53 / 255, 131 / 255, 190 / 255), - grDevices::rgb(29 / 255, 102 / 255, 173 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "11" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(229 / 255, 239 / 255, 249 / 255), - grDevices::rgb(212 / 255, 228 / 255, 243 / 255), - grDevices::rgb(194 / 255, 217 / 255, 237 / 255), - grDevices::rgb(166 / 255, 205 / 255, 227 / 255), - grDevices::rgb(133 / 255, 187 / 255, 219 / 255), - grDevices::rgb(99 / 255, 168 / 255, 210 / 255), - grDevices::rgb(70 / 255, 148 / 255, 199 / 255), - grDevices::rgb(48 / 255, 126 / 255, 187 / 255), - grDevices::rgb(27 / 255, 99 / 255, 171 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "12" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(231 / 255, 240 / 255, 249 / 255), - grDevices::rgb(215 / 255, 230 / 255, 244 / 255), - grDevices::rgb(200 / 255, 220 / 255, 239 / 255), - grDevices::rgb(176 / 255, 209 / 255, 231 / 255), - grDevices::rgb(149 / 255, 196 / 255, 223 / 255), - grDevices::rgb(117 / 255, 179 / 255, 216 / 255), - grDevices::rgb(89 / 255, 161 / 255, 206 / 255), - grDevices::rgb(63 / 255, 142 / 255, 196 / 255), - grDevices::rgb(43 / 255, 121 / 255, 185 / 255), - grDevices::rgb(26 / 255, 96 / 255, 168 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "13" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(232 / 255, 241 / 255, 250 / 255), - grDevices::rgb(218 / 255, 232 / 255, 245 / 255), - grDevices::rgb(204 / 255, 222 / 255, 241 / 255), - grDevices::rgb(184 / 255, 213 / 255, 234 / 255), - grDevices::rgb(161 / 255, 203 / 255, 226 / 255), - grDevices::rgb(133 / 255, 187 / 255, 219 / 255), - grDevices::rgb(103 / 255, 171 / 255, 212 / 255), - grDevices::rgb(80 / 255, 155 / 255, 203 / 255), - grDevices::rgb(59 / 255, 137 / 255, 193 / 255), - grDevices::rgb(39 / 255, 118 / 255, 183 / 255), - grDevices::rgb(25 / 255, 94 / 255, 167 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "14" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(233 / 255, 242 / 255, 250 / 255), - grDevices::rgb(220 / 255, 233 / 255, 246 / 255), - grDevices::rgb(207 / 255, 225 / 255, 242 / 255), - grDevices::rgb(191 / 255, 216 / 255, 236 / 255), - grDevices::rgb(170 / 255, 207 / 255, 229 / 255), - grDevices::rgb(146 / 255, 195 / 255, 222 / 255), - grDevices::rgb(119 / 255, 180 / 255, 216 / 255), - grDevices::rgb(95 / 255, 165 / 255, 209 / 255), - grDevices::rgb(73 / 255, 150 / 255, 200 / 255), - grDevices::rgb(55 / 255, 133 / 255, 191 / 255), - grDevices::rgb(36 / 255, 115 / 255, 182 / 255), - grDevices::rgb(24 / 255, 92 / 255, 165 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "15" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(234 / 255, 242 / 255, 251 / 255), - grDevices::rgb(222 / 255, 235 / 255, 247 / 255), - grDevices::rgb(210 / 255, 226 / 255, 243 / 255), - grDevices::rgb(197 / 255, 218 / 255, 238 / 255), - grDevices::rgb(178 / 255, 210 / 255, 231 / 255), - grDevices::rgb(158 / 255, 202 / 255, 224 / 255), - grDevices::rgb(133 / 255, 187 / 255, 219 / 255), - grDevices::rgb(107 / 255, 173 / 255, 214 / 255), - grDevices::rgb(87 / 255, 159 / 255, 205 / 255), - grDevices::rgb(65 / 255, 146 / 255, 197 / 255), - grDevices::rgb(51 / 255, 129 / 255, 189 / 255), - grDevices::rgb(32 / 255, 113 / 255, 180 / 255), - grDevices::rgb(23 / 255, 90 / 255, 164 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "16" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(235 / 255, 243 / 255, 251 / 255), - grDevices::rgb(223 / 255, 236 / 255, 247 / 255), - grDevices::rgb(212 / 255, 228 / 255, 243 / 255), - grDevices::rgb(201 / 255, 221 / 255, 240 / 255), - grDevices::rgb(184 / 255, 213 / 255, 234 / 255), - grDevices::rgb(166 / 255, 205 / 255, 227 / 255), - grDevices::rgb(145 / 255, 194 / 255, 222 / 255), - grDevices::rgb(121 / 255, 181 / 255, 216 / 255), - grDevices::rgb(99 / 255, 168 / 255, 210 / 255), - grDevices::rgb(80 / 255, 155 / 255, 203 / 255), - grDevices::rgb(62 / 255, 141 / 255, 195 / 255), - grDevices::rgb(48 / 255, 126 / 255, 187 / 255), - grDevices::rgb(31 / 255, 109 / 255, 178 / 255), - grDevices::rgb(22 / 255, 89 / 255, 163 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "17" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(236 / 255, 243 / 255, 251 / 255), - grDevices::rgb(225 / 255, 236 / 255, 248 / 255), - grDevices::rgb(214 / 255, 229 / 255, 244 / 255), - grDevices::rgb(204 / 255, 222 / 255, 241 / 255), - grDevices::rgb(190 / 255, 215 / 255, 236 / 255), - grDevices::rgb(173 / 255, 208 / 255, 230 / 255), - grDevices::rgb(155 / 255, 200 / 255, 224 / 255), - grDevices::rgb(133 / 255, 187 / 255, 219 / 255), - grDevices::rgb(110 / 255, 175 / 255, 214 / 255), - grDevices::rgb(92 / 255, 163 / 255, 207 / 255), - grDevices::rgb(74 / 255, 151 / 255, 200 / 255), - grDevices::rgb(59 / 255, 137 / 255, 193 / 255), - grDevices::rgb(45 / 255, 123 / 255, 186 / 255), - grDevices::rgb(30 / 255, 107 / 255, 176 / 255), - grDevices::rgb(22 / 255, 87 / 255, 162 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "18" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(236 / 255, 244 / 255, 251 / 255), - grDevices::rgb(226 / 255, 237 / 255, 248 / 255), - grDevices::rgb(216 / 255, 231 / 255, 245 / 255), - grDevices::rgb(206 / 255, 224 / 255, 241 / 255), - grDevices::rgb(195 / 255, 217 / 255, 238 / 255), - grDevices::rgb(179 / 255, 210 / 255, 232 / 255), - grDevices::rgb(162 / 255, 203 / 255, 226 / 255), - grDevices::rgb(143 / 255, 193 / 255, 221 / 255), - grDevices::rgb(122 / 255, 182 / 255, 217 / 255), - grDevices::rgb(102 / 255, 170 / 255, 212 / 255), - grDevices::rgb(86 / 255, 159 / 255, 205 / 255), - grDevices::rgb(68 / 255, 147 / 255, 198 / 255), - grDevices::rgb(55 / 255, 134 / 255, 192 / 255), - grDevices::rgb(42 / 255, 120 / 255, 185 / 255), - grDevices::rgb(30 / 255, 105 / 255, 175 / 255), - grDevices::rgb(21 / 255, 86 / 255, 161 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "19" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(237 / 255, 244 / 255, 251 / 255), - grDevices::rgb(227 / 255, 238 / 255, 248 / 255), - grDevices::rgb(218 / 255, 232 / 255, 245 / 255), - grDevices::rgb(208 / 255, 226 / 255, 242 / 255), - grDevices::rgb(199 / 255, 219 / 255, 239 / 255), - grDevices::rgb(184 / 255, 213 / 255, 234 / 255), - grDevices::rgb(169 / 255, 206 / 255, 228 / 255), - grDevices::rgb(152 / 255, 198 / 255, 223 / 255), - grDevices::rgb(133 / 255, 187 / 255, 219 / 255), - grDevices::rgb(113 / 255, 177 / 255, 215 / 255), - grDevices::rgb(96 / 255, 166 / 255, 209 / 255), - grDevices::rgb(80 / 255, 155 / 255, 203 / 255), - grDevices::rgb(64 / 255, 144 / 255, 197 / 255), - grDevices::rgb(53 / 255, 131 / 255, 190 / 255), - grDevices::rgb(39 / 255, 118 / 255, 183 / 255), - grDevices::rgb(29 / 255, 102 / 255, 173 / 255), - grDevices::rgb(20 / 255, 85 / 255, 160 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "20" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), - grDevices::rgb(237 / 255, 245 / 255, 252 / 255), - grDevices::rgb(228 / 255, 239 / 255, 249 / 255), - grDevices::rgb(219 / 255, 233 / 255, 246 / 255), - grDevices::rgb(210 / 255, 227 / 255, 243 / 255), - grDevices::rgb(201 / 255, 221 / 255, 240 / 255), - grDevices::rgb(189 / 255, 215 / 255, 236 / 255), - grDevices::rgb(175 / 255, 209 / 255, 230 / 255), - grDevices::rgb(160 / 255, 202 / 255, 225 / 255), - grDevices::rgb(142 / 255, 193 / 255, 221 / 255), - grDevices::rgb(124 / 255, 182 / 255, 217 / 255), - grDevices::rgb(105 / 255, 172 / 255, 213 / 255), - grDevices::rgb(90 / 255, 162 / 255, 207 / 255), - grDevices::rgb(75 / 255, 151 / 255, 201 / 255), - grDevices::rgb(61 / 255, 140 / 255, 195 / 255), - grDevices::rgb(50 / 255, 128 / 255, 189 / 255), - grDevices::rgb(37 / 255, 116 / 255, 182 / 255), - grDevices::rgb(28 / 255, 101 / 255, 172 / 255), - grDevices::rgb(20 / 255, 84 / 255, 160 / 255), - grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), - "type" = "sequential" - ), - "PuBuGn" = tibble::lst( - "1" = tibble::lst(), - "2" = tibble::lst(grDevices::rgb(236 / 255, 226 / 255, 240 / 255), - grDevices::rgb(28 / 255, 144 / 255, 153 / 255)), - "3" = tibble::lst(grDevices::rgb(236 / 255, 226 / 255, 240 / 255), - grDevices::rgb(166 / 255, 189 / 255, 219 / 255), - grDevices::rgb(28 / 255, 144 / 255, 153 / 255)), - "4" = tibble::lst(grDevices::rgb(246 / 255, 239 / 255, 247 / 255), - grDevices::rgb(189 / 255, 201 / 255, 225 / 255), - grDevices::rgb(103 / 255, 169 / 255, 207 / 255), - grDevices::rgb(2 / 255, 129 / 255, 138 / 255)), - "5" = tibble::lst(grDevices::rgb(246 / 255, 239 / 255, 247 / 255), - grDevices::rgb(189 / 255, 201 / 255, 225 / 255), - grDevices::rgb(103 / 255, 169 / 255, 207 / 255), - grDevices::rgb(28 / 255, 144 / 255, 153 / 255), - grDevices::rgb(1 / 255, 108 / 255, 89 / 255)), - "6" = tibble::lst(grDevices::rgb(246 / 255, 239 / 255, 247 / 255), - grDevices::rgb(208 / 255, 209 / 255, 230 / 255), - grDevices::rgb(166 / 255, 189 / 255, 219 / 255), - grDevices::rgb(103 / 255, 169 / 255, 207 / 255), - grDevices::rgb(28 / 255, 144 / 255, 153 / 255), - grDevices::rgb(1 / 255, 108 / 255, 89 / 255)), - "7" = tibble::lst(grDevices::rgb(246 / 255, 239 / 255, 247 / 255), - grDevices::rgb(208 / 255, 209 / 255, 230 / 255), - grDevices::rgb(166 / 255, 189 / 255, 219 / 255), - grDevices::rgb(103 / 255, 169 / 255, 207 / 255), - grDevices::rgb(54 / 255, 144 / 255, 192 / 255), - grDevices::rgb(2 / 255, 129 / 255, 138 / 255), - grDevices::rgb(1 / 255, 100 / 255, 80 / 255)), - "8" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 251 / 255), - grDevices::rgb(236 / 255, 226 / 255, 240 / 255), - grDevices::rgb(208 / 255, 209 / 255, 230 / 255), - grDevices::rgb(166 / 255, 189 / 255, 219 / 255), - grDevices::rgb(103 / 255, 169 / 255, 207 / 255), - grDevices::rgb(54 / 255, 144 / 255, 192 / 255), - grDevices::rgb(2 / 255, 129 / 255, 138 / 255), - grDevices::rgb(1 / 255, 100 / 255, 80 / 255)), - "9" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 251 / 255), - grDevices::rgb(236 / 255, 226 / 255, 240 / 255), - grDevices::rgb(208 / 255, 209 / 255, 230 / 255), - grDevices::rgb(166 / 255, 189 / 255, 219 / 255), - grDevices::rgb(103 / 255, 169 / 255, 207 / 255), - grDevices::rgb(54 / 255, 144 / 255, 192 / 255), - grDevices::rgb(2 / 255, 129 / 255, 138 / 255), - grDevices::rgb(1 / 255, 108 / 255, 89 / 255), - grDevices::rgb(1 / 255, 70 / 255, 54 / 255)), - "10" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(240 / 255, 230 / 255, 242 / 255), - grDevices::rgb(220 / 255, 216 / 255, 234 / 255), - grDevices::rgb(194 / 255, 202 / 255, 226 / 255), - grDevices::rgb(159 / 255, 186 / 255, 217 / 255), - grDevices::rgb(110 / 255, 171 / 255, 208 / 255), - grDevices::rgb(72 / 255, 152 / 255, 196 / 255), - grDevices::rgb(37 / 255, 137 / 255, 167 / 255), - grDevices::rgb(4 / 255, 122 / 255, 124 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "11" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(241 / 255, 232 / 255, 243 / 255), - grDevices::rgb(224 / 255, 219 / 255, 235 / 255), - grDevices::rgb(203 / 255, 206 / 255, 228 / 255), - grDevices::rgb(174 / 255, 192 / 255, 221 / 255), - grDevices::rgb(136 / 255, 179 / 255, 213 / 255), - grDevices::rgb(94 / 255, 163 / 255, 203 / 255), - grDevices::rgb(60 / 255, 146 / 255, 193 / 255), - grDevices::rgb(31 / 255, 135 / 255, 159 / 255), - grDevices::rgb(4 / 255, 120 / 255, 120 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "12" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(242 / 255, 233 / 255, 243 / 255), - grDevices::rgb(228 / 255, 221 / 255, 237 / 255), - grDevices::rgb(210 / 255, 210 / 255, 230 / 255), - grDevices::rgb(185 / 255, 198 / 255, 224 / 255), - grDevices::rgb(155 / 255, 185 / 255, 216 / 255), - grDevices::rgb(115 / 255, 172 / 255, 209 / 255), - grDevices::rgb(82 / 255, 157 / 255, 200 / 255), - grDevices::rgb(51 / 255, 142 / 255, 186 / 255), - grDevices::rgb(24 / 255, 133 / 255, 152 / 255), - grDevices::rgb(5 / 255, 118 / 255, 116 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "13" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(243 / 255, 234 / 255, 244 / 255), - grDevices::rgb(231 / 255, 223 / 255, 238 / 255), - grDevices::rgb(215 / 255, 213 / 255, 232 / 255), - grDevices::rgb(194 / 255, 202 / 255, 226 / 255), - grDevices::rgb(169 / 255, 190 / 255, 219 / 255), - grDevices::rgb(136 / 255, 179 / 255, 213 / 255), - grDevices::rgb(99 / 255, 166 / 255, 205 / 255), - grDevices::rgb(72 / 255, 152 / 255, 196 / 255), - grDevices::rgb(45 / 255, 140 / 255, 178 / 255), - grDevices::rgb(17 / 255, 131 / 255, 146 / 255), - grDevices::rgb(5 / 255, 116 / 255, 113 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "14" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(244 / 255, 235 / 255, 245 / 255), - grDevices::rgb(233 / 255, 224 / 255, 239 / 255), - grDevices::rgb(218 / 255, 215 / 255, 233 / 255), - grDevices::rgb(201 / 255, 205 / 255, 228 / 255), - grDevices::rgb(179 / 255, 195 / 255, 222 / 255), - grDevices::rgb(152 / 255, 184 / 255, 216 / 255), - grDevices::rgb(119 / 255, 173 / 255, 209 / 255), - grDevices::rgb(89 / 255, 161 / 255, 202 / 255), - grDevices::rgb(63 / 255, 147 / 255, 194 / 255), - grDevices::rgb(40 / 255, 138 / 255, 170 / 255), - grDevices::rgb(9 / 255, 130 / 255, 142 / 255), - grDevices::rgb(5 / 255, 115 / 255, 110 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "15" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(245 / 255, 236 / 255, 245 / 255), - grDevices::rgb(235 / 255, 225 / 255, 240 / 255), - grDevices::rgb(222 / 255, 217 / 255, 234 / 255), - grDevices::rgb(208 / 255, 209 / 255, 229 / 255), - grDevices::rgb(187 / 255, 198 / 255, 224 / 255), - grDevices::rgb(165 / 255, 189 / 255, 218 / 255), - grDevices::rgb(136 / 255, 179 / 255, 213 / 255), - grDevices::rgb(102 / 255, 169 / 255, 206 / 255), - grDevices::rgb(80 / 255, 156 / 255, 199 / 255), - grDevices::rgb(53 / 255, 144 / 255, 191 / 255), - grDevices::rgb(35 / 255, 136 / 255, 164 / 255), - grDevices::rgb(1 / 255, 128 / 255, 138 / 255), - grDevices::rgb(5 / 255, 114 / 255, 108 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "16" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(246 / 255, 237 / 255, 245 / 255), - grDevices::rgb(237 / 255, 227 / 255, 240 / 255), - grDevices::rgb(224 / 255, 219 / 255, 235 / 255), - grDevices::rgb(211 / 255, 211 / 255, 231 / 255), - grDevices::rgb(194 / 255, 202 / 255, 226 / 255), - grDevices::rgb(174 / 255, 192 / 255, 221 / 255), - grDevices::rgb(150 / 255, 183 / 255, 215 / 255), - grDevices::rgb(121 / 255, 174 / 255, 210 / 255), - grDevices::rgb(94 / 255, 163 / 255, 203 / 255), - grDevices::rgb(72 / 255, 152 / 255, 196 / 255), - grDevices::rgb(49 / 255, 142 / 255, 184 / 255), - grDevices::rgb(31 / 255, 135 / 255, 159 / 255), - grDevices::rgb(2 / 255, 127 / 255, 134 / 255), - grDevices::rgb(4 / 255, 113 / 255, 106 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "17" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(246 / 255, 237 / 255, 246 / 255), - grDevices::rgb(238 / 255, 228 / 255, 241 / 255), - grDevices::rgb(227 / 255, 220 / 255, 236 / 255), - grDevices::rgb(215 / 255, 213 / 255, 232 / 255), - grDevices::rgb(200 / 255, 205 / 255, 227 / 255), - grDevices::rgb(181 / 255, 196 / 255, 223 / 255), - grDevices::rgb(162 / 255, 187 / 255, 218 / 255), - grDevices::rgb(136 / 255, 179 / 255, 213 / 255), - grDevices::rgb(107 / 255, 170 / 255, 207 / 255), - grDevices::rgb(86 / 255, 159 / 255, 201 / 255), - grDevices::rgb(64 / 255, 148 / 255, 194 / 255), - grDevices::rgb(45 / 255, 140 / 255, 178 / 255), - grDevices::rgb(26 / 255, 133 / 255, 154 / 255), - grDevices::rgb(3 / 255, 125 / 255, 130 / 255), - grDevices::rgb(4 / 255, 112 / 255, 104 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "18" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(247 / 255, 238 / 255, 246 / 255), - grDevices::rgb(239 / 255, 229 / 255, 241 / 255), - grDevices::rgb(229 / 255, 221 / 255, 237 / 255), - grDevices::rgb(217 / 255, 214 / 255, 233 / 255), - grDevices::rgb(205 / 255, 207 / 255, 229 / 255), - grDevices::rgb(188 / 255, 199 / 255, 224 / 255), - grDevices::rgb(171 / 255, 191 / 255, 220 / 255), - grDevices::rgb(148 / 255, 183 / 255, 215 / 255), - grDevices::rgb(123 / 255, 174 / 255, 210 / 255), - grDevices::rgb(98 / 255, 166 / 255, 205 / 255), - grDevices::rgb(79 / 255, 155 / 255, 199 / 255), - grDevices::rgb(57 / 255, 145 / 255, 192 / 255), - grDevices::rgb(41 / 255, 138 / 255, 172 / 255), - grDevices::rgb(22 / 255, 132 / 255, 150 / 255), - grDevices::rgb(4 / 255, 123 / 255, 127 / 255), - grDevices::rgb(4 / 255, 111 / 255, 103 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "19" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(247 / 255, 238 / 255, 246 / 255), - grDevices::rgb(240 / 255, 230 / 255, 242 / 255), - grDevices::rgb(231 / 255, 223 / 255, 238 / 255), - grDevices::rgb(220 / 255, 216 / 255, 234 / 255), - grDevices::rgb(209 / 255, 209 / 255, 230 / 255), - grDevices::rgb(194 / 255, 202 / 255, 226 / 255), - grDevices::rgb(177 / 255, 194 / 255, 222 / 255), - grDevices::rgb(159 / 255, 186 / 255, 217 / 255), - grDevices::rgb(136 / 255, 179 / 255, 213 / 255), - grDevices::rgb(110 / 255, 171 / 255, 208 / 255), - grDevices::rgb(91 / 255, 161 / 255, 202 / 255), - grDevices::rgb(72 / 255, 152 / 255, 196 / 255), - grDevices::rgb(52 / 255, 143 / 255, 188 / 255), - grDevices::rgb(37 / 255, 137 / 255, 167 / 255), - grDevices::rgb(17 / 255, 131 / 255, 146 / 255), - grDevices::rgb(4 / 255, 122 / 255, 124 / 255), - grDevices::rgb(4 / 255, 111 / 255, 102 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "20" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), - grDevices::rgb(247 / 255, 239 / 255, 246 / 255), - grDevices::rgb(240 / 255, 231 / 255, 242 / 255), - grDevices::rgb(233 / 255, 224 / 255, 238 / 255), - grDevices::rgb(222 / 255, 217 / 255, 235 / 255), - grDevices::rgb(212 / 255, 211 / 255, 231 / 255), - grDevices::rgb(199 / 255, 204 / 255, 227 / 255), - grDevices::rgb(183 / 255, 197 / 255, 223 / 255), - grDevices::rgb(168 / 255, 190 / 255, 219 / 255), - grDevices::rgb(147 / 255, 182 / 255, 215 / 255), - grDevices::rgb(124 / 255, 175 / 255, 210 / 255), - grDevices::rgb(100 / 255, 167 / 255, 206 / 255), - grDevices::rgb(84 / 255, 158 / 255, 200 / 255), - grDevices::rgb(66 / 255, 149 / 255, 195 / 255), - grDevices::rgb(48 / 255, 141 / 255, 183 / 255), - grDevices::rgb(34 / 255, 136 / 255, 163 / 255), - grDevices::rgb(12 / 255, 130 / 255, 143 / 255), - grDevices::rgb(4 / 255, 121 / 255, 122 / 255), - grDevices::rgb(4 / 255, 110 / 255, 100 / 255), - grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), - "type" = "sequential" - ) -) - - +#' @title Brewer color schemes +#' @name sits_plot_title +#' +#' @description brewer color schemes names to be used with `sits_plot_dendrogram` +#' +#' @param name name of the brewer color set +#' @return name string - a common color set name +#' @export +sits_color_name <- function(name = NULL){ + # approximate equivalent names in ISCC-NBS system + # see http://en.wikipedia.or"g/wiki/ISCC-NBS_system + names <- tibble::lst("BuGn" = "BuGn", + "BlueishGreens" = "BuGn", + "BlueGreens" = "BuGn", + "BlueGreen" = "BuGn", + "BuPu" = "BuPu", + "BlueishPurples" = "BuPu", + "BluePurples" = "BuPu", + "BluePurple" = "BuPu", + "GnBu" = "GnBu", + "GreenishBlues" = "GnBu", + "GreenBlues" = "GnBu", + "GreenBlue" = "GnBu", + "OrRd" = "OrRd", + "OrangishReds" = "OrRd", + "OrangeReds" = "OrRd", + "OrangeRed" = "OrRd", + "PuBu" = "PuBu", + "PurplishBlues" = "PuBu", + "PurpleBlues" = "PuBu", + "PurpleBlue" = "PuBu", + "PuBuGn" = "PuBuGn", + "PurplishBlueGreens" = "PuBuGn", + "PurpleBlueGreens" = "PuBuGn", + "PurpleBlueGreen" = "PuBuGn", + "PuRd" = "PuRd", + "PurplishReds" = "PuRd", + "PurpleReds" = "PuRd", + "PurpleRed" = "PuRd", + "RdPu" = "RdPu", + "ReddishPurples" = "RdPu", + "RedPurples" = "RdPu", + "RedPurple" = "RdPu", + "YlGn" = "YlGn", + "YellowishGreens" = "YlGn", + "YellowGreens" = "YlGn", + "YellowGreen" = "YlGn", + "YlGnBu" = "YlGnBu", + "YellowishGreenBlues" = "YlGnBu", + "YellowGreenBlues" = "YlGnBu", + "YellowGreenBlue" = "YlGnBu", + "YlOrBr" = "YlOrBr", + "YellowishOrangeBrowns" = "YlOrBr", + "YellowOrangeBrowns" = "YlOrBr", + "YellowOrangeBrown" = "YlOrBr", + "YlOrRd" = "YlOrRd", + "YellowishOrangereds" = "YlOrRd", + "YellowOrangeReds" = "YlOrRd", + "YellowOrangeRed" = "YlOrRd", + "Blues" = "Blues", + "Blue" = "Blues", + "Greens" = "Greens", + "Green" = "Greens", + "Greys" = "Greys", + "Grey" = "Greys", + "Grays" = "Greys", + "Gray" = "Greys", + "Oranges" = "Oranges", + "Orange" = "Oranges", + "Purples" = "Purples", + "Purple" = "Purples", + "Reds" = "Reds", + "Red" = "Reds", + "BrBG" = "BrBG", + "BrownsBlueGrens" = "BrBG", + "BrownsWhiteBlueGreens" = "BrBG", + "BrownsWhiteBlueGreen" = "BrBG", + "BrownsBlueGreens" = "BrBG", + "BrownBlueGreen" = "BrBG", + "PiYG" = "PiYG", + "PurplesWhiteYellowGreens" = "PiYG", + "PurplesYellowGreens" = "PiYG", + "PurplesYellowGreen" = "PiYG", + "PurplesYellowsGreens" = "PiYG", + "PRGn" = "PRGn", + "PurpleRedsWhiteGreens" = "PRGn", + "PurplesRedsWhiteGreens" = "PRGn", + "PurplesRedsGreens" = "PRGn", + "PurpleRedWhiteGreen" = "PRGn", + "PurpleRedGreen" = "PRGn", + "PuOr" = "PuOr", + "PurplesWhiteOranges" = "PuOr", + "PurplesOranges" = "PuOr", + "PurpleOrange" = "PuOr", + "RdBu" = "RdBu", + "RedsWhiteBlues" = "RdBu", + "RedWhiteBlue" = "RdBu", + "RedBlue" = "RdBu", + "RedsBlues" = "RdBu", + "RdGy" = "RdGy", + "RedsWhiteGreys" = "RdGy", + "RedsGreys" = "RdGy", + "RedGrey" = "RdGy", + "RdYlBu" = "RdYlBu", + "ReddishYellowWhiteBlues" = "RdYlBu", + "RedsYellowsBlues" = "RdYlBu", + "RedYellowWhiteBlue" = "RdYlBu", + "RedYellowBlue" = "RdYlBu", + "RdYlGn" = "RdYlGn", + "ReddishYellowWhiteGreens" = "RdYlGn", + "RedsYellowsWhitesGreens" = "RdYlGn", + "RedYellowWhiteGreen" = "RdYlGn", + "RedsYellowsGreens" = "RdYlGn", + "RedYellowGreen" = "RdYlGn", + "Spectral" = "Spectral", + "Paired" = "Paired", + "Pastel1" = "Pastel1", + "Pastel2" = "Pastel2", + "Set1" = "Set1", + "Set2" = "Set2", + "Set3" = "Set3", + "Accent" = "Accent", + "Dark" = "Dark" + ) + if (is.null(name)) + return(names) + return(names[[name]]) +} + +#' @title Brewer color schemes +#' @name sits_max_colors +#' +#' @description Number of colors available in brewer color schemes +#' +#' @param brewer name of the brewer color set +#' @return numeric number of available colors +#' @export +sits_max_colors <- function(brewer = NULL){ + if (is.null(brewer)) + return(.sits_brewerRGB %>% purrr::map(function(sch){ + sum((sch %>% + purrr::map(function(n) length(n)) %>% + as.numeric()) > 1) + })) + return(sum((.sits_brewerRGB[[sits_color_name(brewer)]] %>% + purrr::map(function(n) length(n)) %>% + as.numeric()) > 1)) +} + +#' @title Brewer color schemes +#' @name sits_colors +#' +#' @description Number of colors available in brewer color schemes +#' +#' @param brewer name of the brewer color set +#' @param n number of desirable colors (default 3) +#' @return list list of rgb colors +#' @export +sits_colors <- function(brewer, n = 3){ + return(.sits_brewerRGB[[sits_color_name(name)]][[as.character(n)]]) +} + +# Brewer color set constant +# based on http://colorbrewer2.org colors' schemes +.sits_brewerRGB = tibble::lst( + "Spectral" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(153 / 255, 213 / 255, 148 / 255)), + "4" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(171 / 255, 221 / 255, 164 / 255), + grDevices::rgb(43 / 255, 131 / 255, 186 / 255)), + "5" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(171 / 255, 221 / 255, 164 / 255), + grDevices::rgb(43 / 255, 131 / 255, 186 / 255)), + "6" = tibble::lst(grDevices::rgb(213 / 255, 62 / 255, 79 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(230 / 255, 245 / 255, 152 / 255), + grDevices::rgb(153 / 255, 213 / 255, 148 / 255), + grDevices::rgb(50 / 255, 136 / 255, 189 / 255)), + "7" = tibble::lst(grDevices::rgb(213 / 255, 62 / 255, 79 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(230 / 255, 245 / 255, 152 / 255), + grDevices::rgb(153 / 255, 213 / 255, 148 / 255), + grDevices::rgb(50 / 255, 136 / 255, 189 / 255)), + "8" = tibble::lst(grDevices::rgb(213 / 255, 62 / 255, 79 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(230 / 255, 245 / 255, 152 / 255), + grDevices::rgb(171 / 255, 221 / 255, 164 / 255), + grDevices::rgb(102 / 255, 194 / 255, 165 / 255), + grDevices::rgb(50 / 255, 136 / 255, 189 / 255)), + "9" = tibble::lst(grDevices::rgb(213 / 255, 62 / 255, 79 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(230 / 255, 245 / 255, 152 / 255), + grDevices::rgb(171 / 255, 221 / 255, 164 / 255), + grDevices::rgb(102 / 255, 194 / 255, 165 / 255), + grDevices::rgb(50 / 255, 136 / 255, 189 / 255)), + "10" = tibble::lst(grDevices::rgb(158 / 255, 1 / 255, 66 / 255), + grDevices::rgb(213 / 255, 62 / 255, 79 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(230 / 255, 245 / 255, 152 / 255), + grDevices::rgb(171 / 255, 221 / 255, 164 / 255), + grDevices::rgb(102 / 255, 194 / 255, 165 / 255), + grDevices::rgb(50 / 255, 136 / 255, 189 / 255), + grDevices::rgb(94 / 255, 79 / 255, 162 / 255)), + "11" = tibble::lst(grDevices::rgb(158 / 255, 1 / 255, 66 / 255), + grDevices::rgb(213 / 255, 62 / 255, 79 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(230 / 255, 245 / 255, 152 / 255), + grDevices::rgb(171 / 255, 221 / 255, 164 / 255), + grDevices::rgb(102 / 255, 194 / 255, 165 / 255), + grDevices::rgb(50 / 255, 136 / 255, 189 / 255), + grDevices::rgb(94 / 255, 79 / 255, 162 / 255)), + "type" = "divergent" + ), + "RdYlGn" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(145 / 255, 207 / 255, 96 / 255)), + "4" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(166 / 255, 217 / 255, 106 / 255), + grDevices::rgb(26 / 255, 150 / 255, 65 / 255)), + "5" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(166 / 255, 217 / 255, 106 / 255), + grDevices::rgb(26 / 255, 150 / 255, 65 / 255)), + "6" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(217 / 255, 239 / 255, 139 / 255), + grDevices::rgb(145 / 255, 207 / 255, 96 / 255), + grDevices::rgb(26 / 255, 152 / 255, 80 / 255)), + "7" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(217 / 255, 239 / 255, 139 / 255), + grDevices::rgb(145 / 255, 207 / 255, 96 / 255), + grDevices::rgb(26 / 255, 152 / 255, 80 / 255)), + "8" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(217 / 255, 239 / 255, 139 / 255), + grDevices::rgb(166 / 255, 217 / 255, 106 / 255), + grDevices::rgb(102 / 255, 189 / 255, 99 / 255), + grDevices::rgb(26 / 255, 152 / 255, 80 / 255)), + "9" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(217 / 255, 239 / 255, 139 / 255), + grDevices::rgb(166 / 255, 217 / 255, 106 / 255), + grDevices::rgb(102 / 255, 189 / 255, 99 / 255), + grDevices::rgb(26 / 255, 152 / 255, 80 / 255)), + "10" = tibble::lst(grDevices::rgb(165 / 255, 0 / 255, 38 / 255), + grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(217 / 255, 239 / 255, 139 / 255), + grDevices::rgb(166 / 255, 217 / 255, 106 / 255), + grDevices::rgb(102 / 255, 189 / 255, 99 / 255), + grDevices::rgb(26 / 255, 152 / 255, 80 / 255), + grDevices::rgb(0 / 255, 104 / 255, 55 / 255)), + "11" = tibble::lst(grDevices::rgb(165 / 255, 0 / 255, 38 / 255), + grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 139 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(217 / 255, 239 / 255, 139 / 255), + grDevices::rgb(166 / 255, 217 / 255, 106 / 255), + grDevices::rgb(102 / 255, 189 / 255, 99 / 255), + grDevices::rgb(26 / 255, 152 / 255, 80 / 255), + grDevices::rgb(0 / 255, 104 / 255, 55 / 255)), + "type" = "divergent" + ), + "RdBu" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(239 / 255, 138 / 255, 98 / 255), + grDevices::rgb(103 / 255, 169 / 255, 207 / 255)), + "3" = tibble::lst(grDevices::rgb(239 / 255, 138 / 255, 98 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(103 / 255, 169 / 255, 207 / 255)), + "4" = tibble::lst(grDevices::rgb(202 / 255, 0 / 255, 32 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(146 / 255, 197 / 255, 222 / 255), + grDevices::rgb(5 / 255, 113 / 255, 176 / 255)), + "5" = tibble::lst(grDevices::rgb(202 / 255, 0 / 255, 32 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(146 / 255, 197 / 255, 222 / 255), + grDevices::rgb(5 / 255, 113 / 255, 176 / 255)), + "6" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(239 / 255, 138 / 255, 98 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(209 / 255, 229 / 255, 240 / 255), + grDevices::rgb(103 / 255, 169 / 255, 207 / 255), + grDevices::rgb(33 / 255, 102 / 255, 172 / 255)), + "7" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(239 / 255, 138 / 255, 98 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(209 / 255, 229 / 255, 240 / 255), + grDevices::rgb(103 / 255, 169 / 255, 207 / 255), + grDevices::rgb(33 / 255, 102 / 255, 172 / 255)), + "8" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(214 / 255, 96 / 255, 77 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(209 / 255, 229 / 255, 240 / 255), + grDevices::rgb(146 / 255, 197 / 255, 222 / 255), + grDevices::rgb(67 / 255, 147 / 255, 195 / 255), + grDevices::rgb(33 / 255, 102 / 255, 172 / 255)), + "9" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(214 / 255, 96 / 255, 77 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(209 / 255, 229 / 255, 240 / 255), + grDevices::rgb(146 / 255, 197 / 255, 222 / 255), + grDevices::rgb(67 / 255, 147 / 255, 195 / 255), + grDevices::rgb(33 / 255, 102 / 255, 172 / 255)), + "10" = tibble::lst(grDevices::rgb(103 / 255, 0 / 255, 31 / 255), + grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(214 / 255, 96 / 255, 77 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(209 / 255, 229 / 255, 240 / 255), + grDevices::rgb(146 / 255, 197 / 255, 222 / 255), + grDevices::rgb(67 / 255, 147 / 255, 195 / 255), + grDevices::rgb(33 / 255, 102 / 255, 172 / 255), + grDevices::rgb(5 / 255, 48 / 255, 97 / 255)), + "11" = tibble::lst(grDevices::rgb(103 / 255, 0 / 255, 31 / 255), + grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(214 / 255, 96 / 255, 77 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(209 / 255, 229 / 255, 240 / 255), + grDevices::rgb(146 / 255, 197 / 255, 222 / 255), + grDevices::rgb(67 / 255, 147 / 255, 195 / 255), + grDevices::rgb(33 / 255, 102 / 255, 172 / 255), + grDevices::rgb(5 / 255, 48 / 255, 97 / 255)), + "type" = "divergent" + ), + "PiYG" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(233 / 255, 163 / 255, 201 / 255), + grDevices::rgb(161 / 255, 215 / 255, 106 / 255)), + "3" = tibble::lst(grDevices::rgb(233 / 255, 163 / 255, 201 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(161 / 255, 215 / 255, 106 / 255)), + "4" = tibble::lst(grDevices::rgb(208 / 255, 28 / 255, 139 / 255), + grDevices::rgb(241 / 255, 182 / 255, 218 / 255), + grDevices::rgb(184 / 255, 225 / 255, 134 / 255), + grDevices::rgb(77 / 255, 172 / 255, 38 / 255)), + "5" = tibble::lst(grDevices::rgb(208 / 255, 28 / 255, 139 / 255), + grDevices::rgb(241 / 255, 182 / 255, 218 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(184 / 255, 225 / 255, 134 / 255), + grDevices::rgb(77 / 255, 172 / 255, 38 / 255)), + "6" = tibble::lst(grDevices::rgb(197 / 255, 27 / 255, 125 / 255), + grDevices::rgb(233 / 255, 163 / 255, 201 / 255), + grDevices::rgb(253 / 255, 224 / 255, 239 / 255), + grDevices::rgb(230 / 255, 245 / 255, 208 / 255), + grDevices::rgb(161 / 255, 215 / 255, 106 / 255), + grDevices::rgb(77 / 255, 146 / 255, 33 / 255)), + "7" = tibble::lst(grDevices::rgb(197 / 255, 27 / 255, 125 / 255), + grDevices::rgb(233 / 255, 163 / 255, 201 / 255), + grDevices::rgb(253 / 255, 224 / 255, 239 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(230 / 255, 245 / 255, 208 / 255), + grDevices::rgb(161 / 255, 215 / 255, 106 / 255), + grDevices::rgb(77 / 255, 146 / 255, 33 / 255)), + "8" = tibble::lst(grDevices::rgb(197 / 255, 27 / 255, 125 / 255), + grDevices::rgb(222 / 255, 119 / 255, 174 / 255), + grDevices::rgb(241 / 255, 182 / 255, 218 / 255), + grDevices::rgb(253 / 255, 224 / 255, 239 / 255), + grDevices::rgb(230 / 255, 245 / 255, 208 / 255), + grDevices::rgb(184 / 255, 225 / 255, 134 / 255), + grDevices::rgb(127 / 255, 188 / 255, 65 / 255), + grDevices::rgb(77 / 255, 146 / 255, 33 / 255)), + "9" = tibble::lst(grDevices::rgb(197 / 255, 27 / 255, 125 / 255), + grDevices::rgb(222 / 255, 119 / 255, 174 / 255), + grDevices::rgb(241 / 255, 182 / 255, 218 / 255), + grDevices::rgb(253 / 255, 224 / 255, 239 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(230 / 255, 245 / 255, 208 / 255), + grDevices::rgb(184 / 255, 225 / 255, 134 / 255), + grDevices::rgb(127 / 255, 188 / 255, 65 / 255), + grDevices::rgb(77 / 255, 146 / 255, 33 / 255)), + "10" = tibble::lst(grDevices::rgb(142 / 255, 1 / 255, 82 / 255), + grDevices::rgb(197 / 255, 27 / 255, 125 / 255), + grDevices::rgb(222 / 255, 119 / 255, 174 / 255), + grDevices::rgb(241 / 255, 182 / 255, 218 / 255), + grDevices::rgb(253 / 255, 224 / 255, 239 / 255), + grDevices::rgb(230 / 255, 245 / 255, 208 / 255), + grDevices::rgb(184 / 255, 225 / 255, 134 / 255), + grDevices::rgb(127 / 255, 188 / 255, 65 / 255), + grDevices::rgb(77 / 255, 146 / 255, 33 / 255), + grDevices::rgb(39 / 255, 100 / 255, 25 / 255)), + "11" = tibble::lst(grDevices::rgb(142 / 255, 1 / 255, 82 / 255), + grDevices::rgb(197 / 255, 27 / 255, 125 / 255), + grDevices::rgb(222 / 255, 119 / 255, 174 / 255), + grDevices::rgb(241 / 255, 182 / 255, 218 / 255), + grDevices::rgb(253 / 255, 224 / 255, 239 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(230 / 255, 245 / 255, 208 / 255), + grDevices::rgb(184 / 255, 225 / 255, 134 / 255), + grDevices::rgb(127 / 255, 188 / 255, 65 / 255), + grDevices::rgb(77 / 255, 146 / 255, 33 / 255), + grDevices::rgb(39 / 255, 100 / 255, 25 / 255)), + "type" = "divergent" + ), + "PRGn" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(175 / 255, 141 / 255, 195 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(127 / 255, 191 / 255, 123 / 255)), + "4" = tibble::lst(grDevices::rgb(123 / 255, 50 / 255, 148 / 255), + grDevices::rgb(194 / 255, 165 / 255, 207 / 255), + grDevices::rgb(166 / 255, 219 / 255, 160 / 255), + grDevices::rgb(0 / 255, 136 / 255, 55 / 255)), + "5" = tibble::lst(grDevices::rgb(123 / 255, 50 / 255, 148 / 255), + grDevices::rgb(194 / 255, 165 / 255, 207 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(166 / 255, 219 / 255, 160 / 255), + grDevices::rgb(0 / 255, 136 / 255, 55 / 255)), + "6" = tibble::lst(grDevices::rgb(118 / 255, 42 / 255, 131 / 255), + grDevices::rgb(175 / 255, 141 / 255, 195 / 255), + grDevices::rgb(231 / 255, 212 / 255, 232 / 255), + grDevices::rgb(217 / 255, 240 / 255, 211 / 255), + grDevices::rgb(127 / 255, 191 / 255, 123 / 255), + grDevices::rgb(27 / 255, 120 / 255, 55 / 255)), + "7" = tibble::lst(grDevices::rgb(118 / 255, 42 / 255, 131 / 255), + grDevices::rgb(175 / 255, 141 / 255, 195 / 255), + grDevices::rgb(231 / 255, 212 / 255, 232 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(217 / 255, 240 / 255, 211 / 255), + grDevices::rgb(127 / 255, 191 / 255, 123 / 255), + grDevices::rgb(27 / 255, 120 / 255, 55 / 255)), + "8" = tibble::lst(grDevices::rgb(118 / 255, 42 / 255, 131 / 255), + grDevices::rgb(153 / 255, 112 / 255, 171 / 255), + grDevices::rgb(194 / 255, 165 / 255, 207 / 255), + grDevices::rgb(231 / 255, 212 / 255, 232 / 255), + grDevices::rgb(217 / 255, 240 / 255, 211 / 255), + grDevices::rgb(166 / 255, 219 / 255, 160 / 255), + grDevices::rgb(90 / 255, 174 / 255, 97 / 255), + grDevices::rgb(27 / 255, 120 / 255, 55 / 255)), + "9" = tibble::lst(grDevices::rgb(118 / 255, 42 / 255, 131 / 255), + grDevices::rgb(153 / 255, 112 / 255, 171 / 255), + grDevices::rgb(194 / 255, 165 / 255, 207 / 255), + grDevices::rgb(231 / 255, 212 / 255, 232 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(217 / 255, 240 / 255, 211 / 255), + grDevices::rgb(166 / 255, 219 / 255, 160 / 255), + grDevices::rgb(90 / 255, 174 / 255, 97 / 255), + grDevices::rgb(27 / 255, 120 / 255, 55 / 255)), + "10" = tibble::lst(grDevices::rgb(64 / 255, 0 / 255, 75 / 255), + grDevices::rgb(118 / 255, 42 / 255, 131 / 255), + grDevices::rgb(153 / 255, 112 / 255, 171 / 255), + grDevices::rgb(194 / 255, 165 / 255, 207 / 255), + grDevices::rgb(231 / 255, 212 / 255, 232 / 255), + grDevices::rgb(217 / 255, 240 / 255, 211 / 255), + grDevices::rgb(166 / 255, 219 / 255, 160 / 255), + grDevices::rgb(90 / 255, 174 / 255, 97 / 255), + grDevices::rgb(27 / 255, 120 / 255, 55 / 255), + grDevices::rgb(0 / 255, 68 / 255, 27 / 255)), + "11" = tibble::lst(grDevices::rgb(64 / 255, 0 / 255, 75 / 255), + grDevices::rgb(118 / 255, 42 / 255, 131 / 255), + grDevices::rgb(153 / 255, 112 / 255, 171 / 255), + grDevices::rgb(194 / 255, 165 / 255, 207 / 255), + grDevices::rgb(231 / 255, 212 / 255, 232 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(217 / 255, 240 / 255, 211 / 255), + grDevices::rgb(166 / 255, 219 / 255, 160 / 255), + grDevices::rgb(90 / 255, 174 / 255, 97 / 255), + grDevices::rgb(27 / 255, 120 / 255, 55 / 255), + grDevices::rgb(0 / 255, 68 / 255, 27 / 255)), + "type" = "divergent" + ), + "RdYlBu" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(145 / 255, 191 / 255, 219 / 255)), + "3" = tibble::lst(grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(145 / 255, 191 / 255, 219 / 255)), + "4" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(171 / 255, 217 / 255, 233 / 255), + grDevices::rgb(44 / 255, 123 / 255, 182 / 255)), + "5" = tibble::lst(grDevices::rgb(215 / 255, 25 / 255, 28 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(171 / 255, 217 / 255, 233 / 255), + grDevices::rgb(44 / 255, 123 / 255, 182 / 255)), + "6" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(254 / 255, 224 / 255, 144 / 255), + grDevices::rgb(224 / 255, 243 / 255, 248 / 255), + grDevices::rgb(145 / 255, 191 / 255, 219 / 255), + grDevices::rgb(69 / 255, 117 / 255, 180 / 255)), + "7" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(254 / 255, 224 / 255, 144 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(224 / 255, 243 / 255, 248 / 255), + grDevices::rgb(145 / 255, 191 / 255, 219 / 255), + grDevices::rgb(69 / 255, 117 / 255, 180 / 255)), + "8" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 144 / 255), + grDevices::rgb(224 / 255, 243 / 255, 248 / 255), + grDevices::rgb(171 / 255, 217 / 255, 233 / 255), + grDevices::rgb(116 / 255, 173 / 255, 209 / 255), + grDevices::rgb(69 / 255, 117 / 255, 180 / 255)), + "9" = tibble::lst(grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 144 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(224 / 255, 243 / 255, 248 / 255), + grDevices::rgb(171 / 255, 217 / 255, 233 / 255), + grDevices::rgb(116 / 255, 173 / 255, 209 / 255), + grDevices::rgb(69 / 255, 117 / 255, 180 / 255)), + "10" = tibble::lst(grDevices::rgb(165 / 255, 0 / 255, 38 / 255), + grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 144 / 255), + grDevices::rgb(224 / 255, 243 / 255, 248 / 255), + grDevices::rgb(171 / 255, 217 / 255, 233 / 255), + grDevices::rgb(116 / 255, 173 / 255, 209 / 255), + grDevices::rgb(69 / 255, 117 / 255, 180 / 255), + grDevices::rgb(49 / 255, 54 / 255, 149 / 255)), + "11" = tibble::lst(grDevices::rgb(165 / 255, 0 / 255, 38 / 255), + grDevices::rgb(215 / 255, 48 / 255, 39 / 255), + grDevices::rgb(244 / 255, 109 / 255, 67 / 255), + grDevices::rgb(253 / 255, 174 / 255, 97 / 255), + grDevices::rgb(254 / 255, 224 / 255, 144 / 255), + grDevices::rgb(255 / 255, 255 / 255, 191 / 255), + grDevices::rgb(224 / 255, 243 / 255, 248 / 255), + grDevices::rgb(171 / 255, 217 / 255, 233 / 255), + grDevices::rgb(116 / 255, 173 / 255, 209 / 255), + grDevices::rgb(69 / 255, 117 / 255, 180 / 255), + grDevices::rgb(49 / 255, 54 / 255, 149 / 255)), + "type" = "divergent" + ), + "BrBG" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(216 / 255, 179 / 255, 101 / 255), + grDevices::rgb(90 / 255, 180 / 255, 172 / 255)), + "3" = tibble::lst(grDevices::rgb(216 / 255, 179 / 255, 101 / 255), + grDevices::rgb(245 / 255, 245 / 255, 245 / 255), + grDevices::rgb(90 / 255, 180 / 255, 172 / 255)), + "4" = tibble::lst(grDevices::rgb(166 / 255, 97 / 255, 26 / 255), + grDevices::rgb(223 / 255, 194 / 255, 125 / 255), + grDevices::rgb(128 / 255, 205 / 255, 193 / 255), + grDevices::rgb(1 / 255, 133 / 255, 113 / 255)), + "5" = tibble::lst(grDevices::rgb(166 / 255, 97 / 255, 26 / 255), + grDevices::rgb(223 / 255, 194 / 255, 125 / 255), + grDevices::rgb(245 / 255, 245 / 255, 245 / 255), + grDevices::rgb(128 / 255, 205 / 255, 193 / 255), + grDevices::rgb(1 / 255, 133 / 255, 113 / 255)), + "6" = tibble::lst(grDevices::rgb(140 / 255, 81 / 255, 10 / 255), + grDevices::rgb(216 / 255, 179 / 255, 101 / 255), + grDevices::rgb(246 / 255, 232 / 255, 195 / 255), + grDevices::rgb(199 / 255, 234 / 255, 229 / 255), + grDevices::rgb(90 / 255, 180 / 255, 172 / 255), + grDevices::rgb(1 / 255, 102 / 255, 94 / 255)), + "7" = tibble::lst(grDevices::rgb(140 / 255, 81 / 255, 10 / 255), + grDevices::rgb(216 / 255, 179 / 255, 101 / 255), + grDevices::rgb(246 / 255, 232 / 255, 195 / 255), + grDevices::rgb(245 / 255, 245 / 255, 245 / 255), + grDevices::rgb(199 / 255, 234 / 255, 229 / 255), + grDevices::rgb(90 / 255, 180 / 255, 172 / 255), + grDevices::rgb(1 / 255, 102 / 255, 94 / 255)), + "8" = tibble::lst(grDevices::rgb(140 / 255, 81 / 255, 10 / 255), + grDevices::rgb(191 / 255, 129 / 255, 45 / 255), + grDevices::rgb(223 / 255, 194 / 255, 125 / 255), + grDevices::rgb(246 / 255, 232 / 255, 195 / 255), + grDevices::rgb(199 / 255, 234 / 255, 229 / 255), + grDevices::rgb(128 / 255, 205 / 255, 193 / 255), + grDevices::rgb(53 / 255, 151 / 255, 143 / 255), + grDevices::rgb(1 / 255, 102 / 255, 94 / 255)), + "9" = tibble::lst(grDevices::rgb(140 / 255, 81 / 255, 10 / 255), + grDevices::rgb(191 / 255, 129 / 255, 45 / 255), + grDevices::rgb(223 / 255, 194 / 255, 125 / 255), + grDevices::rgb(246 / 255, 232 / 255, 195 / 255), + grDevices::rgb(245 / 255, 245 / 255, 245 / 255), + grDevices::rgb(199 / 255, 234 / 255, 229 / 255), + grDevices::rgb(128 / 255, 205 / 255, 193 / 255), + grDevices::rgb(53 / 255, 151 / 255, 143 / 255), + grDevices::rgb(1 / 255, 102 / 255, 94 / 255)), + "10" = tibble::lst(grDevices::rgb(84 / 255, 48 / 255, 5 / 255), + grDevices::rgb(140 / 255, 81 / 255, 10 / 255), + grDevices::rgb(191 / 255, 129 / 255, 45 / 255), + grDevices::rgb(223 / 255, 194 / 255, 125 / 255), + grDevices::rgb(246 / 255, 232 / 255, 195 / 255), + grDevices::rgb(199 / 255, 234 / 255, 229 / 255), + grDevices::rgb(128 / 255, 205 / 255, 193 / 255), + grDevices::rgb(53 / 255, 151 / 255, 143 / 255), + grDevices::rgb(1 / 255, 102 / 255, 94 / 255), + grDevices::rgb(0 / 255, 60 / 255, 48 / 255)), + "11" = tibble::lst(grDevices::rgb(84 / 255, 48 / 255, 5 / 255), + grDevices::rgb(140 / 255, 81 / 255, 10 / 255), + grDevices::rgb(191 / 255, 129 / 255, 45 / 255), + grDevices::rgb(223 / 255, 194 / 255, 125 / 255), + grDevices::rgb(246 / 255, 232 / 255, 195 / 255), + grDevices::rgb(245 / 255, 245 / 255, 245 / 255), + grDevices::rgb(199 / 255, 234 / 255, 229 / 255), + grDevices::rgb(128 / 255, 205 / 255, 193 / 255), + grDevices::rgb(53 / 255, 151 / 255, 143 / 255), + grDevices::rgb(1 / 255, 102 / 255, 94 / 255), + grDevices::rgb(0 / 255, 60 / 255, 48 / 255)), + "type" = "divergent" + ), + "RdGy" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(239 / 255, 138 / 255, 98 / 255), + grDevices::rgb(153 / 255, 153 / 255, 153 / 255)), + "3" = tibble::lst(grDevices::rgb(239 / 255, 138 / 255, 98 / 255), + grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(153 / 255, 153 / 255, 153 / 255)), + "4" = tibble::lst(grDevices::rgb(202 / 255, 0 / 255, 32 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(186 / 255, 186 / 255, 186 / 255), + grDevices::rgb(64 / 255, 64 / 255, 64 / 255)), + "5" = tibble::lst(grDevices::rgb(202 / 255, 0 / 255, 32 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(186 / 255, 186 / 255, 186 / 255), + grDevices::rgb(64 / 255, 64 / 255, 64 / 255)), + "6" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(239 / 255, 138 / 255, 98 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(224 / 255, 224 / 255, 224 / 255), + grDevices::rgb(153 / 255, 153 / 255, 153 / 255), + grDevices::rgb(77 / 255, 77 / 255,77 / 255)), + "7" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(239 / 255, 138 / 255, 98 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(224 / 255, 224 / 255, 224 / 255), + grDevices::rgb(153 / 255, 153 / 255, 153 / 255), + grDevices::rgb(77 / 255, 77 / 255,77 / 255)), + "8" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(214 / 255, 96 / 255, 77 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(224 / 255, 224 / 255, 224 / 255), + grDevices::rgb(186 / 255, 186 / 255, 186 / 255), + grDevices::rgb(135 / 255, 135 / 255, 135 / 255), + grDevices::rgb(77 / 255, 77 / 255,77 / 255)), + "9" = tibble::lst(grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(214 / 255, 96 / 255, 77 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(224 / 255, 224 / 255, 224 / 255), + grDevices::rgb(186 / 255, 186 / 255, 186 / 255), + grDevices::rgb(135 / 255, 135 / 255, 135 / 255), + grDevices::rgb(77 / 255, 77 / 255,77 / 255)), + "10" = tibble::lst(grDevices::rgb(103 / 255, 0 / 255, 31 / 255), + grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(214 / 255, 96 / 255, 77 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(224 / 255, 224 / 255, 224 / 255), + grDevices::rgb(186 / 255, 186 / 255, 186 / 255), + grDevices::rgb(135 / 255, 135 / 255, 135 / 255), + grDevices::rgb(77 / 255, 77 / 255,77 / 255), + grDevices::rgb(26 / 255, 26 / 255, 26 / 255)), + "11" = tibble::lst(grDevices::rgb(103 / 255, 0 / 255, 31 / 255), + grDevices::rgb(178 / 255, 24 / 255, 43 / 255), + grDevices::rgb(214 / 255, 96 / 255, 77 / 255), + grDevices::rgb(244 / 255, 165 / 255, 130 / 255), + grDevices::rgb(253 / 255, 219 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(224 / 255, 224 / 255, 224 / 255), + grDevices::rgb(186 / 255, 186 / 255, 186 / 255), + grDevices::rgb(135 / 255, 135 / 255, 135 / 255), + grDevices::rgb(77 / 255, 77 / 255,77 / 255), + grDevices::rgb(26 / 255, 26 / 255, 26 / 255)), + "type" = "divergent" + ), + "PuOr" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(241 / 255, 163 / 255, 64 / 255), + grDevices::rgb(153 / 255, 142 / 255, 195 / 255)), + "3" = tibble::lst(grDevices::rgb(241 / 255, 163 / 255, 64 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(153 / 255, 142 / 255, 195 / 255)), + "4" = tibble::lst(grDevices::rgb(230 / 255, 97 / 255, 1 / 255), + grDevices::rgb(253 / 255, 184 / 255, 99 / 255), + grDevices::rgb(178 / 255, 171 / 255, 210 / 255), + grDevices::rgb(94 / 255, 60 / 255, 153 / 255)), + "5" = tibble::lst(grDevices::rgb(230 / 255, 97 / 255, 1 / 255), + grDevices::rgb(253 / 255, 184 / 255, 99 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(178 / 255, 171 / 255, 210 / 255), + grDevices::rgb(94 / 255, 60 / 255, 153 / 255)), + "6" = tibble::lst(grDevices::rgb(179 / 255, 88 / 255, 6 / 255), + grDevices::rgb(241 / 255, 163 / 255, 64 / 255), + grDevices::rgb(254 / 255, 224 / 255, 182 / 255), + grDevices::rgb(216 / 255, 218 / 255, 235 / 255), + grDevices::rgb(153 / 255, 142 / 255, 195 / 255), + grDevices::rgb(84 / 255, 39 / 255, 136 / 255)), + "7" = tibble::lst(grDevices::rgb(179 / 255, 88 / 255, 6 / 255), + grDevices::rgb(241 / 255, 163 / 255, 64 / 255), + grDevices::rgb(254 / 255, 224 / 255, 182 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(216 / 255, 218 / 255, 235 / 255), + grDevices::rgb(153 / 255, 142 / 255, 195 / 255), + grDevices::rgb(84 / 255, 39 / 255, 136 / 255)), + "8" = tibble::lst(grDevices::rgb(179 / 255, 88 / 255, 6 / 255), + grDevices::rgb(224 / 255, 130 / 255, 20 / 255), + grDevices::rgb(253 / 255, 184 / 255, 99 / 255), + grDevices::rgb(254 / 255, 224 / 255, 182 / 255), + grDevices::rgb(216 / 255, 218 / 255, 235 / 255), + grDevices::rgb(178 / 255, 171 / 255, 210 / 255), + grDevices::rgb(128 / 255, 115 / 255, 172 / 255), + grDevices::rgb(84 / 255, 39 / 255, 136 / 255)), + "9" = tibble::lst(grDevices::rgb(179 / 255, 88 / 255, 6 / 255), + grDevices::rgb(224 / 255, 130 / 255, 20 / 255), + grDevices::rgb(253 / 255, 184 / 255, 99 / 255), + grDevices::rgb(254 / 255, 224 / 255, 182 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(216 / 255, 218 / 255, 235 / 255), + grDevices::rgb(178 / 255, 171 / 255, 210 / 255), + grDevices::rgb(128 / 255, 115 / 255, 172 / 255), + grDevices::rgb(84 / 255, 39 / 255, 136 / 255)), + "10" = tibble::lst(grDevices::rgb(127 / 255, 59 / 255, 8 / 255), + grDevices::rgb(179 / 255, 88 / 255, 6 / 255), + grDevices::rgb(224 / 255, 130 / 255, 20 / 255), + grDevices::rgb(253 / 255, 184 / 255, 99 / 255), + grDevices::rgb(254 / 255, 224 / 255, 182 / 255), + grDevices::rgb(216 / 255, 218 / 255, 235 / 255), + grDevices::rgb(178 / 255, 171 / 255, 210 / 255), + grDevices::rgb(128 / 255, 115 / 255, 172 / 255), + grDevices::rgb(84 / 255, 39 / 255, 136 / 255), + grDevices::rgb(45 / 255, 0 / 255, 75 / 255)), + "11" = tibble::lst(grDevices::rgb(127 / 255, 59 / 255, 8 / 255), + grDevices::rgb(179 / 255, 88 / 255, 6 / 255), + grDevices::rgb(224 / 255, 130 / 255, 20 / 255), + grDevices::rgb(253 / 255, 184 / 255, 99 / 255), + grDevices::rgb(254 / 255, 224 / 255, 182 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(216 / 255, 218 / 255, 235 / 255), + grDevices::rgb(178 / 255, 171 / 255, 210 / 255), + grDevices::rgb(128 / 255, 115 / 255, 172 / 255), + grDevices::rgb(84 / 255, 39 / 255, 136 / 255), + grDevices::rgb(45 / 255, 0 / 255, 75 / 255)), + "type" = "divergent" + ), + "Set2" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), + grDevices::rgb(252 / 255, 141 / 255, 98 / 255), + grDevices::rgb(141 / 255, 160 / 255, 203 / 255)), + "4" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), + grDevices::rgb(252 / 255, 141 / 255, 98 / 255), + grDevices::rgb(141 / 255, 160 / 255, 203 / 255), + grDevices::rgb(231 / 255, 138 / 255, 195 / 255)), + "5" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), + grDevices::rgb(252 / 255, 141 / 255, 98 / 255), + grDevices::rgb(141 / 255, 160 / 255, 203 / 255), + grDevices::rgb(231 / 255, 138 / 255, 195 / 255), + grDevices::rgb(166 / 255, 216 / 255, 84 / 255)), + "6" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), + grDevices::rgb(252 / 255, 141 / 255, 98 / 255), + grDevices::rgb(141 / 255, 160 / 255, 203 / 255), + grDevices::rgb(231 / 255, 138 / 255, 195 / 255), + grDevices::rgb(166 / 255, 216 / 255, 84 / 255), + grDevices::rgb(255 / 255, 217 / 255, 47 / 255)), + "7" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), + grDevices::rgb(252 / 255, 141 / 255, 98 / 255), + grDevices::rgb(141 / 255, 160 / 255, 203 / 255), + grDevices::rgb(231 / 255, 138 / 255, 195 / 255), + grDevices::rgb(166 / 255, 216 / 255, 84 / 255), + grDevices::rgb(255 / 255, 217 / 255, 47 / 255), + grDevices::rgb(229 / 255, 196 / 255, 148 / 255)), + "8" = tibble::lst(grDevices::rgb(102 / 255, 194 / 255, 165 / 255), + grDevices::rgb(252 / 255, 141 / 255, 98 / 255), + grDevices::rgb(141 / 255, 160 / 255, 203 / 255), + grDevices::rgb(231 / 255, 138 / 255, 195 / 255), + grDevices::rgb(166 / 255, 216 / 255, 84 / 255), + grDevices::rgb(255 / 255, 217 / 255, 47 / 255), + grDevices::rgb(229 / 255, 196 / 255, 148 / 255), + grDevices::rgb(179 / 255, 179 / 255, 179 / 255)), + "type" = "qualitative" + ), + "Accent" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), + grDevices::rgb(190 / 255, 174 / 255, 212 / 255), + grDevices::rgb(253 / 255, 192 / 255, 134 / 255)), + "4" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), + grDevices::rgb(190 / 255, 174 / 255, 212 / 255), + grDevices::rgb(253 / 255, 192 / 255, 134 / 255), + grDevices::rgb(255 / 255, 255 / 255, 153 / 255)), + "5" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), + grDevices::rgb(190 / 255, 174 / 255, 212 / 255), + grDevices::rgb(253 / 255, 192 / 255, 134 / 255), + grDevices::rgb(255 / 255, 255 / 255, 153 / 255), + grDevices::rgb(56 / 255, 108 / 255, 176 / 255)), + "6" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), + grDevices::rgb(190 / 255, 174 / 255, 212 / 255), + grDevices::rgb(253 / 255, 192 / 255, 134 / 255), + grDevices::rgb(255 / 255, 255 / 255, 153 / 255), + grDevices::rgb(56 / 255, 108 / 255, 176 / 255), + grDevices::rgb(240 / 255, 2 / 255, 127 / 255)), + "7" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), + grDevices::rgb(190 / 255, 174 / 255, 212 / 255), + grDevices::rgb(253 / 255, 192 / 255, 134 / 255), + grDevices::rgb(255 / 255, 255 / 255, 153 / 255), + grDevices::rgb(56 / 255, 108 / 255, 176 / 255), + grDevices::rgb(240 / 255, 2 / 255, 127 / 255), + grDevices::rgb(191 / 255, 91 / 255, 23 / 255)), + "8" = tibble::lst(grDevices::rgb(127 / 255, 201 / 255, 127 / 255), + grDevices::rgb(190 / 255, 174 / 255, 212 / 255), + grDevices::rgb(253 / 255, 192 / 255, 134 / 255), + grDevices::rgb(255 / 255, 255 / 255, 153 / 255), + grDevices::rgb(56 / 255, 108 / 255, 176 / 255), + grDevices::rgb(240 / 255, 2 / 255, 127 / 255), + grDevices::rgb(191 / 255, 91 / 255, 23 / 255), + grDevices::rgb(102 / 255, 102 / 255, 102 / 255)), + "type" = "qualitative" + ), + "Set1" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), + grDevices::rgb(55 / 255, 126 / 255, 184 / 255), + grDevices::rgb(77 / 255, 175 / 255, 74 / 255)), + "4" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), + grDevices::rgb(55 / 255, 126 / 255, 184 / 255), + grDevices::rgb(77 / 255, 175 / 255, 74 / 255), + grDevices::rgb(152 / 255,78 / 255, 163 / 255)), + "5" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), + grDevices::rgb(55 / 255, 126 / 255, 184 / 255), + grDevices::rgb(77 / 255, 175 / 255, 74 / 255), + grDevices::rgb(152 / 255,78 / 255, 163 / 255), + grDevices::rgb(255 / 255, 127 / 255, 0 / 255)), + "6" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), + grDevices::rgb(55 / 255, 126 / 255, 184 / 255), + grDevices::rgb(77 / 255, 175 / 255, 74 / 255), + grDevices::rgb(152 / 255,78 / 255, 163 / 255), + grDevices::rgb(255 / 255, 127 / 255, 0 / 255), + grDevices::rgb(255 / 255, 255 / 255, 51 / 255)), + "7" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), + grDevices::rgb(55 / 255, 126 / 255, 184 / 255), + grDevices::rgb(77 / 255, 175 / 255, 74 / 255), + grDevices::rgb(152 / 255,78 / 255, 163 / 255), + grDevices::rgb(255 / 255, 127 / 255, 0 / 255), + grDevices::rgb(255 / 255, 255 / 255, 51 / 255), + grDevices::rgb(166 / 255, 86 / 255, 40 / 255)), + "8" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), + grDevices::rgb(55 / 255, 126 / 255, 184 / 255), + grDevices::rgb(77 / 255, 175 / 255, 74 / 255), + grDevices::rgb(152 / 255,78 / 255, 163 / 255), + grDevices::rgb(255 / 255, 127 / 255, 0 / 255), + grDevices::rgb(255 / 255, 255 / 255, 51 / 255), + grDevices::rgb(166 / 255, 86 / 255, 40 / 255), + grDevices::rgb(247 / 255, 129 / 255, 191 / 255)), + "9" = tibble::lst(grDevices::rgb(228 / 255, 26 / 255, 28 / 255), + grDevices::rgb(55 / 255, 126 / 255, 184 / 255), + grDevices::rgb(77 / 255, 175 / 255, 74 / 255), + grDevices::rgb(152 / 255,78 / 255, 163 / 255), + grDevices::rgb(255 / 255, 127 / 255, 0 / 255), + grDevices::rgb(255 / 255, 255 / 255, 51 / 255), + grDevices::rgb(166 / 255, 86 / 255, 40 / 255), + grDevices::rgb(247 / 255, 129 / 255, 191 / 255), + grDevices::rgb(153 / 255, 153 / 255, 153 / 255)), + "type" = "qualitative" + ), + "Set3" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 179 / 255), + grDevices::rgb(190 / 255, 186 / 255, 218 / 255)), + "4" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 179 / 255), + grDevices::rgb(190 / 255, 186 / 255, 218 / 255), + grDevices::rgb(251 / 255, 128 / 255, 114 / 255)), + "5" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 179 / 255), + grDevices::rgb(190 / 255, 186 / 255, 218 / 255), + grDevices::rgb(251 / 255, 128 / 255, 114 / 255), + grDevices::rgb(128 / 255, 177 / 255, 211 / 255)), + "6" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 179 / 255), + grDevices::rgb(190 / 255, 186 / 255, 218 / 255), + grDevices::rgb(251 / 255, 128 / 255, 114 / 255), + grDevices::rgb(128 / 255, 177 / 255, 211 / 255), + grDevices::rgb(253 / 255, 180 / 255, 98 / 255)), + "7" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 179 / 255), + grDevices::rgb(190 / 255, 186 / 255, 218 / 255), + grDevices::rgb(251 / 255, 128 / 255, 114 / 255), + grDevices::rgb(128 / 255, 177 / 255, 211 / 255), + grDevices::rgb(253 / 255, 180 / 255, 98 / 255), + grDevices::rgb(179 / 255, 222 / 255, 105 / 255)), + "8" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 179 / 255), + grDevices::rgb(190 / 255, 186 / 255, 218 / 255), + grDevices::rgb(251 / 255, 128 / 255, 114 / 255), + grDevices::rgb(128 / 255, 177 / 255, 211 / 255), + grDevices::rgb(253 / 255, 180 / 255, 98 / 255), + grDevices::rgb(179 / 255, 222 / 255, 105 / 255), + grDevices::rgb(252 / 255, 205 / 255, 229 / 255)), + "9" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 179 / 255), + grDevices::rgb(190 / 255, 186 / 255, 218 / 255), + grDevices::rgb(251 / 255, 128 / 255, 114 / 255), + grDevices::rgb(128 / 255, 177 / 255, 211 / 255), + grDevices::rgb(253 / 255, 180 / 255, 98 / 255), + grDevices::rgb(179 / 255, 222 / 255, 105 / 255), + grDevices::rgb(252 / 255, 205 / 255, 229 / 255), + grDevices::rgb(217 / 255, 217 / 255, 217 / 255)), + "10" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 179 / 255), + grDevices::rgb(190 / 255, 186 / 255, 218 / 255), + grDevices::rgb(251 / 255, 128 / 255, 114 / 255), + grDevices::rgb(128 / 255, 177 / 255, 211 / 255), + grDevices::rgb(253 / 255, 180 / 255, 98 / 255), + grDevices::rgb(179 / 255, 222 / 255, 105 / 255), + grDevices::rgb(252 / 255, 205 / 255, 229 / 255), + grDevices::rgb(217 / 255, 217 / 255, 217 / 255), + grDevices::rgb(188 / 255, 128 / 255, 189 / 255)), + "11" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 179 / 255), + grDevices::rgb(190 / 255, 186 / 255, 218 / 255), + grDevices::rgb(251 / 255, 128 / 255, 114 / 255), + grDevices::rgb(128 / 255, 177 / 255, 211 / 255), + grDevices::rgb(253 / 255, 180 / 255, 98 / 255), + grDevices::rgb(179 / 255, 222 / 255, 105 / 255), + grDevices::rgb(252 / 255, 205 / 255, 229 / 255), + grDevices::rgb(217 / 255, 217 / 255, 217 / 255), + grDevices::rgb(188 / 255, 128 / 255, 189 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255)), + "12" = tibble::lst(grDevices::rgb(141 / 255, 211 / 255, 199 / 255), + grDevices::rgb(255 / 255, 255 / 255, 179 / 255), + grDevices::rgb(190 / 255, 186 / 255, 218 / 255), + grDevices::rgb(251 / 255, 128 / 255, 114 / 255), + grDevices::rgb(128 / 255, 177 / 255, 211 / 255), + grDevices::rgb(253 / 255, 180 / 255, 98 / 255), + grDevices::rgb(179 / 255, 222 / 255, 105 / 255), + grDevices::rgb(252 / 255, 205 / 255, 229 / 255), + grDevices::rgb(217 / 255, 217 / 255, 217 / 255), + grDevices::rgb(188 / 255, 128 / 255, 189 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(255 / 255, 237 / 255, 111 / 255)), + "type" = "qualitative" + ), + "Dark" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), + grDevices::rgb(217 / 255, 95 / 255, 2 / 255), + grDevices::rgb(117 / 255, 112 / 255, 179 / 255)), + "4" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), + grDevices::rgb(217 / 255, 95 / 255, 2 / 255), + grDevices::rgb(117 / 255, 112 / 255, 179 / 255), + grDevices::rgb(231 / 255, 41 / 255, 138 / 255)), + "5" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), + grDevices::rgb(217 / 255, 95 / 255, 2 / 255), + grDevices::rgb(117 / 255, 112 / 255, 179 / 255), + grDevices::rgb(231 / 255, 41 / 255, 138 / 255), + grDevices::rgb(102 / 255, 166 / 255, 30 / 255)), + "6" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), + grDevices::rgb(217 / 255, 95 / 255, 2 / 255), + grDevices::rgb(117 / 255, 112 / 255, 179 / 255), + grDevices::rgb(231 / 255, 41 / 255, 138 / 255), + grDevices::rgb(102 / 255, 166 / 255, 30 / 255), + grDevices::rgb(230 / 255, 171 / 255, 2 / 255)), + "7" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), + grDevices::rgb(217 / 255, 95 / 255, 2 / 255), + grDevices::rgb(117 / 255, 112 / 255, 179 / 255), + grDevices::rgb(231 / 255, 41 / 255, 138 / 255), + grDevices::rgb(102 / 255, 166 / 255, 30 / 255), + grDevices::rgb(230 / 255, 171 / 255, 2 / 255), + grDevices::rgb(166 / 255, 118 / 255, 29 / 255)), + "8" = tibble::lst(grDevices::rgb(27 / 255, 158 / 255, 119 / 255), + grDevices::rgb(217 / 255, 95 / 255, 2 / 255), + grDevices::rgb(117 / 255, 112 / 255, 179 / 255), + grDevices::rgb(231 / 255, 41 / 255, 138 / 255), + grDevices::rgb(102 / 255, 166 / 255, 30 / 255), + grDevices::rgb(230 / 255, 171 / 255, 2 / 255), + grDevices::rgb(166 / 255, 118 / 255, 29 / 255), + grDevices::rgb(102 / 255, 102 / 255, 102 / 255)), + "type" = "qualitative" + ), + "Paired" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), + grDevices::rgb(31 / 255, 120 / 255, 180 / 255), + grDevices::rgb(178 / 255, 223 / 255, 138 / 255)), + "4" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), + grDevices::rgb(31 / 255, 120 / 255, 180 / 255), + grDevices::rgb(178 / 255, 223 / 255, 138 / 255), + grDevices::rgb(51 / 255, 160 / 255, 44 / 255)), + "5" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), + grDevices::rgb(31 / 255, 120 / 255, 180 / 255), + grDevices::rgb(178 / 255, 223 / 255, 138 / 255), + grDevices::rgb(51 / 255, 160 / 255, 44 / 255), + grDevices::rgb(251 / 255, 154 / 255, 153 / 255)), + "6" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), + grDevices::rgb(31 / 255, 120 / 255, 180 / 255), + grDevices::rgb(178 / 255, 223 / 255, 138 / 255), + grDevices::rgb(51 / 255, 160 / 255, 44 / 255), + grDevices::rgb(251 / 255, 154 / 255, 153 / 255), + grDevices::rgb(227 / 255, 26 / 255, 28 / 255)), + "7" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), + grDevices::rgb(31 / 255, 120 / 255, 180 / 255), + grDevices::rgb(178 / 255, 223 / 255, 138 / 255), + grDevices::rgb(51 / 255, 160 / 255, 44 / 255), + grDevices::rgb(251 / 255, 154 / 255, 153 / 255), + grDevices::rgb(227 / 255, 26 / 255, 28 / 255), + grDevices::rgb(253 / 255, 191 / 255, 111 / 255)), + "8" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), + grDevices::rgb(31 / 255, 120 / 255, 180 / 255), + grDevices::rgb(178 / 255, 223 / 255, 138 / 255), + grDevices::rgb(51 / 255, 160 / 255, 44 / 255), + grDevices::rgb(251 / 255, 154 / 255, 153 / 255), + grDevices::rgb(227 / 255, 26 / 255, 28 / 255), + grDevices::rgb(253 / 255, 191 / 255, 111 / 255), + grDevices::rgb(255 / 255, 127 / 255, 0 / 255)), + "9" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), + grDevices::rgb(31 / 255, 120 / 255, 180 / 255), + grDevices::rgb(178 / 255, 223 / 255, 138 / 255), + grDevices::rgb(51 / 255, 160 / 255, 44 / 255), + grDevices::rgb(251 / 255, 154 / 255, 153 / 255), + grDevices::rgb(227 / 255, 26 / 255, 28 / 255), + grDevices::rgb(253 / 255, 191 / 255, 111 / 255), + grDevices::rgb(255 / 255, 127 / 255, 0 / 255), + grDevices::rgb(202 / 255, 178 / 255, 214 / 255)), + "10" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), + grDevices::rgb(31 / 255, 120 / 255, 180 / 255), + grDevices::rgb(178 / 255, 223 / 255, 138 / 255), + grDevices::rgb(51 / 255, 160 / 255, 44 / 255), + grDevices::rgb(251 / 255, 154 / 255, 153 / 255), + grDevices::rgb(227 / 255, 26 / 255, 28 / 255), + grDevices::rgb(253 / 255, 191 / 255, 111 / 255), + grDevices::rgb(255 / 255, 127 / 255, 0 / 255), + grDevices::rgb(202 / 255, 178 / 255, 214 / 255), + grDevices::rgb(106 / 255, 61 / 255, 154 / 255)), + "11" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), + grDevices::rgb(31 / 255, 120 / 255, 180 / 255), + grDevices::rgb(178 / 255, 223 / 255, 138 / 255), + grDevices::rgb(51 / 255, 160 / 255, 44 / 255), + grDevices::rgb(251 / 255, 154 / 255, 153 / 255), + grDevices::rgb(227 / 255, 26 / 255, 28 / 255), + grDevices::rgb(253 / 255, 191 / 255, 111 / 255), + grDevices::rgb(255 / 255, 127 / 255, 0 / 255), + grDevices::rgb(202 / 255, 178 / 255, 214 / 255), + grDevices::rgb(106 / 255, 61 / 255, 154 / 255), + grDevices::rgb(255 / 255, 255 / 255, 153 / 255)), + "12" = tibble::lst(grDevices::rgb(166 / 255, 206 / 255, 227 / 255), + grDevices::rgb(31 / 255, 120 / 255, 180 / 255), + grDevices::rgb(178 / 255, 223 / 255, 138 / 255), + grDevices::rgb(51 / 255, 160 / 255, 44 / 255), + grDevices::rgb(251 / 255, 154 / 255, 153 / 255), + grDevices::rgb(227 / 255, 26 / 255, 28 / 255), + grDevices::rgb(253 / 255, 191 / 255, 111 / 255), + grDevices::rgb(255 / 255, 127 / 255, 0 / 255), + grDevices::rgb(202 / 255, 178 / 255, 214 / 255), + grDevices::rgb(106 / 255, 61 / 255, 154 / 255), + grDevices::rgb(255 / 255, 255 / 255, 153 / 255), + grDevices::rgb(177 / 255, 89 / 255, 40 / 255)), + "type" = "qualitative" + ), + "Pastel2" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), + grDevices::rgb(203 / 255, 213 / 255, 232 / 255)), + "3" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), + grDevices::rgb(253 / 255, 205 / 255, 172 / 255), + grDevices::rgb(203 / 255, 213 / 255, 232 / 255)), + "4" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), + grDevices::rgb(253 / 255, 205 / 255, 172 / 255), + grDevices::rgb(203 / 255, 213 / 255, 232 / 255), + grDevices::rgb(244 / 255, 202 / 255, 228 / 255)), + "5" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), + grDevices::rgb(253 / 255, 205 / 255, 172 / 255), + grDevices::rgb(203 / 255, 213 / 255, 232 / 255), + grDevices::rgb(244 / 255, 202 / 255, 228 / 255), + grDevices::rgb(230 / 255, 245 / 255, 201 / 255)), + "6" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), + grDevices::rgb(253 / 255, 205 / 255, 172 / 255), + grDevices::rgb(203 / 255, 213 / 255, 232 / 255), + grDevices::rgb(244 / 255, 202 / 255, 228 / 255), + grDevices::rgb(230 / 255, 245 / 255, 201 / 255), + grDevices::rgb(255 / 255, 242 / 255, 174 / 255)), + "7" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), + grDevices::rgb(253 / 255, 205 / 255, 172 / 255), + grDevices::rgb(203 / 255, 213 / 255, 232 / 255), + grDevices::rgb(244 / 255, 202 / 255, 228 / 255), + grDevices::rgb(230 / 255, 245 / 255, 201 / 255), + grDevices::rgb(255 / 255, 242 / 255, 174 / 255), + grDevices::rgb(241 / 255, 226 / 255, 204 / 255)), + "8" = tibble::lst(grDevices::rgb(179 / 255, 226 / 255, 205 / 255), + grDevices::rgb(253 / 255, 205 / 255, 172 / 255), + grDevices::rgb(203 / 255, 213 / 255, 232 / 255), + grDevices::rgb(244 / 255, 202 / 255, 228 / 255), + grDevices::rgb(230 / 255, 245 / 255, 201 / 255), + grDevices::rgb(255 / 255, 242 / 255, 174 / 255), + grDevices::rgb(241 / 255, 226 / 255, 204 / 255), + grDevices::rgb(204 / 255, 204 / 255, 204 / 255)), + "type" = "qualitative" + ), + "Pastel1" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255)), + "3" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), + grDevices::rgb(179 / 255, 205 / 255, 227 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255)), + "4" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), + grDevices::rgb(179 / 255, 205 / 255, 227 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(222 / 255, 203 / 255, 228 / 255)), + "5" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), + grDevices::rgb(179 / 255, 205 / 255, 227 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(222 / 255, 203 / 255, 228 / 255), + grDevices::rgb(254 / 255, 217 / 255, 166 / 255)), + "6" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), + grDevices::rgb(179 / 255, 205 / 255, 227 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(222 / 255, 203 / 255, 228 / 255), + grDevices::rgb(254 / 255, 217 / 255, 166 / 255), + grDevices::rgb(255 / 255, 255 / 255, 204 / 255)), + "7" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), + grDevices::rgb(179 / 255, 205 / 255, 227 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(222 / 255, 203 / 255, 228 / 255), + grDevices::rgb(254 / 255, 217 / 255, 166 / 255), + grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(229 / 255, 216 / 255, 189 / 255)), + "8" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), + grDevices::rgb(179 / 255, 205 / 255, 227 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(222 / 255, 203 / 255, 228 / 255), + grDevices::rgb(254 / 255, 217 / 255, 166 / 255), + grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(229 / 255, 216 / 255, 189 / 255), + grDevices::rgb(253 / 255, 218 / 255, 236 / 255)), + "9" = tibble::lst(grDevices::rgb(251 / 255, 180 / 255, 174 / 255), + grDevices::rgb(179 / 255, 205 / 255, 227 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(222 / 255, 203 / 255, 228 / 255), + grDevices::rgb(254 / 255, 217 / 255, 166 / 255), + grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(229 / 255, 216 / 255, 189 / 255), + grDevices::rgb(253 / 255, 218 / 255, 236 / 255), + grDevices::rgb(242 / 255, 242 / 255, 242 / 255)), + "type" = "qualitative" + ), + "OrRd" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(254 / 255, 232 / 255, 200 / 255), + grDevices::rgb(253 / 255, 187 / 255, 132 / 255), + grDevices::rgb(227 / 255, 74 / 255, 51 / 255)), + "4" = tibble::lst(grDevices::rgb(254 / 255, 240 / 255, 217 / 255), + grDevices::rgb(253 / 255, 204 / 255, 138 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(215 / 255, 48 / 255, 31 / 255)), + "5" = tibble::lst(grDevices::rgb(254 / 255, 240 / 255, 217 / 255), + grDevices::rgb(253 / 255, 204 / 255, 138 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(227 / 255, 74 / 255, 51 / 255), + grDevices::rgb(179 / 255, 0 / 255, 0 / 255)), + "6" = tibble::lst(grDevices::rgb(254 / 255, 240 / 255, 217 / 255), + grDevices::rgb(253 / 255, 212 / 255, 158 / 255), + grDevices::rgb(253 / 255, 187 / 255, 132 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(227 / 255, 74 / 255, 51 / 255), + grDevices::rgb(179 / 255, 0 / 255, 0 / 255)), + "7" = tibble::lst(grDevices::rgb(254 / 255, 240 / 255, 217 / 255), + grDevices::rgb(253 / 255, 212 / 255, 158 / 255), + grDevices::rgb(253 / 255, 187 / 255, 132 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(239 / 255, 101 / 255, 72 / 255), + grDevices::rgb(215 / 255, 48 / 255, 31 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 236 / 255), + grDevices::rgb(254 / 255, 232 / 255, 200 / 255), + grDevices::rgb(253 / 255, 212 / 255, 158 / 255), + grDevices::rgb(253 / 255, 187 / 255, 132 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(239 / 255, 101 / 255, 72 / 255), + grDevices::rgb(215 / 255, 48 / 255, 31 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 236 / 255), + grDevices::rgb(254 / 255, 232 / 255, 200 / 255), + grDevices::rgb(253 / 255, 212 / 255, 158 / 255), + grDevices::rgb(253 / 255, 187 / 255, 132 / 255), + grDevices::rgb(252 / 255, 141 / 255, 89 / 255), + grDevices::rgb(239 / 255, 101 / 255, 72 / 255), + grDevices::rgb(215 / 255, 48 / 255, 31 / 255), + grDevices::rgb(179 / 255, 0 / 255, 0 / 255), + grDevices::rgb(127 / 255, 0 / 255,0 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 235 / 255, 207 / 255), + grDevices::rgb(253 / 255, 220 / 255, 176 / 255), + grDevices::rgb(253 / 255, 203 / 255, 149 / 255), + grDevices::rgb(253 / 255, 182 / 255, 127 / 255), + grDevices::rgb(252 / 255, 146 / 255, 93 / 255), + grDevices::rgb(243 / 255, 114 / 255, 77 / 255), + grDevices::rgb(228 / 255,79 / 255, 53 / 255), + grDevices::rgb(200 / 255, 39 / 255, 24 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 236 / 255, 210 / 255), + grDevices::rgb(253 / 255, 223 / 255, 183 / 255), + grDevices::rgb(253 / 255, 209 / 255, 155 / 255), + grDevices::rgb(253 / 255, 192 / 255, 137 / 255), + grDevices::rgb(253 / 255, 164 / 255, 110 / 255), + grDevices::rgb(249 / 255, 133 / 255, 85 / 255), + grDevices::rgb(240 / 255, 105 / 255, 73 / 255), + grDevices::rgb(224 / 255,71 / 255, 47 / 255), + grDevices::rgb(196 / 255, 36 / 255, 21 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 237 / 255, 213 / 255), + grDevices::rgb(254 / 255, 226 / 255, 188 / 255), + grDevices::rgb(253 / 255, 213 / 255, 161 / 255), + grDevices::rgb(253 / 255, 198 / 255, 143 / 255), + grDevices::rgb(253 / 255, 178 / 255, 124 / 255), + grDevices::rgb(252 / 255, 149 / 255, 96 / 255), + grDevices::rgb(246 / 255, 123 / 255, 81 / 255), + grDevices::rgb(236 / 255, 96 / 255, 68 / 255), + grDevices::rgb(221 / 255, 64 / 255, 42 / 255), + grDevices::rgb(192 / 255, 33 / 255, 19 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 238 / 255, 214 / 255), + grDevices::rgb(254 / 255, 228 / 255, 192 / 255), + grDevices::rgb(253 / 255, 216 / 255, 168 / 255), + grDevices::rgb(253 / 255, 203 / 255, 149 / 255), + grDevices::rgb(253 / 255, 189 / 255, 134 / 255), + grDevices::rgb(253 / 255, 164 / 255, 110 / 255), + grDevices::rgb(250 / 255, 137 / 255, 87 / 255), + grDevices::rgb(243 / 255, 114 / 255, 77 / 255), + grDevices::rgb(233 / 255, 89 / 255, 61 / 255), + grDevices::rgb(219 / 255, 58 / 255, 37 / 255), + grDevices::rgb(188 / 255, 31 / 255, 18 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 238 / 255, 216 / 255), + grDevices::rgb(254 / 255, 230 / 255, 196 / 255), + grDevices::rgb(253 / 255, 219 / 255, 174 / 255), + grDevices::rgb(253 / 255, 208 / 255, 153 / 255), + grDevices::rgb(253 / 255, 194 / 255, 139 / 255), + grDevices::rgb(253 / 255, 176 / 255, 121 / 255), + grDevices::rgb(252 / 255, 151 / 255, 98 / 255), + grDevices::rgb(248 / 255, 129 / 255, 83 / 255), + grDevices::rgb(241 / 255, 107 / 255, 74 / 255), + grDevices::rgb(230 / 255, 82 / 255, 56 / 255), + grDevices::rgb(216 / 255, 52 / 255, 34 / 255), + grDevices::rgb(185 / 255, 29 / 255, 16 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 239 / 255, 217 / 255), + grDevices::rgb(254 / 255, 231 / 255, 199 / 255), + grDevices::rgb(253 / 255, 221 / 255, 178 / 255), + grDevices::rgb(253 / 255, 211 / 255, 158 / 255), + grDevices::rgb(253 / 255, 199 / 255, 144 / 255), + grDevices::rgb(253 / 255, 186 / 255, 132 / 255), + grDevices::rgb(253 / 255, 164 / 255, 110 / 255), + grDevices::rgb(252 / 255, 140 / 255, 89 / 255), + grDevices::rgb(245 / 255, 121 / 255, 80 / 255), + grDevices::rgb(238 / 255, 101 / 255, 71 / 255), + grDevices::rgb(227 / 255,76 / 255, 51 / 255), + grDevices::rgb(215 / 255, 48 / 255, 31 / 255), + grDevices::rgb(183 / 255, 27 / 255, 15 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 239 / 255, 219 / 255), + grDevices::rgb(254 / 255, 232 / 255, 202 / 255), + grDevices::rgb(253 / 255, 223 / 255, 183 / 255), + grDevices::rgb(253 / 255, 214 / 255, 163 / 255), + grDevices::rgb(253 / 255, 203 / 255, 149 / 255), + grDevices::rgb(253 / 255, 192 / 255, 137 / 255), + grDevices::rgb(253 / 255, 174 / 255, 120 / 255), + grDevices::rgb(252 / 255, 153 / 255, 100 / 255), + grDevices::rgb(249 / 255, 133 / 255, 85 / 255), + grDevices::rgb(243 / 255, 114 / 255, 77 / 255), + grDevices::rgb(235 / 255, 94 / 255, 66 / 255), + grDevices::rgb(224 / 255,71 / 255, 47 / 255), + grDevices::rgb(210 / 255, 45 / 255, 28 / 255), + grDevices::rgb(181 / 255, 26 / 255, 14 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 240 / 255, 220 / 255), + grDevices::rgb(254 / 255, 233 / 255, 204 / 255), + grDevices::rgb(254 / 255, 225 / 255, 186 / 255), + grDevices::rgb(253 / 255, 216 / 255, 168 / 255), + grDevices::rgb(253 / 255, 207 / 255, 153 / 255), + grDevices::rgb(253 / 255, 196 / 255, 141 / 255), + grDevices::rgb(253 / 255, 184 / 255, 129 / 255), + grDevices::rgb(253 / 255, 164 / 255, 110 / 255), + grDevices::rgb(252 / 255, 143 / 255, 91 / 255), + grDevices::rgb(247 / 255, 126 / 255, 82 / 255), + grDevices::rgb(241 / 255, 108 / 255, 75 / 255), + grDevices::rgb(233 / 255, 89 / 255, 61 / 255), + grDevices::rgb(222 / 255, 66 / 255, 43 / 255), + grDevices::rgb(207 / 255, 43 / 255, 27 / 255), + grDevices::rgb(179 / 255, 24 / 255, 13 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 240 / 255, 221 / 255), + grDevices::rgb(254 / 255, 234 / 255, 206 / 255), + grDevices::rgb(254 / 255, 227 / 255, 190 / 255), + grDevices::rgb(253 / 255, 219 / 255, 172 / 255), + grDevices::rgb(253 / 255, 210 / 255, 156 / 255), + grDevices::rgb(253 / 255, 200 / 255, 145 / 255), + grDevices::rgb(253 / 255, 189 / 255, 135 / 255), + grDevices::rgb(253 / 255, 173 / 255, 119 / 255), + grDevices::rgb(252 / 255, 154 / 255, 101 / 255), + grDevices::rgb(250 / 255, 136 / 255, 86 / 255), + grDevices::rgb(245 / 255, 120 / 255, 79 / 255), + grDevices::rgb(239 / 255, 103 / 255, 72 / 255), + grDevices::rgb(230 / 255, 84 / 255, 57 / 255), + grDevices::rgb(220 / 255, 62 / 255, 40 / 255), + grDevices::rgb(203 / 255, 41 / 255, 25 / 255), + grDevices::rgb(178 / 255, 23 / 255, 12 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 241 / 255, 221 / 255), + grDevices::rgb(254 / 255, 235 / 255, 207 / 255), + grDevices::rgb(254 / 255, 228 / 255, 192 / 255), + grDevices::rgb(253 / 255, 220 / 255, 176 / 255), + grDevices::rgb(253 / 255, 213 / 255, 160 / 255), + grDevices::rgb(253 / 255, 203 / 255, 149 / 255), + grDevices::rgb(253 / 255, 193 / 255, 139 / 255), + grDevices::rgb(253 / 255, 182 / 255, 127 / 255), + grDevices::rgb(253 / 255, 164 / 255, 110 / 255), + grDevices::rgb(252 / 255, 146 / 255, 93 / 255), + grDevices::rgb(248 / 255, 130 / 255, 84 / 255), + grDevices::rgb(243 / 255, 114 / 255, 77 / 255), + grDevices::rgb(237 / 255, 98 / 255, 69 / 255), + grDevices::rgb(228 / 255,79 / 255, 53 / 255), + grDevices::rgb(219 / 255, 58 / 255, 37 / 255), + grDevices::rgb(200 / 255, 39 / 255, 24 / 255), + grDevices::rgb(176 / 255, 22 / 255, 11 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 235 / 255), + grDevices::rgb(254 / 255, 241 / 255, 222 / 255), + grDevices::rgb(254 / 255, 235 / 255, 209 / 255), + grDevices::rgb(254 / 255, 229 / 255, 195 / 255), + grDevices::rgb(253 / 255, 222 / 255, 180 / 255), + grDevices::rgb(253 / 255, 215 / 255, 164 / 255), + grDevices::rgb(253 / 255, 206 / 255, 152 / 255), + grDevices::rgb(253 / 255, 197 / 255, 142 / 255), + grDevices::rgb(253 / 255, 188 / 255, 133 / 255), + grDevices::rgb(253 / 255, 172 / 255, 118 / 255), + grDevices::rgb(252 / 255, 155 / 255, 102 / 255), + grDevices::rgb(251 / 255, 138 / 255, 88 / 255), + grDevices::rgb(246 / 255, 124 / 255, 81 / 255), + grDevices::rgb(241 / 255, 109 / 255, 75 / 255), + grDevices::rgb(235 / 255, 93 / 255, 65 / 255), + grDevices::rgb(226 / 255,75 / 255, 50 / 255), + grDevices::rgb(217 / 255, 54 / 255, 35 / 255), + grDevices::rgb(198 / 255, 37 / 255, 22 / 255), + grDevices::rgb(175 / 255, 21 / 255, 11 / 255), + grDevices::rgb(153 / 255, 0 / 255, 0 / 255)), + "type" = "sequential" + ), + "PuBu" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(236 / 255, 231 / 255, 242 / 255), + grDevices::rgb(166 / 255, 189 / 255, 219 / 255), + grDevices::rgb(43 / 255, 140 / 255, 190 / 255)), + "4" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), + grDevices::rgb(189 / 255, 201 / 255, 225 / 255), + grDevices::rgb(116 / 255, 169 / 255, 207 / 255), + grDevices::rgb(5 / 255, 112 / 255, 176 / 255)), + "5" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), + grDevices::rgb(189 / 255, 201 / 255, 225 / 255), + grDevices::rgb(116 / 255, 169 / 255, 207 / 255), + grDevices::rgb(43 / 255, 140 / 255, 190 / 255), + grDevices::rgb(4 / 255, 90 / 255, 141 / 255)), + "6" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), + grDevices::rgb(208 / 255, 209 / 255, 230 / 255), + grDevices::rgb(166 / 255, 189 / 255, 219 / 255), + grDevices::rgb(116 / 255, 169 / 255, 207 / 255), + grDevices::rgb(43 / 255, 140 / 255, 190 / 255), + grDevices::rgb(4 / 255, 90 / 255, 141 / 255)), + "7" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), + grDevices::rgb(208 / 255, 209 / 255, 230 / 255), + grDevices::rgb(166 / 255, 189 / 255, 219 / 255), + grDevices::rgb(116 / 255, 169 / 255, 207 / 255), + grDevices::rgb(54 / 255, 144 / 255, 192 / 255), + grDevices::rgb(5 / 255, 112 / 255, 176 / 255), + grDevices::rgb(3 / 255, 78 / 255, 123 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 251 / 255), + grDevices::rgb(236 / 255, 231 / 255, 242 / 255), + grDevices::rgb(208 / 255, 209 / 255, 230 / 255), + grDevices::rgb(166 / 255, 189 / 255, 219 / 255), + grDevices::rgb(116 / 255, 169 / 255, 207 / 255), + grDevices::rgb(54 / 255, 144 / 255, 192 / 255), + grDevices::rgb(5 / 255, 112 / 255, 176 / 255), + grDevices::rgb(3 / 255, 78 / 255, 123 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 251 / 255), + grDevices::rgb(236 / 255, 231 / 255, 242 / 255), + grDevices::rgb(208 / 255, 209 / 255, 230 / 255), + grDevices::rgb(166 / 255, 189 / 255, 219 / 255), + grDevices::rgb(116 / 255, 169 / 255, 207 / 255), + grDevices::rgb(54 / 255, 144 / 255, 192 / 255), + grDevices::rgb(5 / 255, 112 / 255, 176 / 255), + grDevices::rgb(4 / 255, 90 / 255, 141 / 255), + grDevices::rgb(2 / 255, 56 / 255, 88 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(240 / 255, 234 / 255, 243 / 255), + grDevices::rgb(220 / 255, 218 / 255, 235 / 255), + grDevices::rgb(194 / 255, 202 / 255, 226 / 255), + grDevices::rgb(160 / 255, 186 / 255, 217 / 255), + grDevices::rgb(121 / 255, 171 / 255, 208 / 255), + grDevices::rgb(78 / 255, 152 / 255, 197 / 255), + grDevices::rgb(38 / 255, 129 / 255, 184 / 255), + grDevices::rgb(4 / 255, 104 / 255, 163 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(241 / 255, 235 / 255, 244 / 255), + grDevices::rgb(224 / 255, 222 / 255, 237 / 255), + grDevices::rgb(203 / 255, 206 / 255, 228 / 255), + grDevices::rgb(174 / 255, 192 / 255, 221 / 255), + grDevices::rgb(141 / 255, 178 / 255, 213 / 255), + grDevices::rgb(105 / 255, 163 / 255, 204 / 255), + grDevices::rgb(62 / 255, 146 / 255, 193 / 255), + grDevices::rgb(32 / 255, 124 / 255, 182 / 255), + grDevices::rgb(4 / 255, 101 / 255, 159 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(242 / 255, 236 / 255, 245 / 255), + grDevices::rgb(228 / 255, 224 / 255, 238 / 255), + grDevices::rgb(210 / 255, 210 / 255, 231 / 255), + grDevices::rgb(185 / 255, 198 / 255, 224 / 255), + grDevices::rgb(157 / 255, 185 / 255, 216 / 255), + grDevices::rgb(125 / 255, 172 / 255, 209 / 255), + grDevices::rgb(91 / 255, 157 / 255, 200 / 255), + grDevices::rgb(51 / 255, 141 / 255, 190 / 255), + grDevices::rgb(25 / 255, 120 / 255, 180 / 255), + grDevices::rgb(4 / 255, 99 / 255, 156 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(243 / 255, 237 / 255, 245 / 255), + grDevices::rgb(231 / 255, 227 / 255, 239 / 255), + grDevices::rgb(214 / 255, 214 / 255, 232 / 255), + grDevices::rgb(194 / 255, 202 / 255, 226 / 255), + grDevices::rgb(169 / 255, 190 / 255, 219 / 255), + grDevices::rgb(141 / 255, 178 / 255, 213 / 255), + grDevices::rgb(111 / 255, 166 / 255, 205 / 255), + grDevices::rgb(78 / 255, 152 / 255, 197 / 255), + grDevices::rgb(45 / 255, 135 / 255, 188 / 255), + grDevices::rgb(19 / 255, 117 / 255, 178 / 255), + grDevices::rgb(4 / 255, 97 / 255, 153 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(244 / 255, 238 / 255, 246 / 255), + grDevices::rgb(233 / 255, 229 / 255, 241 / 255), + grDevices::rgb(218 / 255, 217 / 255, 234 / 255), + grDevices::rgb(201 / 255, 205 / 255, 228 / 255), + grDevices::rgb(179 / 255, 195 / 255, 222 / 255), + grDevices::rgb(155 / 255, 184 / 255, 216 / 255), + grDevices::rgb(128 / 255, 173 / 255, 209 / 255), + grDevices::rgb(99 / 255, 161 / 255, 202 / 255), + grDevices::rgb(66 / 255, 147 / 255, 194 / 255), + grDevices::rgb(40 / 255, 131 / 255, 185 / 255), + grDevices::rgb(12 / 255, 114 / 255, 177 / 255), + grDevices::rgb(4 / 255, 96 / 255, 151 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(245 / 255, 238 / 255, 246 / 255), + grDevices::rgb(235 / 255, 230 / 255, 242 / 255), + grDevices::rgb(221 / 255, 219 / 255, 235 / 255), + grDevices::rgb(208 / 255, 209 / 255, 229 / 255), + grDevices::rgb(187 / 255, 198 / 255, 224 / 255), + grDevices::rgb(165 / 255, 189 / 255, 218 / 255), + grDevices::rgb(141 / 255, 178 / 255, 213 / 255), + grDevices::rgb(115 / 255, 169 / 255, 206 / 255), + grDevices::rgb(88 / 255, 156 / 255, 199 / 255), + grDevices::rgb(53 / 255, 144 / 255, 191 / 255), + grDevices::rgb(36 / 255, 127 / 255, 184 / 255), + grDevices::rgb(5 / 255, 112 / 255, 176 / 255), + grDevices::rgb(3 / 255, 94 / 255, 149 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(246 / 255, 239 / 255, 246 / 255), + grDevices::rgb(237 / 255, 232 / 255, 242 / 255), + grDevices::rgb(224 / 255, 222 / 255, 237 / 255), + grDevices::rgb(211 / 255, 211 / 255, 231 / 255), + grDevices::rgb(194 / 255, 202 / 255, 226 / 255), + grDevices::rgb(174 / 255, 192 / 255, 221 / 255), + grDevices::rgb(153 / 255, 183 / 255, 215 / 255), + grDevices::rgb(130 / 255, 174 / 255, 210 / 255), + grDevices::rgb(105 / 255, 163 / 255, 204 / 255), + grDevices::rgb(78 / 255, 152 / 255, 197 / 255), + grDevices::rgb(49 / 255, 139 / 255, 189 / 255), + grDevices::rgb(32 / 255, 124 / 255, 182 / 255), + grDevices::rgb(4 / 255, 109 / 255, 172 / 255), + grDevices::rgb(3 / 255, 93 / 255, 147 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(246 / 255, 239 / 255, 247 / 255), + grDevices::rgb(238 / 255, 232 / 255, 243 / 255), + grDevices::rgb(227 / 255, 224 / 255, 238 / 255), + grDevices::rgb(214 / 255, 214 / 255, 232 / 255), + grDevices::rgb(200 / 255, 205 / 255, 227 / 255), + grDevices::rgb(181 / 255, 196 / 255, 223 / 255), + grDevices::rgb(163 / 255, 187 / 255, 218 / 255), + grDevices::rgb(141 / 255, 178 / 255, 213 / 255), + grDevices::rgb(119 / 255, 170 / 255, 207 / 255), + grDevices::rgb(95 / 255, 159 / 255, 201 / 255), + grDevices::rgb(68 / 255, 148 / 255, 194 / 255), + grDevices::rgb(45 / 255, 135 / 255, 188 / 255), + grDevices::rgb(27 / 255, 121 / 255, 181 / 255), + grDevices::rgb(4 / 255, 107 / 255, 169 / 255), + grDevices::rgb(3 / 255, 92 / 255, 145 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(247 / 255, 240 / 255, 247 / 255), + grDevices::rgb(239 / 255, 233 / 255, 243 / 255), + grDevices::rgb(229 / 255, 225 / 255, 239 / 255), + grDevices::rgb(217 / 255, 216 / 255, 234 / 255), + grDevices::rgb(205 / 255, 207 / 255, 229 / 255), + grDevices::rgb(188 / 255, 199 / 255, 224 / 255), + grDevices::rgb(171 / 255, 191 / 255, 220 / 255), + grDevices::rgb(151 / 255, 183 / 255, 215 / 255), + grDevices::rgb(131 / 255, 174 / 255, 210 / 255), + grDevices::rgb(109 / 255, 166 / 255, 205 / 255), + grDevices::rgb(86 / 255, 155 / 255, 199 / 255), + grDevices::rgb(58 / 255, 145 / 255, 192 / 255), + grDevices::rgb(42 / 255, 132 / 255, 186 / 255), + grDevices::rgb(23 / 255, 119 / 255, 179 / 255), + grDevices::rgb(4 / 255, 105 / 255, 166 / 255), + grDevices::rgb(3 / 255, 91 / 255, 144 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(247 / 255, 240 / 255, 247 / 255), + grDevices::rgb(240 / 255, 234 / 255, 243 / 255), + grDevices::rgb(231 / 255, 227 / 255, 239 / 255), + grDevices::rgb(220 / 255, 218 / 255, 235 / 255), + grDevices::rgb(209 / 255, 210 / 255, 230 / 255), + grDevices::rgb(194 / 255, 202 / 255, 226 / 255), + grDevices::rgb(177 / 255, 194 / 255, 222 / 255), + grDevices::rgb(160 / 255, 186 / 255, 217 / 255), + grDevices::rgb(141 / 255, 178 / 255, 213 / 255), + grDevices::rgb(121 / 255, 171 / 255, 208 / 255), + grDevices::rgb(101 / 255, 161 / 255, 202 / 255), + grDevices::rgb(78 / 255, 152 / 255, 197 / 255), + grDevices::rgb(52 / 255, 142 / 255, 191 / 255), + grDevices::rgb(38 / 255, 129 / 255, 184 / 255), + grDevices::rgb(19 / 255, 117 / 255, 178 / 255), + grDevices::rgb(4 / 255, 104 / 255, 163 / 255), + grDevices::rgb(3 / 255, 90 / 255, 143 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(247 / 255, 241 / 255, 247 / 255), + grDevices::rgb(240 / 255, 235 / 255, 244 / 255), + grDevices::rgb(233 / 255, 228 / 255, 240 / 255), + grDevices::rgb(222 / 255, 220 / 255, 236 / 255), + grDevices::rgb(212 / 255, 212 / 255, 231 / 255), + grDevices::rgb(199 / 255, 204 / 255, 227 / 255), + grDevices::rgb(183 / 255, 197 / 255, 223 / 255), + grDevices::rgb(168 / 255, 190 / 255, 219 / 255), + grDevices::rgb(150 / 255, 182 / 255, 215 / 255), + grDevices::rgb(132 / 255, 175 / 255, 210 / 255), + grDevices::rgb(113 / 255, 167 / 255, 206 / 255), + grDevices::rgb(93 / 255, 158 / 255, 200 / 255), + grDevices::rgb(70 / 255, 149 / 255, 195 / 255), + grDevices::rgb(48 / 255, 138 / 255, 189 / 255), + grDevices::rgb(35 / 255, 126 / 255, 183 / 255), + grDevices::rgb(15 / 255, 115 / 255, 177 / 255), + grDevices::rgb(4 / 255, 102 / 255, 161 / 255), + grDevices::rgb(3 / 255, 90 / 255, 142 / 255), + grDevices::rgb(2 / 255, 77 / 255, 122 / 255)), + "type" = "sequential" + ), + "BuPu" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(224 / 255, 236 / 255, 244 / 255), + grDevices::rgb(158 / 255, 188 / 255, 218 / 255), + grDevices::rgb(136 / 255, 86 / 255, 167 / 255)), + "4" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), + grDevices::rgb(179 / 255, 205 / 255, 227 / 255), + grDevices::rgb(140 / 255, 150 / 255, 198 / 255), + grDevices::rgb(136 / 255, 65 / 255, 157 / 255)), + "5" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), + grDevices::rgb(179 / 255, 205 / 255, 227 / 255), + grDevices::rgb(140 / 255, 150 / 255, 198 / 255), + grDevices::rgb(136 / 255, 86 / 255, 167 / 255), + grDevices::rgb(129 / 255, 15 / 255, 124 / 255)), + "6" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), + grDevices::rgb(191 / 255, 211 / 255, 230 / 255), + grDevices::rgb(158 / 255, 188 / 255, 218 / 255), + grDevices::rgb(140 / 255, 150 / 255, 198 / 255), + grDevices::rgb(136 / 255, 86 / 255, 167 / 255), + grDevices::rgb(129 / 255, 15 / 255, 124 / 255)), + "7" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), + grDevices::rgb(191 / 255, 211 / 255, 230 / 255), + grDevices::rgb(158 / 255, 188 / 255, 218 / 255), + grDevices::rgb(140 / 255, 150 / 255, 198 / 255), + grDevices::rgb(140 / 255, 107 / 255, 177 / 255), + grDevices::rgb(136 / 255, 65 / 255, 157 / 255), + grDevices::rgb(110 / 255, 1 / 255, 107 / 255)), + "8" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(224 / 255, 236 / 255, 244 / 255), + grDevices::rgb(191 / 255, 211 / 255, 230 / 255), + grDevices::rgb(158 / 255, 188 / 255, 218 / 255), + grDevices::rgb(140 / 255, 150 / 255, 198 / 255), + grDevices::rgb(140 / 255, 107 / 255, 177 / 255), + grDevices::rgb(136 / 255, 65 / 255, 157 / 255), + grDevices::rgb(110 / 255, 1 / 255, 107 / 255)), + "9" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(224 / 255, 236 / 255, 244 / 255), + grDevices::rgb(191 / 255, 211 / 255, 230 / 255), + grDevices::rgb(158 / 255, 188 / 255, 218 / 255), + grDevices::rgb(140 / 255, 150 / 255, 198 / 255), + grDevices::rgb(140 / 255, 107 / 255, 177 / 255), + grDevices::rgb(136 / 255, 65 / 255, 157 / 255), + grDevices::rgb(129 / 255, 15 / 255, 124 / 255), + grDevices::rgb(77 / 255, 0 / 255, 75 / 255)), + "10" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(229 / 255, 239 / 255, 245 / 255), + grDevices::rgb(205 / 255, 222 / 255, 236 / 255), + grDevices::rgb(180 / 255, 203 / 255, 226 / 255), + grDevices::rgb(156 / 255, 183 / 255, 215 / 255), + grDevices::rgb(142 / 255, 154 / 255, 200 / 255), + grDevices::rgb(140 / 255, 121 / 255, 183 / 255), + grDevices::rgb(138 / 255, 89 / 255, 168 / 255), + grDevices::rgb(130 / 255, 54 / 255, 145 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "11" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(230 / 255, 240 / 255, 246 / 255), + grDevices::rgb(210 / 255, 225 / 255, 238 / 255), + grDevices::rgb(187 / 255, 208 / 255, 228 / 255), + grDevices::rgb(164 / 255, 192 / 255, 220 / 255), + grDevices::rgb(149 / 255, 168 / 255, 207 / 255), + grDevices::rgb(140 / 255, 141 / 255, 193 / 255), + grDevices::rgb(140 / 255, 111 / 255, 179 / 255), + grDevices::rgb(138 / 255, 82 / 255, 164 / 255), + grDevices::rgb(128 / 255, 50 / 255, 141 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "12" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(232 / 255, 241 / 255, 247 / 255), + grDevices::rgb(215 / 255, 229 / 255, 240 / 255), + grDevices::rgb(194 / 255, 213 / 255, 231 / 255), + grDevices::rgb(173 / 255, 198 / 255, 223 / 255), + grDevices::rgb(154 / 255, 181 / 255, 214 / 255), + grDevices::rgb(143 / 255, 156 / 255, 201 / 255), + grDevices::rgb(140 / 255, 130 / 255, 188 / 255), + grDevices::rgb(139 / 255, 103 / 255, 175 / 255), + grDevices::rgb(137 / 255, 77 / 255, 162 / 255), + grDevices::rgb(126 / 255, 46 / 255, 138 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "13" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(233 / 255, 242 / 255, 247 / 255), + grDevices::rgb(218 / 255, 231 / 255, 241 / 255), + grDevices::rgb(199 / 255, 217 / 255, 233 / 255), + grDevices::rgb(180 / 255, 203 / 255, 226 / 255), + grDevices::rgb(160 / 255, 189 / 255, 219 / 255), + grDevices::rgb(149 / 255, 168 / 255, 207 / 255), + grDevices::rgb(140 / 255, 146 / 255, 196 / 255), + grDevices::rgb(140 / 255, 121 / 255, 183 / 255), + grDevices::rgb(139 / 255, 97 / 255, 171 / 255), + grDevices::rgb(136 / 255, 72 / 255, 160 / 255), + grDevices::rgb(125 / 255, 43 / 255, 135 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "14" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(234 / 255, 243 / 255, 248 / 255), + grDevices::rgb(221 / 255, 234 / 255, 242 / 255), + grDevices::rgb(203 / 255, 220 / 255, 235 / 255), + grDevices::rgb(185 / 255, 207 / 255, 228 / 255), + grDevices::rgb(168 / 255, 195 / 255, 221 / 255), + grDevices::rgb(153 / 255, 179 / 255, 213 / 255), + grDevices::rgb(144 / 255, 158 / 255, 202 / 255), + grDevices::rgb(140 / 255, 136 / 255, 191 / 255), + grDevices::rgb(140 / 255, 113 / 255, 180 / 255), + grDevices::rgb(138 / 255, 91 / 255, 169 / 255), + grDevices::rgb(136 / 255, 68 / 255, 158 / 255), + grDevices::rgb(124 / 255, 41 / 255, 133 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "15" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(235 / 255, 243 / 255, 248 / 255), + grDevices::rgb(223 / 255, 235 / 255, 243 / 255), + grDevices::rgb(207 / 255, 223 / 255, 236 / 255), + grDevices::rgb(191 / 255, 210 / 255, 229 / 255), + grDevices::rgb(174 / 255, 199 / 255, 224 / 255), + grDevices::rgb(158 / 255, 187 / 255, 217 / 255), + grDevices::rgb(149 / 255, 168 / 255, 207 / 255), + grDevices::rgb(140 / 255, 150 / 255, 197 / 255), + grDevices::rgb(140 / 255, 128 / 255, 187 / 255), + grDevices::rgb(140 / 255, 107 / 255, 177 / 255), + grDevices::rgb(138 / 255, 86 / 255, 166 / 255), + grDevices::rgb(135 / 255, 64 / 255, 157 / 255), + grDevices::rgb(123 / 255, 39 / 255, 131 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "16" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(236 / 255, 244 / 255, 248 / 255), + grDevices::rgb(225 / 255, 237 / 255, 244 / 255), + grDevices::rgb(210 / 255, 225 / 255, 238 / 255), + grDevices::rgb(195 / 255, 214 / 255, 231 / 255), + grDevices::rgb(180 / 255, 203 / 255, 226 / 255), + grDevices::rgb(164 / 255, 192 / 255, 220 / 255), + grDevices::rgb(153 / 255, 177 / 255, 212 / 255), + grDevices::rgb(144 / 255, 160 / 255, 203 / 255), + grDevices::rgb(140 / 255, 141 / 255, 193 / 255), + grDevices::rgb(140 / 255, 121 / 255, 183 / 255), + grDevices::rgb(139 / 255, 101 / 255, 174 / 255), + grDevices::rgb(138 / 255, 82 / 255, 164 / 255), + grDevices::rgb(134 / 255, 61 / 255, 153 / 255), + grDevices::rgb(122 / 255, 37 / 255, 129 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "17" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(236 / 255, 244 / 255, 249 / 255), + grDevices::rgb(226 / 255, 237 / 255, 245 / 255), + grDevices::rgb(213 / 255, 228 / 255, 239 / 255), + grDevices::rgb(199 / 255, 217 / 255, 233 / 255), + grDevices::rgb(184 / 255, 206 / 255, 227 / 255), + grDevices::rgb(170 / 255, 196 / 255, 222 / 255), + grDevices::rgb(156 / 255, 185 / 255, 216 / 255), + grDevices::rgb(149 / 255, 168 / 255, 207 / 255), + grDevices::rgb(141 / 255, 152 / 255, 199 / 255), + grDevices::rgb(140 / 255, 134 / 255, 190 / 255), + grDevices::rgb(140 / 255, 115 / 255, 180 / 255), + grDevices::rgb(139 / 255, 97 / 255, 171 / 255), + grDevices::rgb(137 / 255, 78 / 255, 163 / 255), + grDevices::rgb(132 / 255, 58 / 255, 150 / 255), + grDevices::rgb(121 / 255, 35 / 255, 128 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "18" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(237 / 255, 245 / 255, 249 / 255), + grDevices::rgb(228 / 255, 238 / 255, 245 / 255), + grDevices::rgb(216 / 255, 230 / 255, 240 / 255), + grDevices::rgb(202 / 255, 219 / 255, 234 / 255), + grDevices::rgb(189 / 255, 209 / 255, 229 / 255), + grDevices::rgb(175 / 255, 200 / 255, 224 / 255), + grDevices::rgb(161 / 255, 190 / 255, 219 / 255), + grDevices::rgb(152 / 255, 176 / 255, 212 / 255), + grDevices::rgb(145 / 255, 161 / 255, 203 / 255), + grDevices::rgb(140 / 255, 145 / 255, 195 / 255), + grDevices::rgb(140 / 255, 127 / 255, 186 / 255), + grDevices::rgb(140 / 255, 109 / 255, 178 / 255), + grDevices::rgb(139 / 255, 92 / 255, 169 / 255), + grDevices::rgb(137 / 255, 75 / 255, 161 / 255), + grDevices::rgb(131 / 255, 56 / 255, 147 / 255), + grDevices::rgb(121 / 255, 34 / 255, 127 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "19" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(238 / 255, 245 / 255, 249 / 255), + grDevices::rgb(229 / 255, 239 / 255, 245 / 255), + grDevices::rgb(218 / 255, 231 / 255, 241 / 255), + grDevices::rgb(205 / 255, 222 / 255, 236 / 255), + grDevices::rgb(192 / 255, 212 / 255, 230 / 255), + grDevices::rgb(180 / 255, 203 / 255, 226 / 255), + grDevices::rgb(167 / 255, 194 / 255, 221 / 255), + grDevices::rgb(156 / 255, 183 / 255, 215 / 255), + grDevices::rgb(149 / 255, 168 / 255, 207 / 255), + grDevices::rgb(142 / 255, 154 / 255, 200 / 255), + grDevices::rgb(140 / 255, 138 / 255, 192 / 255), + grDevices::rgb(140 / 255, 121 / 255, 183 / 255), + grDevices::rgb(139 / 255, 104 / 255, 175 / 255), + grDevices::rgb(138 / 255, 89 / 255, 168 / 255), + grDevices::rgb(136 / 255, 72 / 255, 160 / 255), + grDevices::rgb(130 / 255, 54 / 255, 145 / 255), + grDevices::rgb(120 / 255, 32 / 255, 126 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "20" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(238 / 255, 246 / 255, 249 / 255), + grDevices::rgb(230 / 255, 240 / 255, 246 / 255), + grDevices::rgb(220 / 255, 233 / 255, 242 / 255), + grDevices::rgb(208 / 255, 224 / 255, 237 / 255), + grDevices::rgb(196 / 255, 214 / 255, 232 / 255), + grDevices::rgb(184 / 255, 206 / 255, 227 / 255), + grDevices::rgb(172 / 255, 197 / 255, 223 / 255), + grDevices::rgb(159 / 255, 189 / 255, 218 / 255), + grDevices::rgb(152 / 255, 175 / 255, 211 / 255), + grDevices::rgb(145 / 255, 161 / 255, 204 / 255), + grDevices::rgb(140 / 255, 147 / 255, 196 / 255), + grDevices::rgb(140 / 255, 132 / 255, 189 / 255), + grDevices::rgb(140 / 255, 116 / 255, 181 / 255), + grDevices::rgb(139 / 255, 100 / 255, 173 / 255), + grDevices::rgb(138 / 255, 85 / 255, 166 / 255), + grDevices::rgb(136 / 255, 69 / 255, 159 / 255), + grDevices::rgb(129 / 255, 51 / 255, 143 / 255), + grDevices::rgb(119 / 255, 31 / 255, 125 / 255), + grDevices::rgb(109 / 255, 0 / 255, 107 / 255)), + "type" = "sequential" + ), + "Oranges" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(254 / 255, 230 / 255, 206 / 255), + grDevices::rgb(230 / 255, 85 / 255, 13 / 255)), + "3" = tibble::lst(grDevices::rgb(254 / 255, 230 / 255, 206 / 255), + grDevices::rgb(253 / 255, 174 / 255, 107 / 255), + grDevices::rgb(230 / 255, 85 / 255, 13 / 255)), + "4" = tibble::lst(grDevices::rgb(254 / 255, 237 / 255, 222 / 255), + grDevices::rgb(253 / 255, 190 / 255, 133 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(217 / 255, 71 / 255, 1 / 255)), + "5" = tibble::lst(grDevices::rgb(254 / 255, 237 / 255, 222 / 255), + grDevices::rgb(253 / 255, 190 / 255, 133 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(230 / 255, 85 / 255, 13 / 255), + grDevices::rgb(166 / 255, 54 / 255, 3 / 255)), + "6" = tibble::lst(grDevices::rgb(254 / 255, 237 / 255, 222 / 255), + grDevices::rgb(253 / 255, 208 / 255, 162 / 255), + grDevices::rgb(253 / 255, 174 / 255, 107 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(230 / 255, 85 / 255, 13 / 255), + grDevices::rgb(166 / 255, 54 / 255, 3 / 255)), + "7" = tibble::lst(grDevices::rgb(254 / 255, 237 / 255, 222 / 255), + grDevices::rgb(253 / 255, 208 / 255, 162 / 255), + grDevices::rgb(253 / 255, 174 / 255, 107 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(241 / 255, 105 / 255, 19 / 255), + grDevices::rgb(217 / 255, 72 / 255, 1 / 255), + grDevices::rgb(140 / 255, 45 / 255, 4 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 245 / 255, 235 / 255), + grDevices::rgb(254 / 255, 230 / 255, 206 / 255), + grDevices::rgb(253 / 255, 208 / 255, 162 / 255), + grDevices::rgb(253 / 255, 174 / 255, 107 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(241 / 255, 105 / 255, 19 / 255), + grDevices::rgb(217 / 255, 72 / 255, 1 / 255), + grDevices::rgb(140 / 255, 45 / 255, 4 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 245 / 255, 235 / 255), + grDevices::rgb(254 / 255, 230 / 255, 206 / 255), + grDevices::rgb(253 / 255, 208 / 255, 162 / 255), + grDevices::rgb(253 / 255, 174 / 255, 107 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(241 / 255, 105 / 255, 19 / 255), + grDevices::rgb(217 / 255, 72 / 255, 1 / 255), + grDevices::rgb(166 / 255, 54 / 255, 3 / 255), + grDevices::rgb(127 / 255, 39 / 255, 4 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 233 / 255, 212 / 255), + grDevices::rgb(253 / 255, 217 / 255, 181 / 255), + grDevices::rgb(253 / 255, 196 / 255, 143 / 255), + grDevices::rgb(253 / 255, 170 / 255, 101 / 255), + grDevices::rgb(253 / 255, 144 / 255, 65 / 255), + grDevices::rgb(245 / 255, 117 / 255, 34 / 255), + grDevices::rgb(230 / 255, 90 / 255, 10 / 255), + grDevices::rgb(199 / 255, 65 / 255, 2 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 234 / 255, 214 / 255), + grDevices::rgb(254 / 255, 221 / 255, 188 / 255), + grDevices::rgb(253 / 255, 204 / 255, 156 / 255), + grDevices::rgb(253 / 255, 180 / 255, 117 / 255), + grDevices::rgb(253 / 255, 157 / 255, 83 / 255), + grDevices::rgb(250 / 255, 134 / 255, 52 / 255), + grDevices::rgb(242 / 255, 108 / 255, 24 / 255), + grDevices::rgb(226 / 255, 85 / 255, 7 / 255), + grDevices::rgb(193 / 255, 63 / 255, 2 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 235 / 255, 216 / 255), + grDevices::rgb(254 / 255, 223 / 255, 193 / 255), + grDevices::rgb(253 / 255, 209 / 255, 165 / 255), + grDevices::rgb(253 / 255, 189 / 255, 131 / 255), + grDevices::rgb(253 / 255, 168 / 255, 98 / 255), + grDevices::rgb(253 / 255, 147 / 255, 68 / 255), + grDevices::rgb(247 / 255, 124 / 255, 43 / 255), + grDevices::rgb(238 / 255, 102 / 255, 17 / 255), + grDevices::rgb(223 / 255, 81 / 255, 5 / 255), + grDevices::rgb(188 / 255, 61 / 255, 2 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 236 / 255, 218 / 255), + grDevices::rgb(254 / 255, 226 / 255, 198 / 255), + grDevices::rgb(253 / 255, 213 / 255, 172 / 255), + grDevices::rgb(253 / 255, 196 / 255, 143 / 255), + grDevices::rgb(253 / 255, 176 / 255, 111 / 255), + grDevices::rgb(253 / 255, 157 / 255, 83 / 255), + grDevices::rgb(252 / 255, 138 / 255, 56 / 255), + grDevices::rgb(245 / 255, 117 / 255, 34 / 255), + grDevices::rgb(235 / 255, 97 / 255, 14 / 255), + grDevices::rgb(221 / 255, 77 / 255, 3 / 255), + grDevices::rgb(184 / 255, 60 / 255, 2 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 236 / 255, 219 / 255), + grDevices::rgb(254 / 255, 228 / 255, 202 / 255), + grDevices::rgb(253 / 255, 216 / 255, 178 / 255), + grDevices::rgb(253 / 255, 202 / 255, 153 / 255), + grDevices::rgb(253 / 255, 184 / 255, 123 / 255), + grDevices::rgb(253 / 255, 166 / 255, 96 / 255), + grDevices::rgb(253 / 255, 148 / 255, 71 / 255), + grDevices::rgb(249 / 255, 130 / 255, 48 / 255), + grDevices::rgb(242 / 255, 110 / 255, 26 / 255), + grDevices::rgb(231 / 255, 92 / 255, 11 / 255), + grDevices::rgb(218 / 255, 74 / 255, 2 / 255), + grDevices::rgb(180 / 255, 59 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 237 / 255, 220 / 255), + grDevices::rgb(254 / 255, 229 / 255, 205 / 255), + grDevices::rgb(253 / 255, 218 / 255, 183 / 255), + grDevices::rgb(253 / 255, 208 / 255, 161 / 255), + grDevices::rgb(253 / 255, 191 / 255, 134 / 255), + grDevices::rgb(253 / 255, 173 / 255, 107 / 255), + grDevices::rgb(253 / 255, 157 / 255, 83 / 255), + grDevices::rgb(253 / 255, 140 / 255, 59 / 255), + grDevices::rgb(247 / 255, 123 / 255, 41 / 255), + grDevices::rgb(241 / 255, 104 / 255, 19 / 255), + grDevices::rgb(229 / 255, 88 / 255, 9 / 255), + grDevices::rgb(216 / 255, 71 / 255, 0 / 255), + grDevices::rgb(177 / 255, 58 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 237 / 255, 221 / 255), + grDevices::rgb(254 / 255, 230 / 255, 207 / 255), + grDevices::rgb(254 / 255, 221 / 255, 188 / 255), + grDevices::rgb(253 / 255, 210 / 255, 167 / 255), + grDevices::rgb(253 / 255, 196 / 255, 143 / 255), + grDevices::rgb(253 / 255, 180 / 255, 117 / 255), + grDevices::rgb(253 / 255, 165 / 255, 94 / 255), + grDevices::rgb(253 / 255, 149 / 255, 72 / 255), + grDevices::rgb(250 / 255, 134 / 255, 52 / 255), + grDevices::rgb(245 / 255, 117 / 255, 34 / 255), + grDevices::rgb(237 / 255, 100 / 255, 16 / 255), + grDevices::rgb(226 / 255, 85 / 255, 7 / 255), + grDevices::rgb(211 / 255,70 / 255, 1 / 255), + grDevices::rgb(175 / 255, 57 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 238 / 255, 222 / 255), + grDevices::rgb(254 / 255, 231 / 255, 209 / 255), + grDevices::rgb(254 / 255, 223 / 255, 192 / 255), + grDevices::rgb(253 / 255, 213 / 255, 172 / 255), + grDevices::rgb(253 / 255, 201 / 255, 151 / 255), + grDevices::rgb(253 / 255, 186 / 255, 127 / 255), + grDevices::rgb(253 / 255, 171 / 255, 104 / 255), + grDevices::rgb(253 / 255, 157 / 255, 83 / 255), + grDevices::rgb(253 / 255, 143 / 255, 63 / 255), + grDevices::rgb(248 / 255, 127 / 255, 46 / 255), + grDevices::rgb(243 / 255, 111 / 255, 28 / 255), + grDevices::rgb(235 / 255, 97 / 255, 14 / 255), + grDevices::rgb(224 / 255, 82 / 255, 5 / 255), + grDevices::rgb(207 / 255, 68 / 255, 1 / 255), + grDevices::rgb(172 / 255, 56 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 238 / 255, 223 / 255), + grDevices::rgb(254 / 255, 232 / 255, 211 / 255), + grDevices::rgb(254 / 255, 224 / 255, 195 / 255), + grDevices::rgb(253 / 255, 215 / 255, 177 / 255), + grDevices::rgb(253 / 255, 206 / 255, 158 / 255), + grDevices::rgb(253 / 255, 192 / 255, 136 / 255), + grDevices::rgb(253 / 255, 178 / 255, 113 / 255), + grDevices::rgb(253 / 255, 164 / 255, 93 / 255), + grDevices::rgb(253 / 255, 150 / 255, 74 / 255), + grDevices::rgb(251 / 255, 136 / 255, 55 / 255), + grDevices::rgb(246 / 255, 122 / 255, 40 / 255), + grDevices::rgb(241 / 255, 107 / 255, 22 / 255), + grDevices::rgb(232 / 255, 93 / 255, 12 / 255), + grDevices::rgb(222 / 255, 80 / 255, 4 / 255), + grDevices::rgb(202 / 255, 67 / 255, 1 / 255), + grDevices::rgb(170 / 255, 55 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 239 / 255, 223 / 255), + grDevices::rgb(254 / 255, 233 / 255, 212 / 255), + grDevices::rgb(254 / 255, 226 / 255, 198 / 255), + grDevices::rgb(253 / 255, 217 / 255, 181 / 255), + grDevices::rgb(253 / 255, 209 / 255, 164 / 255), + grDevices::rgb(253 / 255, 196 / 255, 143 / 255), + grDevices::rgb(253 / 255, 183 / 255, 122 / 255), + grDevices::rgb(253 / 255, 170 / 255, 101 / 255), + grDevices::rgb(253 / 255, 157 / 255, 83 / 255), + grDevices::rgb(253 / 255, 144 / 255, 65 / 255), + grDevices::rgb(249 / 255, 131 / 255, 49 / 255), + grDevices::rgb(245 / 255, 117 / 255, 34 / 255), + grDevices::rgb(239 / 255, 103 / 255, 18 / 255), + grDevices::rgb(230 / 255, 90 / 255, 10 / 255), + grDevices::rgb(221 / 255, 77 / 255, 3 / 255), + grDevices::rgb(199 / 255, 65 / 255, 2 / 255), + grDevices::rgb(169 / 255, 55 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 235 / 255), + grDevices::rgb(254 / 255, 239 / 255, 224 / 255), + grDevices::rgb(254 / 255, 233 / 255, 213 / 255), + grDevices::rgb(254 / 255, 227 / 255, 201 / 255), + grDevices::rgb(253 / 255, 219 / 255, 185 / 255), + grDevices::rgb(253 / 255, 211 / 255, 168 / 255), + grDevices::rgb(253 / 255, 200 / 255, 150 / 255), + grDevices::rgb(253 / 255, 188 / 255, 130 / 255), + grDevices::rgb(253 / 255, 175 / 255, 109 / 255), + grDevices::rgb(253 / 255, 163 / 255, 92 / 255), + grDevices::rgb(253 / 255, 151 / 255, 75 / 255), + grDevices::rgb(252 / 255, 139 / 255, 58 / 255), + grDevices::rgb(248 / 255, 126 / 255, 44 / 255), + grDevices::rgb(243 / 255, 112 / 255, 29 / 255), + grDevices::rgb(237 / 255, 99 / 255, 16 / 255), + grDevices::rgb(228 / 255, 88 / 255, 8 / 255), + grDevices::rgb(219 / 255, 75 / 255, 2 / 255), + grDevices::rgb(196 / 255, 64 / 255, 2 / 255), + grDevices::rgb(167 / 255, 54 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "type" = "sequential" + ), + "BuGn" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(), + "3" = tibble::lst(grDevices::rgb(229 / 255, 245 / 255, 249 / 255), + grDevices::rgb(153 / 255, 216 / 255, 201 / 255), + grDevices::rgb(44 / 255, 162 / 255, 95 / 255)), + "4" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), + grDevices::rgb(178 / 255, 226 / 255, 226 / 255), + grDevices::rgb(102 / 255, 194 / 255, 164 / 255), + grDevices::rgb(35 / 255, 139 / 255, 69 / 255)), + "5" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), + grDevices::rgb(178 / 255, 226 / 255, 226 / 255), + grDevices::rgb(102 / 255, 194 / 255, 164 / 255), + grDevices::rgb(44 / 255, 162 / 255, 95 / 255), + grDevices::rgb(0 / 255, 109 / 255, 44 / 255)), + "6" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), + grDevices::rgb(204 / 255, 236 / 255, 230 / 255), + grDevices::rgb(153 / 255, 216 / 255, 201 / 255), + grDevices::rgb(102 / 255, 194 / 255, 164 / 255), + grDevices::rgb(44 / 255, 162 / 255, 95 / 255), + grDevices::rgb(0 / 255, 109 / 255, 44 / 255)), + "7" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 251 / 255), + grDevices::rgb(204 / 255, 236 / 255, 230 / 255), + grDevices::rgb(153 / 255, 216 / 255, 201 / 255), + grDevices::rgb(102 / 255, 194 / 255, 164 / 255), + grDevices::rgb(65 / 255, 174 / 255, 118 / 255), + grDevices::rgb(35 / 255, 139 / 255, 69 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "8" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(229 / 255, 245 / 255, 249 / 255), + grDevices::rgb(204 / 255, 236 / 255, 230 / 255), + grDevices::rgb(153 / 255, 216 / 255, 201 / 255), + grDevices::rgb(102 / 255, 194 / 255, 164 / 255), + grDevices::rgb(65 / 255, 174 / 255, 118 / 255), + grDevices::rgb(35 / 255, 139 / 255, 69 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "9" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(229 / 255, 245 / 255, 249 / 255), + grDevices::rgb(204 / 255, 236 / 255, 230 / 255), + grDevices::rgb(153 / 255, 216 / 255, 201 / 255), + grDevices::rgb(102 / 255, 194 / 255, 164 / 255), + grDevices::rgb(65 / 255, 174 / 255, 118 / 255), + grDevices::rgb(35 / 255, 139 / 255, 69 / 255), + grDevices::rgb(0 / 255, 109 / 255, 44 / 255), + grDevices::rgb(0 / 255, 68 / 255, 27 / 255)), + "10" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(233 / 255, 246 / 255, 249 / 255), + grDevices::rgb(215 / 255, 240 / 255, 238 / 255), + grDevices::rgb(187 / 255, 229 / 255, 220 / 255), + grDevices::rgb(147 / 255, 213 / 255, 196 / 255), + grDevices::rgb(108 / 255, 196 / 255, 168 / 255), + grDevices::rgb(78 / 255, 180 / 255, 133 / 255), + grDevices::rgb(52 / 255, 158 / 255, 96 / 255), + grDevices::rgb(27 / 255, 127 / 255, 61 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "11" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(234 / 255, 247 / 255, 250 / 255), + grDevices::rgb(219 / 255, 241 / 255, 241 / 255), + grDevices::rgb(199 / 255, 234 / 255, 227 / 255), + grDevices::rgb(163 / 255, 220 / 255, 206 / 255), + grDevices::rgb(128 / 255, 205 / 255, 182 / 255), + grDevices::rgb(95 / 255, 190 / 255, 154 / 255), + grDevices::rgb(69 / 255, 176 / 255, 122 / 255), + grDevices::rgb(47 / 255, 152 / 255, 88 / 255), + grDevices::rgb(25 / 255, 123 / 255, 58 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "12" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(235 / 255, 247 / 255, 250 / 255), + grDevices::rgb(222 / 255, 242 / 255, 243 / 255), + grDevices::rgb(206 / 255, 236 / 255, 231 / 255), + grDevices::rgb(176 / 255, 225 / 255, 214 / 255), + grDevices::rgb(144 / 255, 212 / 255, 194 / 255), + grDevices::rgb(111 / 255, 198 / 255, 170 / 255), + grDevices::rgb(86 / 255, 184 / 255, 142 / 255), + grDevices::rgb(62 / 255, 170 / 255, 113 / 255), + grDevices::rgb(44 / 255, 148 / 255, 82 / 255), + grDevices::rgb(23 / 255, 119 / 255, 56 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "13" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(236 / 255, 247 / 255, 250 / 255), + grDevices::rgb(224 / 255, 243 / 255, 245 / 255), + grDevices::rgb(210 / 255, 238 / 255, 234 / 255), + grDevices::rgb(187 / 255, 229 / 255, 220 / 255), + grDevices::rgb(157 / 255, 217 / 255, 203 / 255), + grDevices::rgb(128 / 255, 205 / 255, 182 / 255), + grDevices::rgb(99 / 255, 192 / 255, 160 / 255), + grDevices::rgb(78 / 255, 180 / 255, 133 / 255), + grDevices::rgb(58 / 255, 165 / 255, 105 / 255), + grDevices::rgb(40 / 255, 144 / 255, 77 / 255), + grDevices::rgb(21 / 255, 117 / 255, 54 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "14" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(237 / 255, 248 / 255, 250 / 255), + grDevices::rgb(227 / 255, 244 / 255, 247 / 255), + grDevices::rgb(213 / 255, 239 / 255, 237 / 255), + grDevices::rgb(196 / 255, 232 / 255, 225 / 255), + grDevices::rgb(168 / 255, 222 / 255, 209 / 255), + grDevices::rgb(141 / 255, 210 / 255, 192 / 255), + grDevices::rgb(114 / 255, 199 / 255, 172 / 255), + grDevices::rgb(91 / 255, 187 / 255, 149 / 255), + grDevices::rgb(71 / 255, 177 / 255, 125 / 255), + grDevices::rgb(54 / 255, 160 / 255, 98 / 255), + grDevices::rgb(37 / 255, 141 / 255, 72 / 255), + grDevices::rgb(19 / 255, 114 / 255, 53 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "15" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(238 / 255, 248 / 255, 250 / 255), + grDevices::rgb(229 / 255, 244 / 255, 248 / 255), + grDevices::rgb(216 / 255, 240 / 255, 239 / 255), + grDevices::rgb(204 / 255, 235 / 255, 229 / 255), + grDevices::rgb(178 / 255, 226 / 255, 215 / 255), + grDevices::rgb(153 / 255, 216 / 255, 201 / 255), + grDevices::rgb(128 / 255, 205 / 255, 182 / 255), + grDevices::rgb(102 / 255, 193 / 255, 164 / 255), + grDevices::rgb(84 / 255, 184 / 255, 140 / 255), + grDevices::rgb(64 / 255, 173 / 255, 118 / 255), + grDevices::rgb(50 / 255, 156 / 255, 93 / 255), + grDevices::rgb(34 / 255, 139 / 255, 69 / 255), + grDevices::rgb(18 / 255, 112 / 255, 52 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "16" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(238 / 255, 248 / 255, 251 / 255), + grDevices::rgb(230 / 255, 245 / 255, 249 / 255), + grDevices::rgb(219 / 255, 241 / 255, 241 / 255), + grDevices::rgb(207 / 255, 237 / 255, 232 / 255), + grDevices::rgb(187 / 255, 229 / 255, 220 / 255), + grDevices::rgb(163 / 255, 220 / 255, 206 / 255), + grDevices::rgb(139 / 255, 210 / 255, 191 / 255), + grDevices::rgb(116 / 255, 199 / 255, 173 / 255), + grDevices::rgb(95 / 255, 190 / 255, 154 / 255), + grDevices::rgb(78 / 255, 180 / 255, 133 / 255), + grDevices::rgb(61 / 255, 169 / 255, 111 / 255), + grDevices::rgb(47 / 255, 152 / 255, 88 / 255), + grDevices::rgb(32 / 255, 135 / 255, 66 / 255), + grDevices::rgb(17 / 255, 111 / 255, 51 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "17" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(239 / 255, 248 / 255, 251 / 255), + grDevices::rgb(231 / 255, 245 / 255, 249 / 255), + grDevices::rgb(221 / 255, 242 / 255, 243 / 255), + grDevices::rgb(210 / 255, 238 / 255, 234 / 255), + grDevices::rgb(194 / 255, 232 / 255, 224 / 255), + grDevices::rgb(172 / 255, 223 / 255, 211 / 255), + grDevices::rgb(149 / 255, 214 / 255, 198 / 255), + grDevices::rgb(128 / 255, 205 / 255, 182 / 255), + grDevices::rgb(105 / 255, 195 / 255, 166 / 255), + grDevices::rgb(89 / 255, 186 / 255, 146 / 255), + grDevices::rgb(72 / 255, 177 / 255, 126 / 255), + grDevices::rgb(58 / 255, 165 / 255, 105 / 255), + grDevices::rgb(45 / 255, 149 / 255, 84 / 255), + grDevices::rgb(30 / 255, 132 / 255, 64 / 255), + grDevices::rgb(15 / 255, 109 / 255, 50 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "18" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(239 / 255, 249 / 255, 251 / 255), + grDevices::rgb(232 / 255, 246 / 255, 249 / 255), + grDevices::rgb(223 / 255, 242 / 255, 244 / 255), + grDevices::rgb(212 / 255, 239 / 255, 236 / 255), + grDevices::rgb(201 / 255, 234 / 255, 228 / 255), + grDevices::rgb(180 / 255, 226 / 255, 216 / 255), + grDevices::rgb(159 / 255, 218 / 255, 204 / 255), + grDevices::rgb(138 / 255, 209 / 255, 189 / 255), + grDevices::rgb(117 / 255, 200 / 255, 174 / 255), + grDevices::rgb(98 / 255, 191 / 255, 158 / 255), + grDevices::rgb(83 / 255, 183 / 255, 139 / 255), + grDevices::rgb(67 / 255, 175 / 255, 120 / 255), + grDevices::rgb(55 / 255, 161 / 255, 100 / 255), + grDevices::rgb(42 / 255, 147 / 255, 80 / 255), + grDevices::rgb(29 / 255, 129 / 255, 62 / 255), + grDevices::rgb(14 / 255, 108 / 255, 49 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "19" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(240 / 255, 249 / 255, 251 / 255), + grDevices::rgb(233 / 255, 246 / 255, 249 / 255), + grDevices::rgb(224 / 255, 243 / 255, 245 / 255), + grDevices::rgb(215 / 255, 240 / 255, 238 / 255), + grDevices::rgb(205 / 255, 236 / 255, 231 / 255), + grDevices::rgb(187 / 255, 229 / 255, 220 / 255), + grDevices::rgb(167 / 255, 221 / 255, 208 / 255), + grDevices::rgb(147 / 255, 213 / 255, 196 / 255), + grDevices::rgb(128 / 255, 205 / 255, 182 / 255), + grDevices::rgb(108 / 255, 196 / 255, 168 / 255), + grDevices::rgb(92 / 255, 188 / 255, 151 / 255), + grDevices::rgb(78 / 255, 180 / 255, 133 / 255), + grDevices::rgb(63 / 255, 172 / 255, 115 / 255), + grDevices::rgb(52 / 255, 158 / 255, 96 / 255), + grDevices::rgb(40 / 255, 144 / 255, 77 / 255), + grDevices::rgb(27 / 255, 127 / 255, 61 / 255), + grDevices::rgb(14 / 255, 107 / 255, 48 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "20" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 253 / 255), + grDevices::rgb(240 / 255, 249 / 255, 251 / 255), + grDevices::rgb(233 / 255, 246 / 255, 250 / 255), + grDevices::rgb(226 / 255, 244 / 255, 246 / 255), + grDevices::rgb(217 / 255, 240 / 255, 239 / 255), + grDevices::rgb(207 / 255, 237 / 255, 232 / 255), + grDevices::rgb(193 / 255, 231 / 255, 223 / 255), + grDevices::rgb(174 / 255, 224 / 255, 213 / 255), + grDevices::rgb(155 / 255, 217 / 255, 202 / 255), + grDevices::rgb(137 / 255, 209 / 255, 189 / 255), + grDevices::rgb(118 / 255, 200 / 255, 175 / 255), + grDevices::rgb(100 / 255, 192 / 255, 161 / 255), + grDevices::rgb(87 / 255, 185 / 255, 144 / 255), + grDevices::rgb(73 / 255, 178 / 255, 127 / 255), + grDevices::rgb(60 / 255, 168 / 255, 110 / 255), + grDevices::rgb(50 / 255, 155 / 255, 92 / 255), + grDevices::rgb(38 / 255, 142 / 255, 74 / 255), + grDevices::rgb(26 / 255, 125 / 255, 60 / 255), + grDevices::rgb(13 / 255, 106 / 255, 47 / 255), + grDevices::rgb(0 / 255, 88 / 255, 36 / 255)), + "type" = "sequential" + ), + "YlOrBr" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 188 / 255), + grDevices::rgb(217 / 255, 95 / 255, 14 / 255)), + "3" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 188 / 255), + grDevices::rgb(254 / 255, 196 / 255, 79 / 255), + grDevices::rgb(217 / 255, 95 / 255, 14 / 255)), + "4" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 212 / 255), + grDevices::rgb(254 / 255, 217 / 255, 142 / 255), + grDevices::rgb(254 / 255, 153 / 255, 41 / 255), + grDevices::rgb(204 / 255, 76 / 255, 2 / 255)), + "5" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 212 / 255), + grDevices::rgb(254 / 255, 217 / 255, 142 / 255), + grDevices::rgb(254 / 255, 153 / 255, 41 / 255), + grDevices::rgb(217 / 255, 95 / 255, 14 / 255), + grDevices::rgb(153 / 255, 52 / 255, 4 / 255)), + "6" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 212 / 255), + grDevices::rgb(254 / 255, 227 / 255, 145 / 255), + grDevices::rgb(254 / 255, 196 / 255, 79 / 255), + grDevices::rgb(254 / 255, 153 / 255, 41 / 255), + grDevices::rgb(217 / 255, 95 / 255, 14 / 255), + grDevices::rgb(153 / 255, 52 / 255, 4 / 255)), + "7" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 212 / 255), + grDevices::rgb(254 / 255, 227 / 255, 145 / 255), + grDevices::rgb(254 / 255, 196 / 255, 79 / 255), + grDevices::rgb(254 / 255, 153 / 255, 41 / 255), + grDevices::rgb(236 / 255, 112 / 255, 20 / 255), + grDevices::rgb(204 / 255, 76 / 255, 2 / 255), + grDevices::rgb(140 / 255, 45 / 255, 4 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 247 / 255, 188 / 255), + grDevices::rgb(254 / 255, 227 / 255, 145 / 255), + grDevices::rgb(254 / 255, 196 / 255, 79 / 255), + grDevices::rgb(254 / 255, 153 / 255, 41 / 255), + grDevices::rgb(236 / 255, 112 / 255, 20 / 255), + grDevices::rgb(204 / 255, 76 / 255, 2 / 255), + grDevices::rgb(140 / 255, 45 / 255, 4 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 247 / 255, 188 / 255), + grDevices::rgb(254 / 255, 227 / 255, 145 / 255), + grDevices::rgb(254 / 255, 196 / 255, 79 / 255), + grDevices::rgb(254 / 255, 153 / 255, 41 / 255), + grDevices::rgb(236 / 255, 112 / 255, 20 / 255), + grDevices::rgb(204 / 255, 76 / 255, 2 / 255), + grDevices::rgb(153 / 255, 52 / 255, 4 / 255), + grDevices::rgb(102 / 255, 37 / 255, 6 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 248 / 255, 197 / 255), + grDevices::rgb(254 / 255, 235 / 255, 164 / 255), + grDevices::rgb(254 / 255, 216 / 255, 123 / 255), + grDevices::rgb(254 / 255, 191 / 255, 74 / 255), + grDevices::rgb(254 / 255, 157 / 255, 45 / 255), + grDevices::rgb(242 / 255, 125 / 255, 27 / 255), + grDevices::rgb(221 / 255, 96 / 255, 11 / 255), + grDevices::rgb(189 / 255, 68 / 255, 2 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 249 / 255, 200 / 255), + grDevices::rgb(254 / 255, 238 / 255, 170 / 255), + grDevices::rgb(254 / 255, 223 / 255, 138 / 255), + grDevices::rgb(254 / 255, 202 / 255, 92 / 255), + grDevices::rgb(254 / 255, 174 / 255, 60 / 255), + grDevices::rgb(250 / 255, 144 / 255, 36 / 255), + grDevices::rgb(237 / 255, 116 / 255, 22 / 255), + grDevices::rgb(216 / 255, 90 / 255, 8 / 255), + grDevices::rgb(184 / 255, 66 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 249 / 255, 202 / 255), + grDevices::rgb(255 / 255, 241 / 255, 176 / 255), + grDevices::rgb(254 / 255, 228 / 255, 148 / 255), + grDevices::rgb(254 / 255, 210 / 255, 109 / 255), + grDevices::rgb(254 / 255, 188 / 255, 72 / 255), + grDevices::rgb(254 / 255, 161 / 255, 48 / 255), + grDevices::rgb(246 / 255, 134 / 255, 31 / 255), + grDevices::rgb(233 / 255, 108 / 255, 18 / 255), + grDevices::rgb(212 / 255, 85 / 255, 6 / 255), + grDevices::rgb(180 / 255, 64 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 250 / 255, 205 / 255), + grDevices::rgb(255 / 255, 243 / 255, 180 / 255), + grDevices::rgb(254 / 255, 231 / 255, 155 / 255), + grDevices::rgb(254 / 255, 216 / 255, 123 / 255), + grDevices::rgb(254 / 255, 198 / 255, 84 / 255), + grDevices::rgb(254 / 255, 174 / 255, 60 / 255), + grDevices::rgb(252 / 255, 149 / 255, 39 / 255), + grDevices::rgb(242 / 255, 125 / 255, 27 / 255), + grDevices::rgb(227 / 255, 103 / 255, 15 / 255), + grDevices::rgb(209 / 255, 82 / 255, 4 / 255), + grDevices::rgb(176 / 255, 62 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 250 / 255, 206 / 255), + grDevices::rgb(255 / 255, 245 / 255, 184 / 255), + grDevices::rgb(254 / 255, 234 / 255, 161 / 255), + grDevices::rgb(254 / 255, 222 / 255, 135 / 255), + grDevices::rgb(254 / 255, 205 / 255, 100 / 255), + grDevices::rgb(254 / 255, 186 / 255, 70 / 255), + grDevices::rgb(254 / 255, 163 / 255, 50 / 255), + grDevices::rgb(248 / 255, 140 / 255, 34 / 255), + grDevices::rgb(238 / 255, 118 / 255, 23 / 255), + grDevices::rgb(223 / 255, 98 / 255, 12 / 255), + grDevices::rgb(206 / 255, 78 / 255, 3 / 255), + grDevices::rgb(173 / 255, 61 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 250 / 255, 208 / 255), + grDevices::rgb(255 / 255, 247 / 255, 187 / 255), + grDevices::rgb(254 / 255, 236 / 255, 166 / 255), + grDevices::rgb(254 / 255, 227 / 255, 145 / 255), + grDevices::rgb(254 / 255, 211 / 255, 112 / 255), + grDevices::rgb(254 / 255, 196 / 255, 78 / 255), + grDevices::rgb(254 / 255, 174 / 255, 60 / 255), + grDevices::rgb(254 / 255, 153 / 255, 40 / 255), + grDevices::rgb(245 / 255, 132 / 255, 30 / 255), + grDevices::rgb(235 / 255, 112 / 255, 19 / 255), + grDevices::rgb(219 / 255, 94 / 255, 10 / 255), + grDevices::rgb(204 / 255, 76 / 255, 1 / 255), + grDevices::rgb(171 / 255, 60 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 251 / 255, 209 / 255), + grDevices::rgb(255 / 255, 247 / 255, 190 / 255), + grDevices::rgb(254 / 255, 238 / 255, 170 / 255), + grDevices::rgb(254 / 255, 229 / 255, 150 / 255), + grDevices::rgb(254 / 255, 216 / 255, 123 / 255), + grDevices::rgb(254 / 255, 202 / 255, 92 / 255), + grDevices::rgb(254 / 255, 184 / 255, 69 / 255), + grDevices::rgb(254 / 255, 164 / 255, 51 / 255), + grDevices::rgb(250 / 255, 144 / 255, 36 / 255), + grDevices::rgb(242 / 255, 125 / 255, 27 / 255), + grDevices::rgb(231 / 255, 107 / 255, 17 / 255), + grDevices::rgb(216 / 255, 90 / 255, 8 / 255), + grDevices::rgb(199 / 255, 73 / 255, 2 / 255), + grDevices::rgb(169 / 255, 59 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 251 / 255, 211 / 255), + grDevices::rgb(255 / 255, 247 / 255, 193 / 255), + grDevices::rgb(255 / 255, 240 / 255, 174 / 255), + grDevices::rgb(254 / 255, 231 / 255, 155 / 255), + grDevices::rgb(254 / 255, 221 / 255, 133 / 255), + grDevices::rgb(254 / 255, 207 / 255, 104 / 255), + grDevices::rgb(254 / 255, 193 / 255, 76 / 255), + grDevices::rgb(254 / 255, 174 / 255, 60 / 255), + grDevices::rgb(254 / 255, 155 / 255, 43 / 255), + grDevices::rgb(247 / 255, 137 / 255, 33 / 255), + grDevices::rgb(239 / 255, 119 / 255, 24 / 255), + grDevices::rgb(227 / 255, 103 / 255, 15 / 255), + grDevices::rgb(213 / 255, 87 / 255, 6 / 255), + grDevices::rgb(195 / 255, 72 / 255, 2 / 255), + grDevices::rgb(167 / 255, 58 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 251 / 255, 212 / 255), + grDevices::rgb(255 / 255, 248 / 255, 195 / 255), + grDevices::rgb(255 / 255, 242 / 255, 177 / 255), + grDevices::rgb(254 / 255, 234 / 255, 160 / 255), + grDevices::rgb(254 / 255, 225 / 255, 141 / 255), + grDevices::rgb(254 / 255, 212 / 255, 114 / 255), + grDevices::rgb(254 / 255, 199 / 255, 87 / 255), + grDevices::rgb(254 / 255, 183 / 255, 68 / 255), + grDevices::rgb(254 / 255, 165 / 255, 52 / 255), + grDevices::rgb(251 / 255, 148 / 255, 38 / 255), + grDevices::rgb(244 / 255, 131 / 255, 30 / 255), + grDevices::rgb(237 / 255, 114 / 255, 21 / 255), + grDevices::rgb(224 / 255, 99 / 255, 13 / 255), + grDevices::rgb(211 / 255, 84 / 255, 5 / 255), + grDevices::rgb(192 / 255, 70 / 255, 2 / 255), + grDevices::rgb(165 / 255, 57 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 251 / 255, 213 / 255), + grDevices::rgb(255 / 255, 248 / 255, 197 / 255), + grDevices::rgb(255 / 255, 243 / 255, 180 / 255), + grDevices::rgb(254 / 255, 235 / 255, 164 / 255), + grDevices::rgb(254 / 255, 228 / 255, 147 / 255), + grDevices::rgb(254 / 255, 216 / 255, 123 / 255), + grDevices::rgb(254 / 255, 204 / 255, 98 / 255), + grDevices::rgb(254 / 255, 191 / 255, 74 / 255), + grDevices::rgb(254 / 255, 174 / 255, 60 / 255), + grDevices::rgb(254 / 255, 157 / 255, 45 / 255), + grDevices::rgb(249 / 255, 141 / 255, 35 / 255), + grDevices::rgb(242 / 255, 125 / 255, 27 / 255), + grDevices::rgb(234 / 255, 110 / 255, 19 / 255), + grDevices::rgb(221 / 255, 96 / 255, 11 / 255), + grDevices::rgb(209 / 255, 82 / 255, 4 / 255), + grDevices::rgb(189 / 255, 68 / 255, 2 / 255), + grDevices::rgb(164 / 255, 56 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(255 / 255, 252 / 255, 213 / 255), + grDevices::rgb(255 / 255, 249 / 255, 198 / 255), + grDevices::rgb(255 / 255, 244 / 255, 183 / 255), + grDevices::rgb(254 / 255, 237 / 255, 167 / 255), + grDevices::rgb(254 / 255, 230 / 255, 151 / 255), + grDevices::rgb(254 / 255, 220 / 255, 131 / 255), + grDevices::rgb(254 / 255, 209 / 255, 107 / 255), + grDevices::rgb(254 / 255, 197 / 255, 82 / 255), + grDevices::rgb(254 / 255, 182 / 255, 67 / 255), + grDevices::rgb(254 / 255, 166 / 255, 53 / 255), + grDevices::rgb(253 / 255, 150 / 255, 39 / 255), + grDevices::rgb(246 / 255, 136 / 255, 32 / 255), + grDevices::rgb(239 / 255, 120 / 255, 24 / 255), + grDevices::rgb(230 / 255, 106 / 255, 17 / 255), + grDevices::rgb(219 / 255, 93 / 255, 10 / 255), + grDevices::rgb(207 / 255, 79 / 255, 3 / 255), + grDevices::rgb(186 / 255, 67 / 255, 2 / 255), + grDevices::rgb(163 / 255, 56 / 255, 3 / 255), + grDevices::rgb(140 / 255, 44 / 255, 4 / 255)), + "type" = "sequential" + ), + "YlGn" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 185 / 255), + grDevices::rgb(49 / 255, 163 / 255, 84 / 255)), + "3" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 185 / 255), + grDevices::rgb(173 / 255, 221 / 255, 142 / 255), + grDevices::rgb(49 / 255, 163 / 255, 84 / 255)), + "4" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(194 / 255, 230 / 255, 153 / 255), + grDevices::rgb(120 / 255, 198 / 255, 121 / 255), + grDevices::rgb(35 / 255, 132 / 255, 67 / 255)), + "5" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(194 / 255, 230 / 255, 153 / 255), + grDevices::rgb(120 / 255, 198 / 255, 121 / 255), + grDevices::rgb(49 / 255, 163 / 255, 84 / 255), + grDevices::rgb(0 / 255, 104 / 255, 55 / 255)), + "6" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(217 / 255, 240 / 255, 163 / 255), + grDevices::rgb(173 / 255, 221 / 255, 142 / 255), + grDevices::rgb(120 / 255, 198 / 255, 121 / 255), + grDevices::rgb(49 / 255, 163 / 255, 84 / 255), + grDevices::rgb(0 / 255, 104 / 255, 55 / 255)), + "7" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(217 / 255, 240 / 255, 163 / 255), + grDevices::rgb(173 / 255, 221 / 255, 142 / 255), + grDevices::rgb(120 / 255, 198 / 255, 121 / 255), + grDevices::rgb(65 / 255, 171 / 255, 93 / 255), + grDevices::rgb(35 / 255, 132 / 255, 67 / 255), + grDevices::rgb(0 / 255, 90 / 255, 50 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(247 / 255, 252 / 255, 185 / 255), + grDevices::rgb(217 / 255, 240 / 255, 163 / 255), + grDevices::rgb(173 / 255, 221 / 255, 142 / 255), + grDevices::rgb(120 / 255, 198 / 255, 121 / 255), + grDevices::rgb(65 / 255, 171 / 255, 93 / 255), + grDevices::rgb(35 / 255, 132 / 255, 67 / 255), + grDevices::rgb(0 / 255, 90 / 255, 50 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(247 / 255, 252 / 255, 185 / 255), + grDevices::rgb(217 / 255, 240 / 255, 163 / 255), + grDevices::rgb(173 / 255, 221 / 255, 142 / 255), + grDevices::rgb(120 / 255, 198 / 255, 121 / 255), + grDevices::rgb(65 / 255, 171 / 255, 93 / 255), + grDevices::rgb(35 / 255, 132 / 255, 67 / 255), + grDevices::rgb(0 / 255, 104 / 255, 55 / 255), + grDevices::rgb(0 / 255, 69 / 255, 41 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(248 / 255, 252 / 255, 194 / 255), + grDevices::rgb(230 / 255, 245 / 255, 172 / 255), + grDevices::rgb(202 / 255, 233 / 255, 155 / 255), + grDevices::rgb(167 / 255, 218 / 255, 139 / 255), + grDevices::rgb(126 / 255, 200 / 255, 123 / 255), + grDevices::rgb(84 / 255, 179 / 255, 102 / 255), + grDevices::rgb(51 / 255, 153 / 255, 81 / 255), + grDevices::rgb(28 / 255, 122 / 255, 63 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(249 / 255, 252 / 255, 198 / 255), + grDevices::rgb(235 / 255, 247 / 255, 176 / 255), + grDevices::rgb(212 / 255, 238 / 255, 160 / 255), + grDevices::rgb(181 / 255, 224 / 255, 146 / 255), + grDevices::rgb(147 / 255, 209 / 255, 131 / 255), + grDevices::rgb(109 / 255, 192 / 255, 115 / 255), + grDevices::rgb(71 / 255, 173 / 255, 95 / 255), + grDevices::rgb(47 / 255, 147 / 255, 77 / 255), + grDevices::rgb(25 / 255, 119 / 255, 61 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(250 / 255, 253 / 255, 201 / 255), + grDevices::rgb(238 / 255, 248 / 255, 178 / 255), + grDevices::rgb(219 / 255, 241 / 255, 164 / 255), + grDevices::rgb(193 / 255, 229 / 255, 151 / 255), + grDevices::rgb(163 / 255, 216 / 255, 138 / 255), + grDevices::rgb(130 / 255, 202 / 255, 124 / 255), + grDevices::rgb(96 / 255, 185 / 255, 108 / 255), + grDevices::rgb(62 / 255, 167 / 255, 90 / 255), + grDevices::rgb(43 / 255, 142 / 255, 73 / 255), + grDevices::rgb(23 / 255, 116 / 255, 60 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(250 / 255, 253 / 255, 203 / 255), + grDevices::rgb(242 / 255, 250 / 255, 181 / 255), + grDevices::rgb(224 / 255, 243 / 255, 168 / 255), + grDevices::rgb(202 / 255, 233 / 255, 155 / 255), + grDevices::rgb(176 / 255, 222 / 255, 143 / 255), + grDevices::rgb(147 / 255, 209 / 255, 131 / 255), + grDevices::rgb(115 / 255, 195 / 255, 118 / 255), + grDevices::rgb(84 / 255, 179 / 255, 102 / 255), + grDevices::rgb(57 / 255, 161 / 255, 86 / 255), + grDevices::rgb(40 / 255, 138 / 255, 71 / 255), + grDevices::rgb(21 / 255, 114 / 255, 59 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(251 / 255, 253 / 255, 205 / 255), + grDevices::rgb(244 / 255, 251 / 255, 183 / 255), + grDevices::rgb(228 / 255, 244 / 255, 171 / 255), + grDevices::rgb(210 / 255, 237 / 255, 159 / 255), + grDevices::rgb(186 / 255, 226 / 255, 148 / 255), + grDevices::rgb(161 / 255, 215 / 255, 137 / 255), + grDevices::rgb(132 / 255, 203 / 255, 125 / 255), + grDevices::rgb(104 / 255, 189 / 255, 112 / 255), + grDevices::rgb(74 / 255, 175 / 255, 97 / 255), + grDevices::rgb(53 / 255, 155 / 255, 82 / 255), + grDevices::rgb(37 / 255, 134 / 255, 68 / 255), + grDevices::rgb(20 / 255, 112 / 255, 59 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(251 / 255, 253 / 255, 207 / 255), + grDevices::rgb(247 / 255, 252 / 255, 184 / 255), + grDevices::rgb(232 / 255, 246 / 255, 173 / 255), + grDevices::rgb(216 / 255, 240 / 255, 163 / 255), + grDevices::rgb(195 / 255, 230 / 255, 152 / 255), + grDevices::rgb(172 / 255, 221 / 255, 141 / 255), + grDevices::rgb(147 / 255, 209 / 255, 131 / 255), + grDevices::rgb(120 / 255, 197 / 255, 121 / 255), + grDevices::rgb(94 / 255, 184 / 255, 106 / 255), + grDevices::rgb(64 / 255, 171 / 255, 93 / 255), + grDevices::rgb(50 / 255, 151 / 255, 79 / 255), + grDevices::rgb(34 / 255, 132 / 255, 67 / 255), + grDevices::rgb(19 / 255, 110 / 255, 58 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(251 / 255, 253 / 255, 208 / 255), + grDevices::rgb(247 / 255, 252 / 255, 187 / 255), + grDevices::rgb(235 / 255, 247 / 255, 176 / 255), + grDevices::rgb(221 / 255, 241 / 255, 165 / 255), + grDevices::rgb(202 / 255, 233 / 255, 155 / 255), + grDevices::rgb(181 / 255, 224 / 255, 146 / 255), + grDevices::rgb(159 / 255, 214 / 255, 136 / 255), + grDevices::rgb(134 / 255, 204 / 255, 126 / 255), + grDevices::rgb(109 / 255, 192 / 255, 115 / 255), + grDevices::rgb(84 / 255, 179 / 255, 102 / 255), + grDevices::rgb(61 / 255, 165 / 255, 89 / 255), + grDevices::rgb(47 / 255, 147 / 255, 77 / 255), + grDevices::rgb(32 / 255, 129 / 255, 65 / 255), + grDevices::rgb(17 / 255, 109 / 255, 57 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(251 / 255, 253 / 255, 209 / 255), + grDevices::rgb(248 / 255, 252 / 255, 190 / 255), + grDevices::rgb(237 / 255, 248 / 255, 178 / 255), + grDevices::rgb(224 / 255, 243 / 255, 168 / 255), + grDevices::rgb(208 / 255, 236 / 255, 159 / 255), + grDevices::rgb(189 / 255, 228 / 255, 149 / 255), + grDevices::rgb(169 / 255, 219 / 255, 140 / 255), + grDevices::rgb(147 / 255, 209 / 255, 131 / 255), + grDevices::rgb(123 / 255, 199 / 255, 122 / 255), + grDevices::rgb(100 / 255, 187 / 255, 110 / 255), + grDevices::rgb(76 / 255, 176 / 255, 98 / 255), + grDevices::rgb(57 / 255, 161 / 255, 86 / 255), + grDevices::rgb(44 / 255, 143 / 255, 74 / 255), + grDevices::rgb(31 / 255, 126 / 255, 64 / 255), + grDevices::rgb(16 / 255, 108 / 255, 57 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(252 / 255, 253 / 255, 210 / 255), + grDevices::rgb(248 / 255, 252 / 255, 192 / 255), + grDevices::rgb(239 / 255, 249 / 255, 179 / 255), + grDevices::rgb(227 / 255, 244 / 255, 170 / 255), + grDevices::rgb(214 / 255, 238 / 255, 161 / 255), + grDevices::rgb(196 / 255, 231 / 255, 153 / 255), + grDevices::rgb(178 / 255, 223 / 255, 144 / 255), + grDevices::rgb(157 / 255, 214 / 255, 135 / 255), + grDevices::rgb(136 / 255, 204 / 255, 127 / 255), + grDevices::rgb(114 / 255, 194 / 255, 117 / 255), + grDevices::rgb(92 / 255, 183 / 255, 106 / 255), + grDevices::rgb(68 / 255, 172 / 255, 94 / 255), + grDevices::rgb(54 / 255, 157 / 255, 83 / 255), + grDevices::rgb(42 / 255, 141 / 255, 72 / 255), + grDevices::rgb(29 / 255, 124 / 255, 63 / 255), + grDevices::rgb(15 / 255, 106 / 255, 56 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(252 / 255, 253 / 255, 211 / 255), + grDevices::rgb(248 / 255, 252 / 255, 194 / 255), + grDevices::rgb(242 / 255, 250 / 255, 181 / 255), + grDevices::rgb(230 / 255, 245 / 255, 172 / 255), + grDevices::rgb(218 / 255, 240 / 255, 164 / 255), + grDevices::rgb(202 / 255, 233 / 255, 155 / 255), + grDevices::rgb(185 / 255, 226 / 255, 147 / 255), + grDevices::rgb(167 / 255, 218 / 255, 139 / 255), + grDevices::rgb(147 / 255, 209 / 255, 131 / 255), + grDevices::rgb(126 / 255, 200 / 255, 123 / 255), + grDevices::rgb(105 / 255, 190 / 255, 113 / 255), + grDevices::rgb(84 / 255, 179 / 255, 102 / 255), + grDevices::rgb(63 / 255, 168 / 255, 91 / 255), + grDevices::rgb(51 / 255, 153 / 255, 81 / 255), + grDevices::rgb(40 / 255, 138 / 255, 71 / 255), + grDevices::rgb(28 / 255, 122 / 255, 63 / 255), + grDevices::rgb(15 / 255, 105 / 255, 56 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 229 / 255), + grDevices::rgb(252 / 255, 253 / 255, 212 / 255), + grDevices::rgb(249 / 255, 252 / 255, 196 / 255), + grDevices::rgb(243 / 255, 250 / 255, 182 / 255), + grDevices::rgb(232 / 255, 246 / 255, 174 / 255), + grDevices::rgb(221 / 255, 241 / 255, 166 / 255), + grDevices::rgb(207 / 255, 236 / 255, 158 / 255), + grDevices::rgb(191 / 255, 229 / 255, 150 / 255), + grDevices::rgb(175 / 255, 222 / 255, 143 / 255), + grDevices::rgb(156 / 255, 213 / 255, 135 / 255), + grDevices::rgb(137 / 255, 205 / 255, 127 / 255), + grDevices::rgb(117 / 255, 196 / 255, 119 / 255), + grDevices::rgb(98 / 255, 186 / 255, 109 / 255), + grDevices::rgb(77 / 255, 176 / 255, 98 / 255), + grDevices::rgb(60 / 255, 164 / 255, 88 / 255), + grDevices::rgb(49 / 255, 150 / 255, 79 / 255), + grDevices::rgb(38 / 255, 136 / 255, 69 / 255), + grDevices::rgb(26 / 255, 120 / 255, 62 / 255), + grDevices::rgb(14 / 255, 105 / 255, 56 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "type" = "sequential" + ), + "Reds" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(254 / 255, 224 / 255, 210 / 255), + grDevices::rgb(222 / 255, 45 / 255, 38 / 255)), + "3" = tibble::lst(grDevices::rgb(254 / 255, 224 / 255, 210 / 255), + grDevices::rgb(252 / 255, 146 / 255, 114 / 255), + grDevices::rgb(222 / 255, 45 / 255, 38 / 255)), + "4" = tibble::lst(grDevices::rgb(254 / 255, 229 / 255, 217 / 255), + grDevices::rgb(252 / 255, 174 / 255, 145 / 255), + grDevices::rgb(251 / 255, 106 / 255, 74 / 255), + grDevices::rgb(203 / 255, 24 / 255, 29 / 255)), + "5" = tibble::lst(grDevices::rgb(254 / 255, 229 / 255, 217 / 255), + grDevices::rgb(252 / 255, 174 / 255, 145 / 255), + grDevices::rgb(251 / 255, 106 / 255, 74 / 255), + grDevices::rgb(222 / 255, 45 / 255, 38 / 255), + grDevices::rgb(165 / 255, 15 / 255, 21 / 255)), + "6" = tibble::lst(grDevices::rgb(254 / 255, 229 / 255, 217 / 255), + grDevices::rgb(252 / 255, 187 / 255, 161 / 255), + grDevices::rgb(252 / 255, 146 / 255, 114 / 255), + grDevices::rgb(251 / 255, 106 / 255, 74 / 255), + grDevices::rgb(222 / 255, 45 / 255, 38 / 255), + grDevices::rgb(165 / 255, 15 / 255, 21 / 255)), + "7" = tibble::lst(grDevices::rgb(254 / 255, 229 / 255, 217 / 255), + grDevices::rgb(252 / 255, 187 / 255, 161 / 255), + grDevices::rgb(252 / 255, 146 / 255, 114 / 255), + grDevices::rgb(251 / 255, 106 / 255, 74 / 255), + grDevices::rgb(239 / 255, 59 / 255, 44 / 255), + grDevices::rgb(203 / 255, 24 / 255, 29 / 255), + grDevices::rgb(153 / 255, 0 / 255, 13 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 245 / 255, 240 / 255), + grDevices::rgb(254 / 255, 224 / 255, 210 / 255), + grDevices::rgb(252 / 255, 187 / 255, 161 / 255), + grDevices::rgb(252 / 255, 146 / 255, 114 / 255), + grDevices::rgb(251 / 255, 106 / 255, 74 / 255), + grDevices::rgb(239 / 255, 59 / 255, 44 / 255), + grDevices::rgb(203 / 255, 24 / 255, 29 / 255), + grDevices::rgb(153 / 255, 0 / 255, 13 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 245 / 255, 240 / 255), + grDevices::rgb(254 / 255, 224 / 255, 210 / 255), + grDevices::rgb(252 / 255, 187 / 255, 161 / 255), + grDevices::rgb(252 / 255, 146 / 255, 114 / 255), + grDevices::rgb(251 / 255, 106 / 255, 74 / 255), + grDevices::rgb(239 / 255, 59 / 255, 44 / 255), + grDevices::rgb(203 / 255, 24 / 255, 29 / 255), + grDevices::rgb(165 / 255, 15 / 255, 21 / 255), + grDevices::rgb(103 / 255, 0 / 255, 13 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 228 / 255, 216 / 255), + grDevices::rgb(253 / 255, 203 / 255, 182 / 255), + grDevices::rgb(252 / 255, 173 / 255, 145 / 255), + grDevices::rgb(252 / 255, 141 / 255, 109 / 255), + grDevices::rgb(251 / 255, 110 / 255, 78 / 255), + grDevices::rgb(243 / 255,76 / 255, 53 / 255), + grDevices::rgb(222 / 255, 45 / 255, 37 / 255), + grDevices::rgb(191 / 255, 18 / 255, 25 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 230 / 255, 218 / 255), + grDevices::rgb(253 / 255, 209 / 255, 190 / 255), + grDevices::rgb(252 / 255, 182 / 255, 156 / 255), + grDevices::rgb(252 / 255, 154 / 255, 123 / 255), + grDevices::rgb(252 / 255, 126 / 255, 93 / 255), + grDevices::rgb(248 / 255, 97 / 255, 67 / 255), + grDevices::rgb(240 / 255, 64 / 255, 46 / 255), + grDevices::rgb(217 / 255, 39 / 255, 34 / 255), + grDevices::rgb(187 / 255, 17 / 255, 24 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 231 / 255, 220 / 255), + grDevices::rgb(254 / 255, 213 / 255, 196 / 255), + grDevices::rgb(252 / 255, 190 / 255, 165 / 255), + grDevices::rgb(252 / 255, 164 / 255, 135 / 255), + grDevices::rgb(252 / 255, 139 / 255, 106 / 255), + grDevices::rgb(251 / 255, 113 / 255, 81 / 255), + grDevices::rgb(245 / 255, 86 / 255, 60 / 255), + grDevices::rgb(235 / 255, 56 / 255, 42 / 255), + grDevices::rgb(212 / 255, 35 / 255, 33 / 255), + grDevices::rgb(184 / 255, 15 / 255, 23 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 232 / 255, 222 / 255), + grDevices::rgb(254 / 255, 217 / 255, 201 / 255), + grDevices::rgb(253 / 255, 196 / 255, 173 / 255), + grDevices::rgb(252 / 255, 173 / 255, 145 / 255), + grDevices::rgb(252 / 255, 149 / 255, 117 / 255), + grDevices::rgb(252 / 255, 126 / 255, 93 / 255), + grDevices::rgb(250 / 255, 102 / 255, 71 / 255), + grDevices::rgb(243 / 255, 76 / 255, 53 / 255), + grDevices::rgb(229 / 255, 51 / 255, 40 / 255), + grDevices::rgb(208 / 255, 31 / 255, 31 / 255), + grDevices::rgb(181 / 255, 14 / 255, 22 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 233 / 255, 223 / 255), + grDevices::rgb(254 / 255, 221 / 255, 206 / 255), + grDevices::rgb(253 / 255, 201 / 255, 179 / 255), + grDevices::rgb(252 / 255, 180 / 255, 153 / 255), + grDevices::rgb(252 / 255, 158 / 255, 128 / 255), + grDevices::rgb(252 / 255, 137 / 255, 104 / 255), + grDevices::rgb(251 / 255, 115 / 255, 83 / 255), + grDevices::rgb(247 / 255, 93 / 255, 64 / 255), + grDevices::rgb(240 / 255, 67 / 255, 48 / 255), + grDevices::rgb(225 / 255, 46 / 255, 38 / 255), + grDevices::rgb(205 / 255, 27 / 255, 30 / 255), + grDevices::rgb(179 / 255, 13 / 255, 21 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 234 / 255, 224 / 255), + grDevices::rgb(254 / 255, 223 / 255, 210 / 255), + grDevices::rgb(253 / 255, 205 / 255, 185 / 255), + grDevices::rgb(252 / 255, 186 / 255, 160 / 255), + grDevices::rgb(252 / 255, 166 / 255, 137 / 255), + grDevices::rgb(252 / 255, 146 / 255, 114 / 255), + grDevices::rgb(252 / 255, 126 / 255, 93 / 255), + grDevices::rgb(250 / 255, 106 / 255, 74 / 255), + grDevices::rgb(245 / 255, 84 / 255, 58 / 255), + grDevices::rgb(238 / 255, 58 / 255, 44 / 255), + grDevices::rgb(220 / 255, 43 / 255, 36 / 255), + grDevices::rgb(203 / 255, 24 / 255, 29 / 255), + grDevices::rgb(177 / 255, 12 / 255, 20 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 235 / 255, 225 / 255), + grDevices::rgb(254 / 255, 225 / 255, 211 / 255), + grDevices::rgb(253 / 255, 209 / 255, 190 / 255), + grDevices::rgb(252 / 255, 191 / 255, 167 / 255), + grDevices::rgb(252 / 255, 173 / 255, 145 / 255), + grDevices::rgb(252 / 255, 154 / 255, 123 / 255), + grDevices::rgb(252 / 255, 135 / 255, 103 / 255), + grDevices::rgb(251 / 255, 117 / 255, 84 / 255), + grDevices::rgb(248 / 255, 97 / 255, 67 / 255), + grDevices::rgb(243 / 255, 76 / 255, 53 / 255), + grDevices::rgb(234 / 255, 54 / 255, 41 / 255), + grDevices::rgb(217 / 255, 39 / 255, 34 / 255), + grDevices::rgb(199 / 255, 22 / 255, 27 / 255), + grDevices::rgb(176 / 255, 11 / 255, 20 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 235 / 255, 226 / 255), + grDevices::rgb(254 / 255, 226 / 255, 213 / 255), + grDevices::rgb(253 / 255, 212 / 255, 194 / 255), + grDevices::rgb(253 / 255, 196 / 255, 173 / 255), + grDevices::rgb(252 / 255, 179 / 255, 152 / 255), + grDevices::rgb(252 / 255, 161 / 255, 131 / 255), + grDevices::rgb(252 / 255, 143 / 255, 111 / 255), + grDevices::rgb(252 / 255, 126 / 255, 93 / 255), + grDevices::rgb(251 / 255, 108 / 255, 76 / 255), + grDevices::rgb(246 / 255, 90 / 255, 62 / 255), + grDevices::rgb(241 / 255, 69 / 255, 49 / 255), + grDevices::rgb(229 / 255, 51 / 255, 40 / 255), + grDevices::rgb(214 / 255, 36 / 255, 33 / 255), + grDevices::rgb(196 / 255, 21 / 255, 26 / 255), + grDevices::rgb(174 / 255, 10 / 255, 19 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 236 / 255, 227 / 255), + grDevices::rgb(254 / 255, 227 / 255, 215 / 255), + grDevices::rgb(254 / 255, 215 / 255, 198 / 255), + grDevices::rgb(253 / 255, 200 / 255, 178 / 255), + grDevices::rgb(252 / 255, 184 / 255, 158 / 255), + grDevices::rgb(252 / 255, 167 / 255, 138 / 255), + grDevices::rgb(252 / 255, 150 / 255, 119 / 255), + grDevices::rgb(252 / 255, 134 / 255, 102 / 255), + grDevices::rgb(251 / 255, 118 / 255, 85 / 255), + grDevices::rgb(249 / 255, 101 / 255, 70 / 255), + grDevices::rgb(244 / 255, 83 / 255, 58 / 255), + grDevices::rgb(239 / 255, 62 / 255, 45 / 255), + grDevices::rgb(226 / 255, 47 / 255, 38 / 255), + grDevices::rgb(211 / 255, 33 / 255, 32 / 255), + grDevices::rgb(193 / 255, 20 / 255, 26 / 255), + grDevices::rgb(173 / 255, 9 / 255, 19 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 236 / 255, 228 / 255), + grDevices::rgb(254 / 255, 228 / 255, 216 / 255), + grDevices::rgb(254 / 255, 217 / 255, 201 / 255), + grDevices::rgb(253 / 255, 203 / 255, 182 / 255), + grDevices::rgb(252 / 255, 189 / 255, 163 / 255), + grDevices::rgb(252 / 255, 173 / 255, 145 / 255), + grDevices::rgb(252 / 255, 157 / 255, 126 / 255), + grDevices::rgb(252 / 255, 141 / 255, 109 / 255), + grDevices::rgb(252 / 255, 126 / 255, 93 / 255), + grDevices::rgb(251 / 255, 110 / 255, 78 / 255), + grDevices::rgb(247 / 255, 94 / 255, 65 / 255), + grDevices::rgb(243 / 255, 76 / 255, 53 / 255), + grDevices::rgb(236 / 255, 57 / 255, 43 / 255), + grDevices::rgb(222 / 255, 45 / 255, 37 / 255), + grDevices::rgb(208 / 255, 31 / 255, 31 / 255), + grDevices::rgb(191 / 255, 18 / 255, 25 / 255), + grDevices::rgb(172 / 255, 9 / 255, 19 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 244 / 255, 240 / 255), + grDevices::rgb(254 / 255, 237 / 255, 228 / 255), + grDevices::rgb(254 / 255, 229 / 255, 217 / 255), + grDevices::rgb(254 / 255, 220 / 255, 204 / 255), + grDevices::rgb(253 / 255, 206 / 255, 186 / 255), + grDevices::rgb(252 / 255, 192 / 255, 168 / 255), + grDevices::rgb(252 / 255, 178 / 255, 150 / 255), + grDevices::rgb(252 / 255, 163 / 255, 133 / 255), + grDevices::rgb(252 / 255, 148 / 255, 116 / 255), + grDevices::rgb(252 / 255, 133 / 255, 101 / 255), + grDevices::rgb(251 / 255, 119 / 255, 86 / 255), + grDevices::rgb(250 / 255, 103 / 255, 72 / 255), + grDevices::rgb(246 / 255, 88 / 255, 61 / 255), + grDevices::rgb(241 / 255, 70 / 255, 50 / 255), + grDevices::rgb(233 / 255, 54 / 255, 41 / 255), + grDevices::rgb(219 / 255, 42 / 255, 35 / 255), + grDevices::rgb(206 / 255, 28 / 255, 30 / 255), + grDevices::rgb(189 / 255, 17 / 255, 24 / 255), + grDevices::rgb(171 / 255, 8 / 255, 18 / 255), + grDevices::rgb(153 / 255, 0 / 255, 12 / 255)), + "type" = "sequential" + ), + "RdPu" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(253 / 255, 224 / 255, 221 / 255), + grDevices::rgb(197 / 255, 27 / 255, 138 / 255)), + "3" = tibble::lst(grDevices::rgb(253 / 255, 224 / 255, 221 / 255), + grDevices::rgb(250 / 255, 159 / 255, 181 / 255), + grDevices::rgb(197 / 255, 27 / 255, 138 / 255)), + "4" = tibble::lst(grDevices::rgb(254 / 255, 235 / 255, 226 / 255), + grDevices::rgb(251 / 255, 180 / 255, 185 / 255), + grDevices::rgb(247 / 255, 104 / 255, 161 / 255), + grDevices::rgb(174 / 255, 1 / 255, 126 / 255)), + "5" = tibble::lst(grDevices::rgb(254 / 255, 235 / 255, 226 / 255), + grDevices::rgb(251 / 255, 180 / 255, 185 / 255), + grDevices::rgb(247 / 255, 104 / 255, 161 / 255), + grDevices::rgb(197 / 255, 27 / 255, 138 / 255), + grDevices::rgb(122 / 255, 1 / 255, 119 / 255)), + "6" = tibble::lst(grDevices::rgb(254 / 255, 235 / 255, 226 / 255), + grDevices::rgb(252 / 255, 197 / 255, 192 / 255), + grDevices::rgb(250 / 255, 159 / 255, 181 / 255), + grDevices::rgb(247 / 255, 104 / 255, 161 / 255), + grDevices::rgb(197 / 255, 27 / 255, 138 / 255), + grDevices::rgb(122 / 255, 1 / 255, 119 / 255)), + "7" = tibble::lst(grDevices::rgb(254 / 255, 235 / 255, 226 / 255), + grDevices::rgb(252 / 255, 197 / 255, 192 / 255), + grDevices::rgb(250 / 255, 159 / 255, 181 / 255), + grDevices::rgb(247 / 255, 104 / 255, 161 / 255), + grDevices::rgb(221 / 255, 52 / 255, 151 / 255), + grDevices::rgb(174 / 255, 1 / 255, 126 / 255), + grDevices::rgb(122 / 255, 1 / 255, 119 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 243 / 255), + grDevices::rgb(253 / 255, 224 / 255, 221 / 255), + grDevices::rgb(252 / 255, 197 / 255, 192 / 255), + grDevices::rgb(250 / 255, 159 / 255, 181 / 255), + grDevices::rgb(247 / 255, 104 / 255, 161 / 255), + grDevices::rgb(221 / 255, 52 / 255, 151 / 255), + grDevices::rgb(174 / 255, 1 / 255, 126 / 255), + grDevices::rgb(122 / 255, 1 / 255, 119 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 243 / 255), + grDevices::rgb(253 / 255, 224 / 255, 221 / 255), + grDevices::rgb(252 / 255, 197 / 255, 192 / 255), + grDevices::rgb(250 / 255, 159 / 255, 181 / 255), + grDevices::rgb(247 / 255, 104 / 255, 161 / 255), + grDevices::rgb(221 / 255, 52 / 255, 151 / 255), + grDevices::rgb(174 / 255, 1 / 255, 126 / 255), + grDevices::rgb(122 / 255, 1 / 255, 119 / 255), + grDevices::rgb(73 / 255, 0 / 255, 106 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(253 / 255, 229 / 255, 225 / 255), + grDevices::rgb(252 / 255, 209 / 255, 204 / 255), + grDevices::rgb(251 / 255, 184 / 255, 188 / 255), + grDevices::rgb(249 / 255, 153 / 255, 178 / 255), + grDevices::rgb(247 / 255, 110 / 255, 163 / 255), + grDevices::rgb(229 / 255, 71 / 255, 154 / 255), + grDevices::rgb(199 / 255, 34 / 255, 139 / 255), + grDevices::rgb(162 / 255, 0 / 255, 124 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(253 / 255, 230 / 255, 227 / 255), + grDevices::rgb(252 / 255, 213 / 255, 209 / 255), + grDevices::rgb(251 / 255, 193 / 255, 190 / 255), + grDevices::rgb(250 / 255, 166 / 255, 183 / 255), + grDevices::rgb(249 / 255, 132 / 255, 170 / 255), + grDevices::rgb(241 / 255, 94 / 255, 159 / 255), + grDevices::rgb(223 / 255, 58 / 255, 152 / 255), + grDevices::rgb(192 / 255, 27 / 255, 135 / 255), + grDevices::rgb(158 / 255, 0 / 255, 123 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(253 / 255, 232 / 255, 228 / 255), + grDevices::rgb(252 / 255, 216 / 255, 213 / 255), + grDevices::rgb(252 / 255, 199 / 255, 194 / 255), + grDevices::rgb(251 / 255, 176 / 255, 186 / 255), + grDevices::rgb(249 / 255, 149 / 255, 177 / 255), + grDevices::rgb(247 / 255, 114 / 255, 164 / 255), + grDevices::rgb(235 / 255, 82 / 255, 156 / 255), + grDevices::rgb(216 / 255, 48 / 255, 148 / 255), + grDevices::rgb(186 / 255, 20 / 255, 132 / 255), + grDevices::rgb(155 / 255, 0 / 255, 123 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(253 / 255, 233 / 255, 230 / 255), + grDevices::rgb(252 / 255, 219 / 255, 216 / 255), + grDevices::rgb(252 / 255, 203 / 255, 199 / 255), + grDevices::rgb(251 / 255, 184 / 255, 188 / 255), + grDevices::rgb(250 / 255, 162 / 255, 181 / 255), + grDevices::rgb(249 / 255, 132 / 255, 170 / 255), + grDevices::rgb(244 / 255, 100 / 255, 160 / 255), + grDevices::rgb(229 / 255, 71 / 255, 154 / 255), + grDevices::rgb(209 / 255, 42 / 255, 144 / 255), + grDevices::rgb(181 / 255, 14 / 255, 130 / 255), + grDevices::rgb(152 / 255, 0 / 255, 123 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(254 / 255, 234 / 255, 231 / 255), + grDevices::rgb(253 / 255, 221 / 255, 218 / 255), + grDevices::rgb(252 / 255, 207 / 255, 203 / 255), + grDevices::rgb(251 / 255, 191 / 255, 190 / 255), + grDevices::rgb(250 / 255, 170 / 255, 184 / 255), + grDevices::rgb(249 / 255, 147 / 255, 176 / 255), + grDevices::rgb(248 / 255, 117 / 255, 165 / 255), + grDevices::rgb(239 / 255, 89 / 255, 157 / 255), + grDevices::rgb(225 / 255, 61 / 255, 152 / 255), + grDevices::rgb(202 / 255, 36 / 255, 141 / 255), + grDevices::rgb(177 / 255, 6 / 255, 127 / 255), + grDevices::rgb(150 / 255, 0 / 255, 122 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(254 / 255, 235 / 255, 231 / 255), + grDevices::rgb(253 / 255, 223 / 255, 221 / 255), + grDevices::rgb(252 / 255, 210 / 255, 206 / 255), + grDevices::rgb(252 / 255, 197 / 255, 191 / 255), + grDevices::rgb(251 / 255, 178 / 255, 186 / 255), + grDevices::rgb(249 / 255, 159 / 255, 180 / 255), + grDevices::rgb(249 / 255, 132 / 255, 170 / 255), + grDevices::rgb(247 / 255, 103 / 255, 160 / 255), + grDevices::rgb(234 / 255, 80 / 255, 156 / 255), + grDevices::rgb(221 / 255, 51 / 255, 151 / 255), + grDevices::rgb(197 / 255, 31 / 255, 138 / 255), + grDevices::rgb(173 / 255, 0 / 255, 126 / 255), + grDevices::rgb(148 / 255, 0 / 255, 122 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(254 / 255, 236 / 255, 232 / 255), + grDevices::rgb(253 / 255, 225 / 255, 222 / 255), + grDevices::rgb(252 / 255, 213 / 255, 209 / 255), + grDevices::rgb(252 / 255, 200 / 255, 195 / 255), + grDevices::rgb(251 / 255, 184 / 255, 188 / 255), + grDevices::rgb(250 / 255, 166 / 255, 183 / 255), + grDevices::rgb(249 / 255, 145 / 255, 175 / 255), + grDevices::rgb(248 / 255, 119 / 255, 166 / 255), + grDevices::rgb(241 / 255, 94 / 255, 159 / 255), + grDevices::rgb(229 / 255, 71 / 255, 154 / 255), + grDevices::rgb(214 / 255, 46 / 255, 147 / 255), + grDevices::rgb(192 / 255, 27 / 255, 135 / 255), + grDevices::rgb(170 / 255, 0 / 255, 125 / 255), + grDevices::rgb(146 / 255, 0 / 255, 122 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(254 / 255, 236 / 255, 233 / 255), + grDevices::rgb(253 / 255, 226 / 255, 223 / 255), + grDevices::rgb(252 / 255, 215 / 255, 211 / 255), + grDevices::rgb(252 / 255, 203 / 255, 199 / 255), + grDevices::rgb(251 / 255, 190 / 255, 189 / 255), + grDevices::rgb(251 / 255, 173 / 255, 185 / 255), + grDevices::rgb(249 / 255, 155 / 255, 179 / 255), + grDevices::rgb(249 / 255, 132 / 255, 170 / 255), + grDevices::rgb(247 / 255, 107 / 255, 162 / 255), + grDevices::rgb(237 / 255, 86 / 255, 157 / 255), + grDevices::rgb(225 / 255, 63 / 255, 152 / 255), + grDevices::rgb(209 / 255, 42 / 255, 144 / 255), + grDevices::rgb(188 / 255, 22 / 255, 133 / 255), + grDevices::rgb(167 / 255, 0 / 255, 125 / 255), + grDevices::rgb(144 / 255, 0 / 255, 122 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(254 / 255, 237 / 255, 233 / 255), + grDevices::rgb(253 / 255, 228 / 255, 224 / 255), + grDevices::rgb(252 / 255, 217 / 255, 214 / 255), + grDevices::rgb(252 / 255, 206 / 255, 202 / 255), + grDevices::rgb(251 / 255, 194 / 255, 191 / 255), + grDevices::rgb(251 / 255, 179 / 255, 186 / 255), + grDevices::rgb(250 / 255, 163 / 255, 182 / 255), + grDevices::rgb(249 / 255, 143 / 255, 175 / 255), + grDevices::rgb(248 / 255, 121 / 255, 166 / 255), + grDevices::rgb(243 / 255, 98 / 255, 159 / 255), + grDevices::rgb(233 / 255, 78 / 255, 155 / 255), + grDevices::rgb(222 / 255, 55 / 255, 151 / 255), + grDevices::rgb(204 / 255, 38 / 255, 142 / 255), + grDevices::rgb(184 / 255, 18 / 255, 131 / 255), + grDevices::rgb(164 / 255, 0 / 255, 124 / 255), + grDevices::rgb(143 / 255, 0 / 255, 121 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(254 / 255, 238 / 255, 234 / 255), + grDevices::rgb(253 / 255, 229 / 255, 225 / 255), + grDevices::rgb(252 / 255, 219 / 255, 216 / 255), + grDevices::rgb(252 / 255, 209 / 255, 204 / 255), + grDevices::rgb(252 / 255, 198 / 255, 193 / 255), + grDevices::rgb(251 / 255, 184 / 255, 188 / 255), + grDevices::rgb(250 / 255, 169 / 255, 184 / 255), + grDevices::rgb(249 / 255, 153 / 255, 178 / 255), + grDevices::rgb(249 / 255, 132 / 255, 170 / 255), + grDevices::rgb(247 / 255, 110 / 255, 163 / 255), + grDevices::rgb(239 / 255, 91 / 255, 158 / 255), + grDevices::rgb(229 / 255, 71 / 255, 154 / 255), + grDevices::rgb(218 / 255, 49 / 255, 149 / 255), + grDevices::rgb(199 / 255, 34 / 255, 139 / 255), + grDevices::rgb(181 / 255, 14 / 255, 130 / 255), + grDevices::rgb(162 / 255, 0 / 255, 124 / 255), + grDevices::rgb(142 / 255, 0 / 255, 121 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 242 / 255), + grDevices::rgb(254 / 255, 238 / 255, 234 / 255), + grDevices::rgb(253 / 255, 230 / 255, 226 / 255), + grDevices::rgb(253 / 255, 221 / 255, 217 / 255), + grDevices::rgb(252 / 255, 211 / 255, 207 / 255), + grDevices::rgb(252 / 255, 201 / 255, 196 / 255), + grDevices::rgb(251 / 255, 189 / 255, 189 / 255), + grDevices::rgb(251 / 255, 175 / 255, 185 / 255), + grDevices::rgb(250 / 255, 161 / 255, 181 / 255), + grDevices::rgb(249 / 255, 142 / 255, 174 / 255), + grDevices::rgb(248 / 255, 122 / 255, 167 / 255), + grDevices::rgb(245 / 255, 101 / 255, 160 / 255), + grDevices::rgb(236 / 255, 84 / 255, 156 / 255), + grDevices::rgb(226 / 255, 64 / 255, 153 / 255), + grDevices::rgb(213 / 255, 46 / 255, 147 / 255), + grDevices::rgb(196 / 255, 30 / 255, 137 / 255), + grDevices::rgb(178 / 255, 9 / 255, 128 / 255), + grDevices::rgb(160 / 255, 0 / 255, 124 / 255), + grDevices::rgb(141 / 255, 0 / 255, 121 / 255), + grDevices::rgb(121 / 255, 0 / 255, 119 / 255)), + "type" = "sequential" + ), + "Greens" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(229 / 255, 245 / 255, 224 / 255), + grDevices::rgb(49 / 255, 163 / 255, 84 / 255)), + "3" = tibble::lst(grDevices::rgb(229 / 255, 245 / 255, 224 / 255), + grDevices::rgb(161 / 255, 217 / 255, 155 / 255), + grDevices::rgb(49 / 255, 163 / 255, 84 / 255)), + "4" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 233 / 255), + grDevices::rgb(186 / 255, 228 / 255, 179 / 255), + grDevices::rgb(116 / 255, 196 / 255, 118 / 255), + grDevices::rgb(35 / 255, 139 / 255, 69 / 255)), + "5" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 233 / 255), + grDevices::rgb(186 / 255, 228 / 255, 179 / 255), + grDevices::rgb(116 / 255, 196 / 255, 118 / 255), + grDevices::rgb(49 / 255, 163 / 255, 84 / 255), + grDevices::rgb(0 / 255, 109 / 255, 44 / 255)), + "6" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 233 / 255), + grDevices::rgb(199 / 255, 233 / 255, 192 / 255), + grDevices::rgb(161 / 255, 217 / 255, 155 / 255), + grDevices::rgb(116 / 255, 196 / 255, 118 / 255), + grDevices::rgb(49 / 255, 163 / 255, 84 / 255), + grDevices::rgb(0 / 255, 109 / 255, 44 / 255)), + "7" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 233 / 255), + grDevices::rgb(199 / 255, 233 / 255, 192 / 255), + grDevices::rgb(161 / 255, 217 / 255, 155 / 255), + grDevices::rgb(116 / 255, 196 / 255, 118 / 255), + grDevices::rgb(65 / 255, 171 / 255, 93 / 255), + grDevices::rgb(35 / 255, 139 / 255, 69 / 255), + grDevices::rgb(0 / 255, 90 / 255, 50 / 255)), + "8" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 245 / 255), + grDevices::rgb(229 / 255, 245 / 255, 224 / 255), + grDevices::rgb(199 / 255, 233 / 255, 192 / 255), + grDevices::rgb(161 / 255, 217 / 255, 155 / 255), + grDevices::rgb(116 / 255, 196 / 255, 118 / 255), + grDevices::rgb(65 / 255, 171 / 255, 93 / 255), + grDevices::rgb(35 / 255, 139 / 255, 69 / 255), + grDevices::rgb(0 / 255, 90 / 255, 50 / 255)), + "9" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 245 / 255), + grDevices::rgb(229 / 255, 245 / 255, 224 / 255), + grDevices::rgb(199 / 255, 233 / 255, 192 / 255), + grDevices::rgb(161 / 255, 217 / 255, 155 / 255), + grDevices::rgb(116 / 255, 196 / 255, 118 / 255), + grDevices::rgb(65 / 255, 171 / 255, 93 / 255), + grDevices::rgb(35 / 255, 139 / 255, 69 / 255), + grDevices::rgb(0 / 255, 109 / 255, 44 / 255), + grDevices::rgb(0 / 255, 68 / 255, 27 / 255)), + "10" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(233 / 255, 246 / 255, 228 / 255), + grDevices::rgb(212 / 255, 238 / 255, 206 / 255), + grDevices::rgb(186 / 255, 227 / 255, 179 / 255), + grDevices::rgb(156 / 255, 214 / 255, 150 / 255), + grDevices::rgb(121 / 255, 198 / 255, 122 / 255), + grDevices::rgb(83 / 255, 179 / 255, 101 / 255), + grDevices::rgb(52 / 255, 156 / 255, 82 / 255), + grDevices::rgb(28 / 255, 127 / 255, 64 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "11" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(234 / 255, 247 / 255, 230 / 255), + grDevices::rgb(217 / 255, 240 / 255, 211 / 255), + grDevices::rgb(195 / 255, 231 / 255, 188 / 255), + grDevices::rgb(168 / 255, 220 / 255, 162 / 255), + grDevices::rgb(138 / 255, 206 / 255, 136 / 255), + grDevices::rgb(106 / 255, 190 / 255, 112 / 255), + grDevices::rgb(70 / 255, 173 / 255, 95 / 255), + grDevices::rgb(47 / 255, 151 / 255, 78 / 255), + grDevices::rgb(25 / 255, 123 / 255, 63 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "12" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(235 / 255, 247 / 255, 231 / 255), + grDevices::rgb(220 / 255, 241 / 255, 215 / 255), + grDevices::rgb(201 / 255, 234 / 255, 194 / 255), + grDevices::rgb(178 / 255, 224 / 255, 171 / 255), + grDevices::rgb(153 / 255, 213 / 255, 148 / 255), + grDevices::rgb(124 / 255, 199 / 255, 124 / 255), + grDevices::rgb(94 / 255, 184 / 255, 106 / 255), + grDevices::rgb(62 / 255, 168 / 255, 90 / 255), + grDevices::rgb(43 / 255, 147 / 255, 75 / 255), + grDevices::rgb(23 / 255, 120 / 255, 62 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "13" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(236 / 255, 247 / 255, 232 / 255), + grDevices::rgb(224 / 255, 243 / 255, 218 / 255), + grDevices::rgb(206 / 255, 236 / 255, 199 / 255), + grDevices::rgb(186 / 255, 227 / 255, 179 / 255), + grDevices::rgb(164 / 255, 218 / 255, 158 / 255), + grDevices::rgb(138 / 255, 206 / 255, 136 / 255), + grDevices::rgb(112 / 255, 193 / 255, 115 / 255), + grDevices::rgb(83 / 255, 179 / 255, 101 / 255), + grDevices::rgb(57 / 255, 162 / 255, 86 / 255), + grDevices::rgb(40 / 255, 144 / 255, 72 / 255), + grDevices::rgb(21 / 255, 118 / 255, 61 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "14" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(237 / 255, 248 / 255, 233 / 255), + grDevices::rgb(226 / 255, 244 / 255, 221 / 255), + grDevices::rgb(210 / 255, 237 / 255, 204 / 255), + grDevices::rgb(193 / 255, 230 / 255, 186 / 255), + grDevices::rgb(172 / 255, 221 / 255, 166 / 255), + grDevices::rgb(150 / 255, 212 / 255, 146 / 255), + grDevices::rgb(126 / 255, 200 / 255, 126 / 255), + grDevices::rgb(101 / 255, 188 / 255, 110 / 255), + grDevices::rgb(73 / 255, 174 / 255, 96 / 255), + grDevices::rgb(53 / 255, 158 / 255, 83 / 255), + grDevices::rgb(37 / 255, 141 / 255, 70 / 255), + grDevices::rgb(20 / 255, 115 / 255, 60 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "15" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(238 / 255, 248 / 255, 234 / 255), + grDevices::rgb(229 / 255, 244 / 255, 223 / 255), + grDevices::rgb(214 / 255, 239 / 255, 207 / 255), + grDevices::rgb(198 / 255, 233 / 255, 191 / 255), + grDevices::rgb(180 / 255, 225 / 255, 173 / 255), + grDevices::rgb(160 / 255, 216 / 255, 154 / 255), + grDevices::rgb(138 / 255, 206 / 255, 136 / 255), + grDevices::rgb(115 / 255, 196 / 255, 118 / 255), + grDevices::rgb(91 / 255, 183 / 255, 105 / 255), + grDevices::rgb(64 / 255, 171 / 255, 93 / 255), + grDevices::rgb(50 / 255, 154 / 255, 80 / 255), + grDevices::rgb(34 / 255, 139 / 255, 69 / 255), + grDevices::rgb(18 / 255, 114 / 255, 59 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "16" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(238 / 255, 248 / 255, 235 / 255), + grDevices::rgb(230 / 255, 245 / 255, 225 / 255), + grDevices::rgb(217 / 255, 240 / 255, 211 / 255), + grDevices::rgb(203 / 255, 234 / 255, 196 / 255), + grDevices::rgb(186 / 255, 227 / 255, 179 / 255), + grDevices::rgb(168 / 255, 220 / 255, 162 / 255), + grDevices::rgb(149 / 255, 211 / 255, 145 / 255), + grDevices::rgb(128 / 255, 201 / 255, 127 / 255), + grDevices::rgb(106 / 255, 190 / 255, 112 / 255), + grDevices::rgb(83 / 255, 179 / 255, 101 / 255), + grDevices::rgb(61 / 255, 166 / 255, 89 / 255), + grDevices::rgb(47 / 255, 151 / 255, 78 / 255), + grDevices::rgb(32 / 255, 135 / 255, 67 / 255), + grDevices::rgb(17 / 255, 112 / 255, 58 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "17" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(239 / 255, 248 / 255, 235 / 255), + grDevices::rgb(231 / 255, 245 / 255, 226 / 255), + grDevices::rgb(219 / 255, 241 / 255, 213 / 255), + grDevices::rgb(206 / 255, 236 / 255, 199 / 255), + grDevices::rgb(191 / 255, 230 / 255, 185 / 255), + grDevices::rgb(175 / 255, 223 / 255, 168 / 255), + grDevices::rgb(158 / 255, 215 / 255, 152 / 255), + grDevices::rgb(138 / 255, 206 / 255, 136 / 255), + grDevices::rgb(118 / 255, 197 / 255, 120 / 255), + grDevices::rgb(98 / 255, 186 / 255, 108 / 255), + grDevices::rgb(75 / 255, 175 / 255, 97 / 255), + grDevices::rgb(57 / 255, 162 / 255, 86 / 255), + grDevices::rgb(44 / 255, 148 / 255, 76 / 255), + grDevices::rgb(31 / 255, 132 / 255, 66 / 255), + grDevices::rgb(16 / 255, 110 / 255, 58 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "18" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(239 / 255, 249 / 255, 236 / 255), + grDevices::rgb(232 / 255, 246 / 255, 227 / 255), + grDevices::rgb(221 / 255, 242 / 255, 216 / 255), + grDevices::rgb(209 / 255, 237 / 255, 203 / 255), + grDevices::rgb(196 / 255, 232 / 255, 189 / 255), + grDevices::rgb(181 / 255, 225 / 255, 174 / 255), + grDevices::rgb(165 / 255, 218 / 255, 159 / 255), + grDevices::rgb(148 / 255, 210 / 255, 144 / 255), + grDevices::rgb(129 / 255, 202 / 255, 128 / 255), + grDevices::rgb(110 / 255, 193 / 255, 115 / 255), + grDevices::rgb(90 / 255, 182 / 255, 104 / 255), + grDevices::rgb(68 / 255, 172 / 255, 94 / 255), + grDevices::rgb(54 / 255, 159 / 255, 84 / 255), + grDevices::rgb(42 / 255, 146 / 255, 74 / 255), + grDevices::rgb(29 / 255, 130 / 255, 65 / 255), + grDevices::rgb(15 / 255, 109 / 255, 57 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "19" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(240 / 255, 249 / 255, 236 / 255), + grDevices::rgb(233 / 255, 246 / 255, 228 / 255), + grDevices::rgb(224 / 255, 243 / 255, 218 / 255), + grDevices::rgb(212 / 255, 238 / 255, 206 / 255), + grDevices::rgb(200 / 255, 233 / 255, 193 / 255), + grDevices::rgb(186 / 255, 227 / 255, 179 / 255), + grDevices::rgb(171 / 255, 221 / 255, 165 / 255), + grDevices::rgb(156 / 255, 214 / 255, 150 / 255), + grDevices::rgb(138 / 255, 206 / 255, 136 / 255), + grDevices::rgb(121 / 255, 198 / 255, 122 / 255), + grDevices::rgb(102 / 255, 189 / 255, 110 / 255), + grDevices::rgb(83 / 255, 179 / 255, 101 / 255), + grDevices::rgb(63 / 255, 169 / 255, 91 / 255), + grDevices::rgb(52 / 255, 156 / 255, 82 / 255), + grDevices::rgb(40 / 255, 144 / 255, 72 / 255), + grDevices::rgb(28 / 255, 127 / 255, 64 / 255), + grDevices::rgb(14 / 255, 108 / 255, 57 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "20" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 244 / 255), + grDevices::rgb(240 / 255, 249 / 255, 237 / 255), + grDevices::rgb(233 / 255, 246 / 255, 229 / 255), + grDevices::rgb(225 / 255, 243 / 255, 220 / 255), + grDevices::rgb(214 / 255, 239 / 255, 208 / 255), + grDevices::rgb(203 / 255, 234 / 255, 197 / 255), + grDevices::rgb(191 / 255, 229 / 255, 184 / 255), + grDevices::rgb(177 / 255, 223 / 255, 170 / 255), + grDevices::rgb(163 / 255, 217 / 255, 156 / 255), + grDevices::rgb(147 / 255, 210 / 255, 143 / 255), + grDevices::rgb(130 / 255, 202 / 255, 129 / 255), + grDevices::rgb(113 / 255, 194 / 255, 116 / 255), + grDevices::rgb(95 / 255, 185 / 255, 107 / 255), + grDevices::rgb(76 / 255, 176 / 255, 98 / 255), + grDevices::rgb(60 / 255, 165 / 255, 89 / 255), + grDevices::rgb(49 / 255, 154 / 255, 80 / 255), + grDevices::rgb(38 / 255, 142 / 255, 71 / 255), + grDevices::rgb(26 / 255, 125 / 255, 63 / 255), + grDevices::rgb(13 / 255, 107 / 255, 56 / 255), + grDevices::rgb(0 / 255, 89 / 255, 50 / 255)), + "type" = "sequential" + ), + "YlGnBu" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 177 / 255), + grDevices::rgb(44 / 255, 127 / 255, 184 / 255)), + "3" = tibble::lst(grDevices::rgb(237 / 255, 248 / 255, 177 / 255), + grDevices::rgb(127 / 255, 205 / 255, 187 / 255), + grDevices::rgb(44 / 255, 127 / 255, 184 / 255)), + "4" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(161 / 255, 218 / 255, 180 / 255), + grDevices::rgb(65 / 255, 182 / 255, 196 / 255), + grDevices::rgb(34 / 255, 94 / 255, 168 / 255)), + "5" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(161 / 255, 218 / 255, 180 / 255), + grDevices::rgb(65 / 255, 182 / 255, 196 / 255), + grDevices::rgb(44 / 255, 127 / 255, 184 / 255), + grDevices::rgb(37 / 255, 52 / 255, 148 / 255)), + "6" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(199 / 255, 233 / 255, 180 / 255), + grDevices::rgb(127 / 255, 205 / 255, 187 / 255), + grDevices::rgb(65 / 255, 182 / 255, 196 / 255), + grDevices::rgb(44 / 255, 127 / 255, 184 / 255), + grDevices::rgb(37 / 255, 52 / 255, 148 / 255)), + "7" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(199 / 255, 233 / 255, 180 / 255), + grDevices::rgb(127 / 255, 205 / 255, 187 / 255), + grDevices::rgb(65 / 255, 182 / 255, 196 / 255), + grDevices::rgb(29 / 255, 145 / 255, 192 / 255), + grDevices::rgb(34 / 255, 94 / 255, 168 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 217 / 255), + grDevices::rgb(237 / 255, 248 / 255, 177 / 255), + grDevices::rgb(199 / 255, 233 / 255, 180 / 255), + grDevices::rgb(127 / 255, 205 / 255, 187 / 255), + grDevices::rgb(65 / 255, 182 / 255, 196 / 255), + grDevices::rgb(29 / 255, 145 / 255, 192 / 255), + grDevices::rgb(34 / 255, 94 / 255, 168 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 217 / 255), + grDevices::rgb(237 / 255, 248 / 255, 177 / 255), + grDevices::rgb(199 / 255, 233 / 255, 180 / 255), + grDevices::rgb(127 / 255, 205 / 255, 187 / 255), + grDevices::rgb(65 / 255, 182 / 255, 196 / 255), + grDevices::rgb(29 / 255, 145 / 255, 192 / 255), + grDevices::rgb(34 / 255, 94 / 255, 168 / 255), + grDevices::rgb(37 / 255, 52 / 255, 148 / 255), + grDevices::rgb(8 / 255, 29 / 255, 88 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(241 / 255, 249 / 255, 185 / 255), + grDevices::rgb(216 / 255, 239 / 255, 178 / 255), + grDevices::rgb(176 / 255, 223 / 255, 182 / 255), + grDevices::rgb(121 / 255, 202 / 255, 188 / 255), + grDevices::rgb(74 / 255, 184 / 255, 195 / 255), + grDevices::rgb(44 / 255, 157 / 255, 193 / 255), + grDevices::rgb(34 / 255, 122 / 255, 181 / 255), + grDevices::rgb(31 / 255, 82 / 255, 159 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(242 / 255, 250 / 255, 189 / 255), + grDevices::rgb(222 / 255, 242 / 255, 178 / 255), + grDevices::rgb(192 / 255, 230 / 255, 180 / 255), + grDevices::rgb(142 / 255, 210 / 255, 185 / 255), + grDevices::rgb(100 / 255, 193 / 255, 191 / 255), + grDevices::rgb(59 / 255, 174 / 255, 195 / 255), + grDevices::rgb(34 / 255, 148 / 255, 192 / 255), + grDevices::rgb(35 / 255, 114 / 255, 177 / 255), + grDevices::rgb(29 / 255, 78 / 255, 157 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(243 / 255, 250 / 255, 191 / 255), + grDevices::rgb(226 / 255, 243 / 255, 177 / 255), + grDevices::rgb(202 / 255, 234 / 255, 179 / 255), + grDevices::rgb(161 / 255, 217 / 255, 184 / 255), + grDevices::rgb(117 / 255, 200 / 255, 188 / 255), + grDevices::rgb(79 / 255, 186 / 255, 194 / 255), + grDevices::rgb(52 / 255, 164 / 255, 194 / 255), + grDevices::rgb(30 / 255, 140 / 255, 189 / 255), + grDevices::rgb(35 / 255, 107 / 255, 174 / 255), + grDevices::rgb(28 / 255, 75 / 255, 154 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(244 / 255, 250 / 255, 193 / 255), + grDevices::rgb(230 / 255, 245 / 255, 177 / 255), + grDevices::rgb(208 / 255, 236 / 255, 179 / 255), + grDevices::rgb(176 / 255, 223 / 255, 182 / 255), + grDevices::rgb(133 / 255, 207 / 255, 186 / 255), + grDevices::rgb(100 / 255, 193 / 255, 191 / 255), + grDevices::rgb(62 / 255, 178 / 255, 195 / 255), + grDevices::rgb(44 / 255, 157 / 255, 193 / 255), + grDevices::rgb(33 / 255, 132 / 255, 186 / 255), + grDevices::rgb(34 / 255, 102 / 255, 172 / 255), + grDevices::rgb(27 / 255, 72 / 255, 152 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(245 / 255, 251 / 255, 195 / 255), + grDevices::rgb(234 / 255, 246 / 255, 177 / 255), + grDevices::rgb(213 / 255, 238 / 255, 178 / 255), + grDevices::rgb(188 / 255, 228 / 255, 181 / 255), + grDevices::rgb(151 / 255, 213 / 255, 185 / 255), + grDevices::rgb(115 / 255, 199 / 255, 189 / 255), + grDevices::rgb(83 / 255, 187 / 255, 194 / 255), + grDevices::rgb(56 / 255, 170 / 255, 194 / 255), + grDevices::rgb(37 / 255, 150 / 255, 192 / 255), + grDevices::rgb(34 / 255, 125 / 255, 182 / 255), + grDevices::rgb(34 / 255, 97 / 255, 169 / 255), + grDevices::rgb(26 / 255, 70 / 255, 151 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(246 / 255, 251 / 255, 197 / 255), + grDevices::rgb(236 / 255, 248 / 255, 177 / 255), + grDevices::rgb(218 / 255, 240 / 255, 178 / 255), + grDevices::rgb(198 / 255, 233 / 255, 179 / 255), + grDevices::rgb(165 / 255, 218 / 255, 183 / 255), + grDevices::rgb(127 / 255, 204 / 255, 186 / 255), + grDevices::rgb(100 / 255, 193 / 255, 191 / 255), + grDevices::rgb(64 / 255, 182 / 255, 196 / 255), + grDevices::rgb(50 / 255, 163 / 255, 194 / 255), + grDevices::rgb(29 / 255, 145 / 255, 191 / 255), + grDevices::rgb(35 / 255, 119 / 255, 180 / 255), + grDevices::rgb(33 / 255, 94 / 255, 167 / 255), + grDevices::rgb(26 / 255, 68 / 255, 149 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(246 / 255, 251 / 255, 198 / 255), + grDevices::rgb(238 / 255, 248 / 255, 179 / 255), + grDevices::rgb(222 / 255, 242 / 255, 178 / 255), + grDevices::rgb(204 / 255, 235 / 255, 179 / 255), + grDevices::rgb(176 / 255, 223 / 255, 182 / 255), + grDevices::rgb(142 / 255, 210 / 255, 185 / 255), + grDevices::rgb(113 / 255, 198 / 255, 189 / 255), + grDevices::rgb(85 / 255, 188 / 255, 193 / 255), + grDevices::rgb(59 / 255, 174 / 255, 195 / 255), + grDevices::rgb(44 / 255, 157 / 255, 193 / 255), + grDevices::rgb(31 / 255, 138 / 255, 188 / 255), + grDevices::rgb(35 / 255, 114 / 255, 177 / 255), + grDevices::rgb(33 / 255, 90 / 255, 165 / 255), + grDevices::rgb(25 / 255, 67 / 255, 148 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(247 / 255, 251 / 255, 199 / 255), + grDevices::rgb(239 / 255, 248 / 255, 182 / 255), + grDevices::rgb(225 / 255, 243 / 255, 177 / 255), + grDevices::rgb(208 / 255, 236 / 255, 179 / 255), + grDevices::rgb(186 / 255, 227 / 255, 181 / 255), + grDevices::rgb(156 / 255, 215 / 255, 184 / 255), + grDevices::rgb(123 / 255, 203 / 255, 187 / 255), + grDevices::rgb(100 / 255, 193 / 255, 191 / 255), + grDevices::rgb(70 / 255, 183 / 255, 195 / 255), + grDevices::rgb(54 / 255, 167 / 255, 194 / 255), + grDevices::rgb(38 / 255, 151 / 255, 192 / 255), + grDevices::rgb(33 / 255, 132 / 255, 186 / 255), + grDevices::rgb(35 / 255, 109 / 255, 175 / 255), + grDevices::rgb(32 / 255, 87 / 255, 163 / 255), + grDevices::rgb(24 / 255, 65 / 255, 147 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(247 / 255, 252 / 255, 200 / 255), + grDevices::rgb(240 / 255, 249 / 255, 184 / 255), + grDevices::rgb(228 / 255, 244 / 255, 177 / 255), + grDevices::rgb(212 / 255, 238 / 255, 178 / 255), + grDevices::rgb(195 / 255, 231 / 255, 180 / 255), + grDevices::rgb(167 / 255, 219 / 255, 183 / 255), + grDevices::rgb(136 / 255, 208 / 255, 186 / 255), + grDevices::rgb(111 / 255, 198 / 255, 189 / 255), + grDevices::rgb(87 / 255, 188 / 255, 193 / 255), + grDevices::rgb(61 / 255, 177 / 255, 195 / 255), + grDevices::rgb(49 / 255, 162 / 255, 193 / 255), + grDevices::rgb(32 / 255, 147 / 255, 192 / 255), + grDevices::rgb(34 / 255, 126 / 255, 183 / 255), + grDevices::rgb(35 / 255, 105 / 255, 173 / 255), + grDevices::rgb(31 / 255, 85 / 255, 161 / 255), + grDevices::rgb(24 / 255, 64 / 255, 146 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(248 / 255, 252 / 255, 201 / 255), + grDevices::rgb(241 / 255, 249 / 255, 185 / 255), + grDevices::rgb(230 / 255, 245 / 255, 177 / 255), + grDevices::rgb(216 / 255, 239 / 255, 178 / 255), + grDevices::rgb(201 / 255, 233 / 255, 179 / 255), + grDevices::rgb(176 / 255, 223 / 255, 182 / 255), + grDevices::rgb(148 / 255, 212 / 255, 185 / 255), + grDevices::rgb(121 / 255, 202 / 255, 188 / 255), + grDevices::rgb(100 / 255, 193 / 255, 191 / 255), + grDevices::rgb(74 / 255, 184 / 255, 195 / 255), + grDevices::rgb(57 / 255, 171 / 255, 194 / 255), + grDevices::rgb(44 / 255, 157 / 255, 193 / 255), + grDevices::rgb(30 / 255, 142 / 255, 190 / 255), + grDevices::rgb(34 / 255, 122 / 255, 181 / 255), + grDevices::rgb(34 / 255, 102 / 255, 172 / 255), + grDevices::rgb(31 / 255, 82 / 255, 159 / 255), + grDevices::rgb(23 / 255, 63 / 255, 145 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 216 / 255), + grDevices::rgb(248 / 255, 252 / 255, 202 / 255), + grDevices::rgb(241 / 255, 249 / 255, 187 / 255), + grDevices::rgb(233 / 255, 246 / 255, 177 / 255), + grDevices::rgb(219 / 255, 240 / 255, 178 / 255), + grDevices::rgb(205 / 255, 235 / 255, 179 / 255), + grDevices::rgb(185 / 255, 227 / 255, 181 / 255), + grDevices::rgb(159 / 255, 216 / 255, 184 / 255), + grDevices::rgb(131 / 255, 206 / 255, 186 / 255), + grDevices::rgb(110 / 255, 197 / 255, 189 / 255), + grDevices::rgb(88 / 255, 189 / 255, 193 / 255), + grDevices::rgb(63 / 255, 180 / 255, 195 / 255), + grDevices::rgb(53 / 255, 166 / 255, 194 / 255), + grDevices::rgb(39 / 255, 152 / 255, 192 / 255), + grDevices::rgb(31 / 255, 136 / 255, 188 / 255), + grDevices::rgb(35 / 255, 117 / 255, 179 / 255), + grDevices::rgb(34 / 255, 99 / 255, 170 / 255), + grDevices::rgb(30 / 255, 80 / 255, 158 / 255), + grDevices::rgb(23 / 255, 62 / 255, 145 / 255), + grDevices::rgb(12 / 255, 44 / 255, 132 / 255)), + "type" = "sequential" + ), + "Purples" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(239 / 255, 237 / 255, 245 / 255), + grDevices::rgb(117 / 255, 107 / 255, 177 / 255)), + "3" = tibble::lst(grDevices::rgb(239 / 255, 237 / 255, 245 / 255), + grDevices::rgb(188 / 255, 189 / 255, 220 / 255), + grDevices::rgb(117 / 255, 107 / 255, 177 / 255)), + "4" = tibble::lst(grDevices::rgb(242 / 255, 240 / 255, 247 / 255), + grDevices::rgb(203 / 255, 201 / 255, 226 / 255), + grDevices::rgb(158 / 255, 154 / 255, 200 / 255), + grDevices::rgb(106 / 255, 81 / 255, 163 / 255)), + "5" = tibble::lst(grDevices::rgb(242 / 255, 240 / 255, 247 / 255), + grDevices::rgb(203 / 255, 201 / 255, 226 / 255), + grDevices::rgb(158 / 255, 154 / 255, 200 / 255), + grDevices::rgb(117 / 255, 107 / 255, 177 / 255), + grDevices::rgb(84 / 255, 39 / 255, 143 / 255)), + "6" = tibble::lst(grDevices::rgb(242 / 255, 240 / 255, 247 / 255), + grDevices::rgb(218 / 255, 218 / 255, 235 / 255), + grDevices::rgb(188 / 255, 189 / 255, 220 / 255), + grDevices::rgb(158 / 255, 154 / 255, 200 / 255), + grDevices::rgb(117 / 255, 107 / 255, 177 / 255), + grDevices::rgb(84 / 255, 39 / 255, 143 / 255)), + "7" = tibble::lst(grDevices::rgb(242 / 255, 240 / 255, 247 / 255), + grDevices::rgb(218 / 255, 218 / 255, 235 / 255), + grDevices::rgb(188 / 255, 189 / 255, 220 / 255), + grDevices::rgb(158 / 255, 154 / 255, 200 / 255), + grDevices::rgb(128 / 255, 125 / 255, 186 / 255), + grDevices::rgb(106 / 255, 81 / 255, 163 / 255), + grDevices::rgb(74 / 255, 20 / 255, 134 / 255)), + "8" = tibble::lst(grDevices::rgb(252 / 255, 251 / 255, 253 / 255), + grDevices::rgb(239 / 255, 237 / 255, 245 / 255), + grDevices::rgb(218 / 255, 218 / 255, 235 / 255), + grDevices::rgb(188 / 255, 189 / 255, 220 / 255), + grDevices::rgb(158 / 255, 154 / 255, 200 / 255), + grDevices::rgb(128 / 255, 125 / 255, 186 / 255), + grDevices::rgb(106 / 255, 81 / 255, 163 / 255), + grDevices::rgb(74 / 255, 20 / 255, 134 / 255)), + "9" = tibble::lst(grDevices::rgb(252 / 255, 251 / 255, 253 / 255), + grDevices::rgb(239 / 255, 237 / 255, 245 / 255), + grDevices::rgb(218 / 255, 218 / 255, 235 / 255), + grDevices::rgb(188 / 255, 189 / 255, 220 / 255), + grDevices::rgb(158 / 255, 154 / 255, 200 / 255), + grDevices::rgb(128 / 255, 125 / 255, 186 / 255), + grDevices::rgb(106 / 255, 81 / 255, 163 / 255), + grDevices::rgb(84 / 255, 39 / 255, 143 / 255), + grDevices::rgb(63 / 255, 0 / 255, 125 / 255)), + "10" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(241 / 255, 240 / 255, 246 / 255), + grDevices::rgb(227 / 255, 226 / 255, 239 / 255), + grDevices::rgb(207 / 255, 208 / 255, 229 / 255), + grDevices::rgb(184 / 255, 185 / 255, 217 / 255), + grDevices::rgb(161 / 255, 157 / 255, 202 / 255), + grDevices::rgb(138 / 255, 134 / 255, 190 / 255), + grDevices::rgb(118 / 255, 105 / 255, 175 / 255), + grDevices::rgb(99 / 255, 68 / 255, 156 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "11" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(242 / 255, 241 / 255, 247 / 255), + grDevices::rgb(230 / 255, 229 / 255, 241 / 255), + grDevices::rgb(214 / 255, 215 / 255, 233 / 255), + grDevices::rgb(193 / 255, 194 / 255, 223 / 255), + grDevices::rgb(172 / 255, 171 / 255, 209 / 255), + grDevices::rgb(152 / 255, 148 / 255, 197 / 255), + grDevices::rgb(131 / 255, 127 / 255, 187 / 255), + grDevices::rgb(115 / 255, 98 / 255, 172 / 255), + grDevices::rgb(97 / 255, 64 / 255, 154 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "12" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(243 / 255, 242 / 255, 247 / 255), + grDevices::rgb(233 / 255, 231 / 255, 242 / 255), + grDevices::rgb(219 / 255, 219 / 255, 235 / 255), + grDevices::rgb(201 / 255, 202 / 255, 226 / 255), + grDevices::rgb(182 / 255, 182 / 255, 216 / 255), + grDevices::rgb(163 / 255, 160 / 255, 203 / 255), + grDevices::rgb(144 / 255, 140 / 255, 193 / 255), + grDevices::rgb(126 / 255, 120 / 255, 183 / 255), + grDevices::rgb(112 / 255, 92 / 255, 169 / 255), + grDevices::rgb(95 / 255, 60 / 255, 152 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "13" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(244 / 255, 242 / 255, 248 / 255), + grDevices::rgb(235 / 255, 233 / 255, 243 / 255), + grDevices::rgb(223 / 255, 222 / 255, 237 / 255), + grDevices::rgb(207 / 255, 208 / 255, 229 / 255), + grDevices::rgb(190 / 255, 191 / 255, 221 / 255), + grDevices::rgb(172 / 255, 171 / 255, 209 / 255), + grDevices::rgb(155 / 255, 151 / 255, 198 / 255), + grDevices::rgb(138 / 255, 134 / 255, 190 / 255), + grDevices::rgb(122 / 255, 113 / 255, 180 / 255), + grDevices::rgb(109 / 255, 88 / 255, 166 / 255), + grDevices::rgb(93 / 255, 57 / 255, 150 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "14" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(244 / 255, 243 / 255, 248 / 255), + grDevices::rgb(237 / 255, 235 / 255, 244 / 255), + grDevices::rgb(226 / 255, 225 / 255, 238 / 255), + grDevices::rgb(213 / 255, 213 / 255, 232 / 255), + grDevices::rgb(197 / 255, 197 / 255, 224 / 255), + grDevices::rgb(181 / 255, 180 / 255, 215 / 255), + grDevices::rgb(164 / 255, 161 / 255, 204 / 255), + grDevices::rgb(148 / 255, 144 / 255, 195 / 255), + grDevices::rgb(132 / 255, 129 / 255, 188 / 255), + grDevices::rgb(119 / 255, 108 / 255, 177 / 255), + grDevices::rgb(107 / 255, 84 / 255, 164 / 255), + grDevices::rgb(91 / 255, 55 / 255, 149 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "15" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(245 / 255, 243 / 255, 248 / 255), + grDevices::rgb(238 / 255, 236 / 255, 244 / 255), + grDevices::rgb(228 / 255, 227 / 255, 239 / 255), + grDevices::rgb(217 / 255, 217 / 255, 235 / 255), + grDevices::rgb(202 / 255, 203 / 255, 227 / 255), + grDevices::rgb(187 / 255, 189 / 255, 220 / 255), + grDevices::rgb(172 / 255, 171 / 255, 209 / 255), + grDevices::rgb(158 / 255, 153 / 255, 199 / 255), + grDevices::rgb(143 / 255, 139 / 255, 193 / 255), + grDevices::rgb(127 / 255, 125 / 255, 185 / 255), + grDevices::rgb(117 / 255, 102 / 255, 174 / 255), + grDevices::rgb(106 / 255, 81 / 255, 163 / 255), + grDevices::rgb(90 / 255, 52 / 255, 148 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "16" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(245 / 255, 244 / 255, 249 / 255), + grDevices::rgb(239 / 255, 237 / 255, 245 / 255), + grDevices::rgb(230 / 255, 229 / 255, 241 / 255), + grDevices::rgb(220 / 255, 220 / 255, 236 / 255), + grDevices::rgb(207 / 255, 208 / 255, 229 / 255), + grDevices::rgb(193 / 255, 194 / 255, 223 / 255), + grDevices::rgb(179 / 255, 179 / 255, 214 / 255), + grDevices::rgb(165 / 255, 163 / 255, 205 / 255), + grDevices::rgb(152 / 255, 148 / 255, 197 / 255), + grDevices::rgb(138 / 255, 134 / 255, 190 / 255), + grDevices::rgb(125 / 255, 119 / 255, 182 / 255), + grDevices::rgb(115 / 255, 98 / 255, 172 / 255), + grDevices::rgb(104 / 255, 77 / 255, 161 / 255), + grDevices::rgb(89 / 255, 50 / 255, 147 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "17" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(246 / 255, 244 / 255, 249 / 255), + grDevices::rgb(240 / 255, 238 / 255, 245 / 255), + grDevices::rgb(232 / 255, 231 / 255, 241 / 255), + grDevices::rgb(223 / 255, 222 / 255, 237 / 255), + grDevices::rgb(212 / 255, 212 / 255, 232 / 255), + grDevices::rgb(199 / 255, 199 / 255, 225 / 255), + grDevices::rgb(186 / 255, 186 / 255, 218 / 255), + grDevices::rgb(172 / 255, 171 / 255, 209 / 255), + grDevices::rgb(159 / 255, 156 / 255, 201 / 255), + grDevices::rgb(146 / 255, 142 / 255, 194 / 255), + grDevices::rgb(133 / 255, 130 / 255, 188 / 255), + grDevices::rgb(122 / 255, 113 / 255, 180 / 255), + grDevices::rgb(113 / 255, 94 / 255, 170 / 255), + grDevices::rgb(102 / 255, 74 / 255, 159 / 255), + grDevices::rgb(88 / 255, 49 / 255, 146 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "18" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(246 / 255, 245 / 255, 249 / 255), + grDevices::rgb(241 / 255, 239 / 255, 246 / 255), + grDevices::rgb(234 / 255, 232 / 255, 242 / 255), + grDevices::rgb(225 / 255, 224 / 255, 238 / 255), + grDevices::rgb(216 / 255, 216 / 255, 234 / 255), + grDevices::rgb(203 / 255, 204 / 255, 227 / 255), + grDevices::rgb(191 / 255, 192 / 255, 221 / 255), + grDevices::rgb(179 / 255, 178 / 255, 214 / 255), + grDevices::rgb(166 / 255, 164 / 255, 205 / 255), + grDevices::rgb(154 / 255, 150 / 255, 198 / 255), + grDevices::rgb(142 / 255, 138 / 255, 192 / 255), + grDevices::rgb(129 / 255, 126 / 255, 186 / 255), + grDevices::rgb(120 / 255, 109 / 255, 177 / 255), + grDevices::rgb(111 / 255, 91 / 255, 168 / 255), + grDevices::rgb(100 / 255, 71 / 255, 157 / 255), + grDevices::rgb(87 / 255, 47 / 255, 145 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "19" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(246 / 255, 245 / 255, 249 / 255), + grDevices::rgb(241 / 255, 240 / 255, 246 / 255), + grDevices::rgb(235 / 255, 233 / 255, 243 / 255), + grDevices::rgb(227 / 255, 226 / 255, 239 / 255), + grDevices::rgb(219 / 255, 219 / 255, 235 / 255), + grDevices::rgb(207 / 255, 208 / 255, 229 / 255), + grDevices::rgb(196 / 255, 196 / 255, 224 / 255), + grDevices::rgb(184 / 255, 185 / 255, 217 / 255), + grDevices::rgb(172 / 255, 171 / 255, 209 / 255), + grDevices::rgb(161 / 255, 157 / 255, 202 / 255), + grDevices::rgb(149 / 255, 145 / 255, 196 / 255), + grDevices::rgb(138 / 255, 134 / 255, 190 / 255), + grDevices::rgb(126 / 255, 122 / 255, 184 / 255), + grDevices::rgb(118 / 255, 105 / 255, 175 / 255), + grDevices::rgb(109 / 255, 88 / 255, 166 / 255), + grDevices::rgb(99 / 255, 68 / 255, 156 / 255), + grDevices::rgb(87 / 255, 46 / 255, 145 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "20" = tibble::lst(grDevices::rgb(252 / 255, 250 / 255, 253 / 255), + grDevices::rgb(247 / 255, 245 / 255, 250 / 255), + grDevices::rgb(242 / 255, 240 / 255, 247 / 255), + grDevices::rgb(236 / 255, 234 / 255, 243 / 255), + grDevices::rgb(229 / 255, 227 / 255, 240 / 255), + grDevices::rgb(221 / 255, 220 / 255, 236 / 255), + grDevices::rgb(211 / 255, 211 / 255, 231 / 255), + grDevices::rgb(200 / 255, 201 / 255, 226 / 255), + grDevices::rgb(189 / 255, 190 / 255, 220 / 255), + grDevices::rgb(178 / 255, 177 / 255, 213 / 255), + grDevices::rgb(167 / 255, 164 / 255, 206 / 255), + grDevices::rgb(156 / 255, 152 / 255, 199 / 255), + grDevices::rgb(145 / 255, 141 / 255, 194 / 255), + grDevices::rgb(134 / 255, 131 / 255, 188 / 255), + grDevices::rgb(124 / 255, 118 / 255, 182 / 255), + grDevices::rgb(116 / 255, 101 / 255, 173 / 255), + grDevices::rgb(108 / 255, 85 / 255, 165 / 255), + grDevices::rgb(98 / 255, 66 / 255, 155 / 255), + grDevices::rgb(86 / 255, 45 / 255, 144 / 255), + grDevices::rgb(74 / 255, 19 / 255, 133 / 255)), + "type" = "sequential" + ), + "GnBu" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(224 / 255, 243 / 255, 219 / 255), + grDevices::rgb(67 / 255, 162 / 255, 202 / 255)), + "3" = tibble::lst(grDevices::rgb(224 / 255, 243 / 255, 219 / 255), + grDevices::rgb(168 / 255, 221 / 255, 181 / 255), + grDevices::rgb(67 / 255, 162 / 255, 202 / 255)), + "4" = tibble::lst(grDevices::rgb(240 / 255, 249 / 255, 232 / 255), + grDevices::rgb(186 / 255, 228 / 255, 188 / 255), + grDevices::rgb(123 / 255, 204 / 255, 196 / 255), + grDevices::rgb(43 / 255, 140 / 255, 190 / 255)), + "5" = tibble::lst(grDevices::rgb(240 / 255, 249 / 255, 232 / 255), + grDevices::rgb(186 / 255, 228 / 255, 188 / 255), + grDevices::rgb(123 / 255, 204 / 255, 196 / 255), + grDevices::rgb(67 / 255, 162 / 255, 202 / 255), + grDevices::rgb(8 / 255, 104 / 255, 172 / 255)), + "6" = tibble::lst(grDevices::rgb(240 / 255, 249 / 255, 232 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(168 / 255, 221 / 255, 181 / 255), + grDevices::rgb(123 / 255, 204 / 255, 196 / 255), + grDevices::rgb(67 / 255, 162 / 255, 202 / 255), + grDevices::rgb(8 / 255, 104 / 255, 172 / 255)), + "7" = tibble::lst(grDevices::rgb(240 / 255, 249 / 255, 232 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(168 / 255, 221 / 255, 181 / 255), + grDevices::rgb(123 / 255, 204 / 255, 196 / 255), + grDevices::rgb(78 / 255, 179 / 255, 211 / 255), + grDevices::rgb(43 / 255, 140 / 255, 190 / 255), + grDevices::rgb(8 / 255, 88 / 255, 158 / 255)), + "8" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(224 / 255, 243 / 255, 219 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(168 / 255, 221 / 255, 181 / 255), + grDevices::rgb(123 / 255, 204 / 255, 196 / 255), + grDevices::rgb(78 / 255, 179 / 255, 211 / 255), + grDevices::rgb(43 / 255, 140 / 255, 190 / 255), + grDevices::rgb(8 / 255, 88 / 255, 158 / 255)), + "9" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(224 / 255, 243 / 255, 219 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(168 / 255, 221 / 255, 181 / 255), + grDevices::rgb(123 / 255, 204 / 255, 196 / 255), + grDevices::rgb(78 / 255, 179 / 255, 211 / 255), + grDevices::rgb(43 / 255, 140 / 255, 190 / 255), + grDevices::rgb(8 / 255, 104 / 255, 172 / 255), + grDevices::rgb(8 / 255, 64 / 255, 129 / 255)), + "10" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(229 / 255, 245 / 255, 223 / 255), + grDevices::rgb(212 / 255, 238 / 255, 206 / 255), + grDevices::rgb(192 / 255, 230 / 255, 191 / 255), + grDevices::rgb(163 / 255, 219 / 255, 182 / 255), + grDevices::rgb(128 / 255, 205 / 255, 194 / 255), + grDevices::rgb(95 / 255, 187 / 255, 206 / 255), + grDevices::rgb(63 / 255, 161 / 255, 201 / 255), + grDevices::rgb(37 / 255, 128 / 255, 182 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "11" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(230 / 255, 245 / 255, 225 / 255), + grDevices::rgb(216 / 255, 239 / 255, 210 / 255), + grDevices::rgb(200 / 255, 233 / 255, 195 / 255), + grDevices::rgb(175 / 255, 223 / 255, 184 / 255), + grDevices::rgb(146 / 255, 212 / 255, 188 / 255), + grDevices::rgb(115 / 255, 198 / 255, 199 / 255), + grDevices::rgb(83 / 255, 181 / 255, 209 / 255), + grDevices::rgb(58 / 255, 155 / 255, 198 / 255), + grDevices::rgb(35 / 255, 124 / 255, 180 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "12" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(232 / 255, 246 / 255, 226 / 255), + grDevices::rgb(218 / 255, 240 / 255, 212 / 255), + grDevices::rgb(205 / 255, 235 / 255, 198 / 255), + grDevices::rgb(184 / 255, 227 / 255, 188 / 255), + grDevices::rgb(160 / 255, 217 / 255, 183 / 255), + grDevices::rgb(132 / 255, 207 / 255, 193 / 255), + grDevices::rgb(105 / 255, 192 / 255, 202 / 255), + grDevices::rgb(75 / 255, 175 / 255, 209 / 255), + grDevices::rgb(53 / 255, 150 / 255, 195 / 255), + grDevices::rgb(34 / 255, 120 / 255, 178 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "13" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(233 / 255, 246 / 255, 227 / 255), + grDevices::rgb(220 / 255, 241 / 255, 215 / 255), + grDevices::rgb(209 / 255, 237 / 255, 202 / 255), + grDevices::rgb(192 / 255, 230 / 255, 191 / 255), + grDevices::rgb(171 / 255, 222 / 255, 182 / 255), + grDevices::rgb(146 / 255, 212 / 255, 188 / 255), + grDevices::rgb(119 / 255, 201 / 255, 197 / 255), + grDevices::rgb(95 / 255, 187 / 255, 206 / 255), + grDevices::rgb(70 / 255, 169 / 255, 205 / 255), + grDevices::rgb(49 / 255, 146 / 255, 193 / 255), + grDevices::rgb(32 / 255, 117 / 255, 176 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "14" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(234 / 255, 247 / 255, 228 / 255), + grDevices::rgb(222 / 255, 242 / 255, 217 / 255), + grDevices::rgb(211 / 255, 238 / 255, 205 / 255), + grDevices::rgb(198 / 255, 232 / 255, 194 / 255), + grDevices::rgb(179 / 255, 225 / 255, 185 / 255), + grDevices::rgb(158 / 255, 217 / 255, 184 / 255), + grDevices::rgb(134 / 255, 207 / 255, 192 / 255), + grDevices::rgb(111 / 255, 196 / 255, 200 / 255), + grDevices::rgb(86 / 255, 182 / 255, 208 / 255), + grDevices::rgb(65 / 255, 163 / 255, 202 / 255), + grDevices::rgb(46 / 255, 142 / 255, 191 / 255), + grDevices::rgb(31 / 255, 115 / 255, 175 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "15" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(235 / 255, 247 / 255, 229 / 255), + grDevices::rgb(223 / 255, 242 / 255, 218 / 255), + grDevices::rgb(214 / 255, 239 / 255, 207 / 255), + grDevices::rgb(204 / 255, 235 / 255, 197 / 255), + grDevices::rgb(186 / 255, 228 / 255, 188 / 255), + grDevices::rgb(167 / 255, 221 / 255, 180 / 255), + grDevices::rgb(146 / 255, 212 / 255, 188 / 255), + grDevices::rgb(122 / 255, 204 / 255, 196 / 255), + grDevices::rgb(103 / 255, 191 / 255, 203 / 255), + grDevices::rgb(77 / 255, 178 / 255, 210 / 255), + grDevices::rgb(61 / 255, 159 / 255, 200 / 255), + grDevices::rgb(43 / 255, 140 / 255, 190 / 255), + grDevices::rgb(30 / 255, 113 / 255, 173 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "16" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(236 / 255, 247 / 255, 230 / 255), + grDevices::rgb(225 / 255, 243 / 255, 220 / 255), + grDevices::rgb(216 / 255, 239 / 255, 210 / 255), + grDevices::rgb(206 / 255, 236 / 255, 199 / 255), + grDevices::rgb(192 / 255, 230 / 255, 191 / 255), + grDevices::rgb(175 / 255, 223 / 255, 184 / 255), + grDevices::rgb(157 / 255, 216 / 255, 185 / 255), + grDevices::rgb(136 / 255, 208 / 255, 192 / 255), + grDevices::rgb(115 / 255, 198 / 255, 199 / 255), + grDevices::rgb(95 / 255, 187 / 255, 206 / 255), + grDevices::rgb(73 / 255, 173 / 255, 208 / 255), + grDevices::rgb(58 / 255, 155 / 255, 198 / 255), + grDevices::rgb(41 / 255, 136 / 255, 187 / 255), + grDevices::rgb(29 / 255, 111 / 255, 172 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "17" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(236 / 255, 248 / 255, 230 / 255), + grDevices::rgb(226 / 255, 244 / 255, 221 / 255), + grDevices::rgb(217 / 255, 240 / 255, 212 / 255), + grDevices::rgb(209 / 255, 237 / 255, 202 / 255), + grDevices::rgb(197 / 255, 232 / 255, 193 / 255), + grDevices::rgb(181 / 255, 226 / 255, 186 / 255), + grDevices::rgb(165 / 255, 219 / 255, 181 / 255), + grDevices::rgb(146 / 255, 212 / 255, 188 / 255), + grDevices::rgb(126 / 255, 205 / 255, 195 / 255), + grDevices::rgb(108 / 255, 194 / 255, 201 / 255), + grDevices::rgb(88 / 255, 183 / 255, 208 / 255), + grDevices::rgb(70 / 255, 169 / 255, 205 / 255), + grDevices::rgb(55 / 255, 151 / 255, 196 / 255), + grDevices::rgb(40 / 255, 133 / 255, 185 / 255), + grDevices::rgb(28 / 255, 110 / 255, 171 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "18" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(237 / 255, 248 / 255, 231 / 255), + grDevices::rgb(228 / 255, 244 / 255, 222 / 255), + grDevices::rgb(219 / 255, 241 / 255, 213 / 255), + grDevices::rgb(211 / 255, 237 / 255, 204 / 255), + grDevices::rgb(201 / 255, 234 / 255, 196 / 255), + grDevices::rgb(187 / 255, 228 / 255, 189 / 255), + grDevices::rgb(172 / 255, 222 / 255, 182 / 255), + grDevices::rgb(155 / 255, 215 / 255, 185 / 255), + grDevices::rgb(137 / 255, 208 / 255, 191 / 255), + grDevices::rgb(118 / 255, 201 / 255, 197 / 255), + grDevices::rgb(101 / 255, 190 / 255, 204 / 255), + grDevices::rgb(81 / 255, 180 / 255, 210 / 255), + grDevices::rgb(66 / 255, 165 / 255, 203 / 255), + grDevices::rgb(52 / 255, 149 / 255, 194 / 255), + grDevices::rgb(38 / 255, 130 / 255, 184 / 255), + grDevices::rgb(27 / 255, 108 / 255, 171 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "19" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(238 / 255, 248 / 255, 231 / 255), + grDevices::rgb(229 / 255, 245 / 255, 223 / 255), + grDevices::rgb(220 / 255, 241 / 255, 215 / 255), + grDevices::rgb(212 / 255, 238 / 255, 206 / 255), + grDevices::rgb(205 / 255, 235 / 255, 198 / 255), + grDevices::rgb(192 / 255, 230 / 255, 191 / 255), + grDevices::rgb(178 / 255, 224 / 255, 185 / 255), + grDevices::rgb(163 / 255, 219 / 255, 182 / 255), + grDevices::rgb(146 / 255, 212 / 255, 188 / 255), + grDevices::rgb(128 / 255, 205 / 255, 194 / 255), + grDevices::rgb(112 / 255, 196 / 255, 200 / 255), + grDevices::rgb(95 / 255, 187 / 255, 206 / 255), + grDevices::rgb(76 / 255, 176 / 255, 209 / 255), + grDevices::rgb(63 / 255, 161 / 255, 201 / 255), + grDevices::rgb(49 / 255, 146 / 255, 193 / 255), + grDevices::rgb(37 / 255, 128 / 255, 182 / 255), + grDevices::rgb(26 / 255, 107 / 255, 170 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "20" = tibble::lst(grDevices::rgb(247 / 255, 252 / 255, 240 / 255), + grDevices::rgb(238 / 255, 248 / 255, 232 / 255), + grDevices::rgb(230 / 255, 245 / 255, 224 / 255), + grDevices::rgb(221 / 255, 242 / 255, 216 / 255), + grDevices::rgb(214 / 255, 239 / 255, 208 / 255), + grDevices::rgb(207 / 255, 236 / 255, 200 / 255), + grDevices::rgb(196 / 255, 232 / 255, 193 / 255), + grDevices::rgb(183 / 255, 226 / 255, 187 / 255), + grDevices::rgb(169 / 255, 221 / 255, 181 / 255), + grDevices::rgb(154 / 255, 215 / 255, 185 / 255), + grDevices::rgb(138 / 255, 209 / 255, 191 / 255), + grDevices::rgb(121 / 255, 202 / 255, 196 / 255), + grDevices::rgb(106 / 255, 193 / 255, 202 / 255), + grDevices::rgb(89 / 255, 184 / 255, 207 / 255), + grDevices::rgb(73 / 255, 172 / 255, 207 / 255), + grDevices::rgb(61 / 255, 158 / 255, 199 / 255), + grDevices::rgb(47 / 255, 144 / 255, 192 / 255), + grDevices::rgb(36 / 255, 125 / 255, 181 / 255), + grDevices::rgb(25 / 255, 106 / 255, 169 / 255), + grDevices::rgb(7 / 255, 88 / 255, 158 / 255)), + "type" = "sequential" + ), + "Greys" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(240 / 255, 240 / 255, 240 / 255), + grDevices::rgb(99 / 255, 99 / 255, 99 / 255)), + "3" = tibble::lst(grDevices::rgb(240 / 255, 240 / 255, 240 / 255), + grDevices::rgb(189 / 255, 189 / 255, 189 / 255), + grDevices::rgb(99 / 255, 99 / 255, 99 / 255)), + "4" = tibble::lst(grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(204 / 255, 204 / 255, 204 / 255), + grDevices::rgb(150 / 255, 150 / 255, 150 / 255), + grDevices::rgb(82 / 255, 82 / 255, 82 / 255)), + "5" = tibble::lst(grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(204 / 255, 204 / 255, 204 / 255), + grDevices::rgb(150 / 255, 150 / 255, 150 / 255), + grDevices::rgb(99 / 255, 99 / 255, 99 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "6" = tibble::lst(grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(217 / 255, 217 / 255, 217 / 255), + grDevices::rgb(189 / 255, 189 / 255, 189 / 255), + grDevices::rgb(150 / 255, 150 / 255, 150 / 255), + grDevices::rgb(99 / 255, 99 / 255, 99 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "7" = tibble::lst(grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(217 / 255, 217 / 255, 217 / 255), + grDevices::rgb(189 / 255, 189 / 255, 189 / 255), + grDevices::rgb(150 / 255, 150 / 255, 150 / 255), + grDevices::rgb(115 / 255, 115 / 255, 115 / 255), + grDevices::rgb(82 / 255, 82 / 255, 82 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(240 / 255, 240 / 255, 240 / 255), + grDevices::rgb(217 / 255, 217 / 255, 217 / 255), + grDevices::rgb(189 / 255, 189 / 255, 189 / 255), + grDevices::rgb(150 / 255, 150 / 255, 150 / 255), + grDevices::rgb(115 / 255, 115 / 255, 115 / 255), + grDevices::rgb(82 / 255, 82 / 255, 82 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(240 / 255, 240 / 255, 240 / 255), + grDevices::rgb(217 / 255, 217 / 255, 217 / 255), + grDevices::rgb(189 / 255, 189 / 255, 189 / 255), + grDevices::rgb(150 / 255, 150 / 255, 150 / 255), + grDevices::rgb(115 / 255, 115 / 255, 115 / 255), + grDevices::rgb(82 / 255, 82 / 255, 82 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255), + grDevices::rgb(0 / 255, 0 / 255, 0 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(243 / 255, 243 / 255, 243 / 255), + grDevices::rgb(227 / 255, 227 / 255, 227 / 255), + grDevices::rgb(207 / 255, 207 / 255, 207 / 255), + grDevices::rgb(184 / 255, 184 / 255, 184 / 255), + grDevices::rgb(154 / 255, 154 / 255, 154 / 255), + grDevices::rgb(126 / 255, 126 / 255, 126 / 255), + grDevices::rgb(100 / 255, 100 / 255, 100 / 255), + grDevices::rgb(71 / 255, 71 / 255,71 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(244 / 255, 244 / 255, 244 / 255), + grDevices::rgb(230 / 255, 230 / 255, 230 / 255), + grDevices::rgb(214 / 255, 214 / 255, 214 / 255), + grDevices::rgb(194 / 255, 194 / 255, 194 / 255), + grDevices::rgb(169 / 255, 169 / 255, 169 / 255), + grDevices::rgb(142 / 255, 142 / 255, 142 / 255), + grDevices::rgb(118 / 255, 118 / 255, 118 / 255), + grDevices::rgb(94 / 255, 94 / 255, 94 / 255), + grDevices::rgb(67 / 255, 67 / 255, 67 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(245 / 255, 245 / 255, 245 / 255), + grDevices::rgb(233 / 255, 233 / 255, 233 / 255), + grDevices::rgb(219 / 255, 219 / 255, 219 / 255), + grDevices::rgb(201 / 255, 201 / 255, 201 / 255), + grDevices::rgb(181 / 255, 181 / 255, 181 / 255), + grDevices::rgb(156 / 255, 156 / 255, 156 / 255), + grDevices::rgb(133 / 255, 133 / 255, 133 / 255), + grDevices::rgb(111 / 255, 111 / 255, 111 / 255), + grDevices::rgb(90 / 255, 90 / 255, 90 / 255), + grDevices::rgb(64 / 255, 64 / 255, 64 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(246 / 255, 246 / 255, 246 / 255), + grDevices::rgb(236 / 255, 236 / 255, 236 / 255), + grDevices::rgb(222 / 255, 222 / 255, 222 / 255), + grDevices::rgb(207 / 255, 207 / 255, 207 / 255), + grDevices::rgb(191 / 255, 191 / 255, 191 / 255), + grDevices::rgb(169 / 255, 169 / 255, 169 / 255), + grDevices::rgb(147 / 255, 147 / 255, 147 / 255), + grDevices::rgb(126 / 255, 126 / 255, 126 / 255), + grDevices::rgb(106 / 255, 106 / 255, 106 / 255), + grDevices::rgb(87 / 255, 87 / 255, 87 / 255), + grDevices::rgb(62 / 255, 62 / 255, 62 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(246 / 255, 246 / 255, 246 / 255), + grDevices::rgb(238 / 255, 238 / 255, 238 / 255), + grDevices::rgb(225 / 255, 225 / 255, 225 / 255), + grDevices::rgb(212 / 255, 212 / 255, 212 / 255), + grDevices::rgb(197 / 255, 197 / 255, 197 / 255), + grDevices::rgb(179 / 255, 179 / 255, 179 / 255), + grDevices::rgb(158 / 255, 158 / 255, 158 / 255), + grDevices::rgb(139 / 255, 139 / 255, 139 / 255), + grDevices::rgb(120 / 255, 120 / 255, 120 / 255), + grDevices::rgb(102 / 255, 102 / 255, 102 / 255), + grDevices::rgb(84 / 255, 84 / 255, 84 / 255), + grDevices::rgb(60 / 255, 60 / 255, 60 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(240 / 255, 240 / 255, 240 / 255), + grDevices::rgb(228 / 255, 228 / 255, 228 / 255), + grDevices::rgb(216 / 255, 216 / 255, 216 / 255), + grDevices::rgb(202 / 255, 202 / 255, 202 / 255), + grDevices::rgb(189 / 255, 189 / 255, 189 / 255), + grDevices::rgb(169 / 255, 169 / 255, 169 / 255), + grDevices::rgb(150 / 255, 150 / 255, 150 / 255), + grDevices::rgb(132 / 255, 132 / 255, 132 / 255), + grDevices::rgb(114 / 255, 114 / 255, 114 / 255), + grDevices::rgb(98 / 255, 98 / 255, 98 / 255), + grDevices::rgb(82 / 255, 82 / 255, 82 / 255), + grDevices::rgb(58 / 255, 58 / 255, 58 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(247 / 255, 247 / 255, 247 / 255), + grDevices::rgb(240 / 255, 240 / 255, 240 / 255), + grDevices::rgb(230 / 255, 230 / 255, 230 / 255), + grDevices::rgb(220 / 255, 220 / 255, 220 / 255), + grDevices::rgb(207 / 255, 207 / 255, 207 / 255), + grDevices::rgb(194 / 255, 194 / 255, 194 / 255), + grDevices::rgb(178 / 255, 178 / 255, 178 / 255), + grDevices::rgb(160 / 255, 160 / 255, 160 / 255), + grDevices::rgb(142 / 255, 142 / 255, 142 / 255), + grDevices::rgb(126 / 255, 126 / 255, 126 / 255), + grDevices::rgb(110 / 255, 110 / 255, 110 / 255), + grDevices::rgb(94 / 255, 94 / 255, 94 / 255), + grDevices::rgb(78 / 255, 78 / 255,78 / 255), + grDevices::rgb(57 / 255, 57 / 255, 57 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(248 / 255, 248 / 255, 248 / 255), + grDevices::rgb(241 / 255, 241 / 255, 241 / 255), + grDevices::rgb(232 / 255, 232 / 255, 232 / 255), + grDevices::rgb(222 / 255, 222 / 255, 222 / 255), + grDevices::rgb(211 / 255, 211 / 255, 211 / 255), + grDevices::rgb(199 / 255, 199 / 255, 199 / 255), + grDevices::rgb(186 / 255, 186 / 255, 186 / 255), + grDevices::rgb(169 / 255, 169 / 255, 169 / 255), + grDevices::rgb(152 / 255, 152 / 255, 152 / 255), + grDevices::rgb(136 / 255, 136 / 255, 136 / 255), + grDevices::rgb(121 / 255, 121 / 255, 121 / 255), + grDevices::rgb(106 / 255, 106 / 255, 106 / 255), + grDevices::rgb(92 / 255, 92 / 255, 92 / 255), + grDevices::rgb(76 / 255, 76 / 255,76 / 255), + grDevices::rgb(55 / 255, 55 / 255, 55 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(248 / 255, 248 / 255, 248 / 255), + grDevices::rgb(242 / 255, 242 / 255, 242 / 255), + grDevices::rgb(234 / 255, 234 / 255, 234 / 255), + grDevices::rgb(225 / 255, 225 / 255, 225 / 255), + grDevices::rgb(215 / 255, 215 / 255, 215 / 255), + grDevices::rgb(203 / 255, 203 / 255, 203 / 255), + grDevices::rgb(192 / 255, 192 / 255, 192 / 255), + grDevices::rgb(177 / 255, 177 / 255, 177 / 255), + grDevices::rgb(161 / 255, 161 / 255, 161 / 255), + grDevices::rgb(145 / 255, 145 / 255, 145 / 255), + grDevices::rgb(131 / 255, 131 / 255, 131 / 255), + grDevices::rgb(117 / 255, 117 / 255, 117 / 255), + grDevices::rgb(103 / 255, 103 / 255, 103 / 255), + grDevices::rgb(89 / 255, 89 / 255, 89 / 255), + grDevices::rgb(73 / 255, 73 / 255,73 / 255), + grDevices::rgb(54 / 255, 54 / 255, 54 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(249 / 255, 249 / 255, 249 / 255), + grDevices::rgb(243 / 255, 243 / 255, 243 / 255), + grDevices::rgb(236 / 255, 236 / 255, 236 / 255), + grDevices::rgb(227 / 255, 227 / 255, 227 / 255), + grDevices::rgb(218 / 255, 218 / 255, 218 / 255), + grDevices::rgb(207 / 255, 207 / 255, 207 / 255), + grDevices::rgb(196 / 255, 196 / 255, 196 / 255), + grDevices::rgb(184 / 255, 184 / 255, 184 / 255), + grDevices::rgb(169 / 255, 169 / 255, 169 / 255), + grDevices::rgb(154 / 255, 154 / 255, 154 / 255), + grDevices::rgb(140 / 255, 140 / 255, 140 / 255), + grDevices::rgb(126 / 255, 126 / 255, 126 / 255), + grDevices::rgb(113 / 255, 113 / 255, 113 / 255), + grDevices::rgb(100 / 255, 100 / 255, 100 / 255), + grDevices::rgb(87 / 255, 87 / 255, 87 / 255), + grDevices::rgb(71 / 255, 71 / 255,71 / 255), + grDevices::rgb(53 / 255, 53 / 255, 53 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 255 / 255), + grDevices::rgb(249 / 255, 249 / 255, 249 / 255), + grDevices::rgb(243 / 255, 243 / 255, 243 / 255), + grDevices::rgb(237 / 255, 237 / 255, 237 / 255), + grDevices::rgb(229 / 255, 229 / 255, 229 / 255), + grDevices::rgb(220 / 255, 220 / 255, 220 / 255), + grDevices::rgb(211 / 255, 211 / 255, 211 / 255), + grDevices::rgb(200 / 255, 200 / 255, 200 / 255), + grDevices::rgb(190 / 255, 190 / 255, 190 / 255), + grDevices::rgb(176 / 255, 176 / 255, 176 / 255), + grDevices::rgb(162 / 255, 162 / 255, 162 / 255), + grDevices::rgb(148 / 255, 148 / 255, 148 / 255), + grDevices::rgb(135 / 255, 135 / 255, 135 / 255), + grDevices::rgb(122 / 255, 122 / 255, 122 / 255), + grDevices::rgb(109 / 255, 109 / 255, 109 / 255), + grDevices::rgb(97 / 255, 97 / 255, 97 / 255), + grDevices::rgb(85 / 255, 85 / 255, 85 / 255), + grDevices::rgb(69 / 255, 69 / 255, 69 / 255), + grDevices::rgb(52 / 255, 52 / 255, 52 / 255), + grDevices::rgb(37 / 255, 37 / 255, 37 / 255)), + "type" = "sequential" + ), + "YlOrRd" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(255 / 255, 237 / 255, 160 / 255), + grDevices::rgb(240 / 255, 59 / 255, 32 / 255)), + "3" = tibble::lst(grDevices::rgb(255 / 255, 237 / 255, 160 / 255), + grDevices::rgb(254 / 255, 178 / 255, 76 / 255), + grDevices::rgb(240 / 255, 59 / 255, 32 / 255)), + "4" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 178 / 255), + grDevices::rgb(254 / 255, 204 / 255, 92 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(227 / 255, 26 / 255, 28 / 255)), + "5" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 178 / 255), + grDevices::rgb(254 / 255, 204 / 255, 92 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(240 / 255, 59 / 255, 32 / 255), + grDevices::rgb(189 / 255, 0 / 255, 38 / 255)), + "6" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 178 / 255), + grDevices::rgb(254 / 255, 217 / 255, 118 / 255), + grDevices::rgb(254 / 255, 178 / 255, 76 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(240 / 255, 59 / 255, 32 / 255), + grDevices::rgb(189 / 255, 0 / 255, 38 / 255)), + "7" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 178 / 255), + grDevices::rgb(254 / 255, 217 / 255, 118 / 255), + grDevices::rgb(254 / 255, 178 / 255, 76 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(252 / 255,78 / 255, 42 / 255), + grDevices::rgb(227 / 255, 26 / 255, 28 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 237 / 255, 160 / 255), + grDevices::rgb(254 / 255, 217 / 255, 118 / 255), + grDevices::rgb(254 / 255, 178 / 255, 76 / 255), + grDevices::rgb(253 / 255, 141 / 255, 60 / 255), + grDevices::rgb(252 / 255, 78 / 255, 42 / 255), + grDevices::rgb(227 / 255, 26 / 255, 28 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 239 / 255, 165 / 255), + grDevices::rgb(254 / 255, 221 / 255, 128 / 255), + grDevices::rgb(254 / 255, 192 / 255, 91 / 255), + grDevices::rgb(253 / 255, 159 / 255, 67 / 255), + grDevices::rgb(253 / 255, 119 / 255, 52 / 255), + grDevices::rgb(245 / 255, 67 / 255, 38 / 255), + grDevices::rgb(220 / 255, 23 / 255, 29 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 240 / 255, 169 / 255), + grDevices::rgb(254 / 255, 225 / 255, 136 / 255), + grDevices::rgb(254 / 255, 204 / 255, 104 / 255), + grDevices::rgb(254 / 255, 174 / 255, 74 / 255), + grDevices::rgb(253 / 255, 145 / 255, 61 / 255), + grDevices::rgb(252 / 255, 101 / 255, 47 / 255), + grDevices::rgb(240 / 255, 58 / 255, 35 / 255), + grDevices::rgb(215 / 255, 20 / 255, 30 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 242 / 255, 173 / 255), + grDevices::rgb(254 / 255, 228 / 255, 143 / 255), + grDevices::rgb(254 / 255, 213 / 255, 113 / 255), + grDevices::rgb(254 / 255, 185 / 255, 84 / 255), + grDevices::rgb(253 / 255, 159 / 255, 67 / 255), + grDevices::rgb(253 / 255, 129 / 255, 56 / 255), + grDevices::rgb(252 / 255, 85 / 255, 43 / 255), + grDevices::rgb(237 / 255, 51 / 255, 33 / 255), + grDevices::rgb(211 / 255, 18 / 255, 31 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 243 / 255, 175 / 255), + grDevices::rgb(255 / 255, 231 / 255, 148 / 255), + grDevices::rgb(254 / 255, 218 / 255, 121 / 255), + grDevices::rgb(254 / 255, 195 / 255, 95 / 255), + grDevices::rgb(254 / 255, 171 / 255, 73 / 255), + grDevices::rgb(253 / 255, 147 / 255, 62 / 255), + grDevices::rgb(253 / 255, 115 / 255, 51 / 255), + grDevices::rgb(249 / 255,74 / 255, 40 / 255), + grDevices::rgb(233 / 255, 44 / 255, 31 / 255), + grDevices::rgb(208 / 255, 17 / 255, 32 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 244 / 255, 178 / 255), + grDevices::rgb(255 / 255, 233 / 255, 153 / 255), + grDevices::rgb(254 / 255, 221 / 255, 128 / 255), + grDevices::rgb(254 / 255, 204 / 255, 104 / 255), + grDevices::rgb(254 / 255, 181 / 255, 79 / 255), + grDevices::rgb(253 / 255, 159 / 255, 67 / 255), + grDevices::rgb(253 / 255, 136 / 255, 58 / 255), + grDevices::rgb(252 / 255, 101 / 255, 47 / 255), + grDevices::rgb(245 / 255, 67 / 255, 38 / 255), + grDevices::rgb(231 / 255, 38 / 255, 30 / 255), + grDevices::rgb(205 / 255, 15 / 255, 33 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 245 / 255, 180 / 255), + grDevices::rgb(255 / 255, 235 / 255, 156 / 255), + grDevices::rgb(254 / 255, 224 / 255, 134 / 255), + grDevices::rgb(254 / 255, 211 / 255, 111 / 255), + grDevices::rgb(254 / 255, 190 / 255, 89 / 255), + grDevices::rgb(254 / 255, 169 / 255, 72 / 255), + grDevices::rgb(253 / 255, 149 / 255, 63 / 255), + grDevices::rgb(253 / 255, 123 / 255, 54 / 255), + grDevices::rgb(252 / 255, 89 / 255, 44 / 255), + grDevices::rgb(242 / 255, 61 / 255, 36 / 255), + grDevices::rgb(228 / 255, 31 / 255, 29 / 255), + grDevices::rgb(203 / 255, 14 / 255, 33 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 245 / 255, 181 / 255), + grDevices::rgb(255 / 255, 236 / 255, 159 / 255), + grDevices::rgb(254 / 255, 226 / 255, 139 / 255), + grDevices::rgb(254 / 255, 216 / 255, 118 / 255), + grDevices::rgb(254 / 255, 197 / 255, 97 / 255), + grDevices::rgb(254 / 255, 178 / 255, 76 / 255), + grDevices::rgb(253 / 255, 159 / 255, 67 / 255), + grDevices::rgb(253 / 255, 140 / 255, 59 / 255), + grDevices::rgb(253 / 255, 112 / 255, 50 / 255), + grDevices::rgb(252 / 255,77 / 255, 42 / 255), + grDevices::rgb(239 / 255, 56 / 255, 34 / 255), + grDevices::rgb(227 / 255, 25 / 255, 27 / 255), + grDevices::rgb(201 / 255, 13 / 255, 33 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 246 / 255, 183 / 255), + grDevices::rgb(255 / 255, 238 / 255, 162 / 255), + grDevices::rgb(254 / 255, 228 / 255, 143 / 255), + grDevices::rgb(254 / 255, 219 / 255, 123 / 255), + grDevices::rgb(254 / 255, 204 / 255, 104 / 255), + grDevices::rgb(254 / 255, 185 / 255, 84 / 255), + grDevices::rgb(253 / 255, 168 / 255, 71 / 255), + grDevices::rgb(253 / 255, 151 / 255, 64 / 255), + grDevices::rgb(253 / 255, 129 / 255, 56 / 255), + grDevices::rgb(252 / 255, 101 / 255, 47 / 255), + grDevices::rgb(248 / 255,72 / 255, 40 / 255), + grDevices::rgb(237 / 255, 51 / 255, 33 / 255), + grDevices::rgb(223 / 255, 24 / 255, 28 / 255), + grDevices::rgb(200 / 255, 12 / 255, 34 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 247 / 255, 184 / 255), + grDevices::rgb(255 / 255, 239 / 255, 165 / 255), + grDevices::rgb(255 / 255, 230 / 255, 146 / 255), + grDevices::rgb(254 / 255, 221 / 255, 128 / 255), + grDevices::rgb(254 / 255, 209 / 255, 110 / 255), + grDevices::rgb(254 / 255, 192 / 255, 91 / 255), + grDevices::rgb(254 / 255, 175 / 255, 74 / 255), + grDevices::rgb(253 / 255, 159 / 255, 67 / 255), + grDevices::rgb(253 / 255, 143 / 255, 60 / 255), + grDevices::rgb(253 / 255, 119 / 255, 52 / 255), + grDevices::rgb(252 / 255, 91 / 255, 45 / 255), + grDevices::rgb(245 / 255, 67 / 255, 38 / 255), + grDevices::rgb(234 / 255, 46 / 255, 32 / 255), + grDevices::rgb(220 / 255, 23 / 255, 29 / 255), + grDevices::rgb(198 / 255, 11 / 255, 34 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 247 / 255, 185 / 255), + grDevices::rgb(255 / 255, 240 / 255, 167 / 255), + grDevices::rgb(255 / 255, 232 / 255, 150 / 255), + grDevices::rgb(254 / 255, 224 / 255, 132 / 255), + grDevices::rgb(254 / 255, 214 / 255, 115 / 255), + grDevices::rgb(254 / 255, 198 / 255, 98 / 255), + grDevices::rgb(254 / 255, 182 / 255, 81 / 255), + grDevices::rgb(253 / 255, 167 / 255, 71 / 255), + grDevices::rgb(253 / 255, 152 / 255, 64 / 255), + grDevices::rgb(253 / 255, 134 / 255, 57 / 255), + grDevices::rgb(253 / 255, 110 / 255, 50 / 255), + grDevices::rgb(252 / 255, 82 / 255, 42 / 255), + grDevices::rgb(243 / 255, 62 / 255, 36 / 255), + grDevices::rgb(232 / 255, 42 / 255, 31 / 255), + grDevices::rgb(218 / 255, 21 / 255, 30 / 255), + grDevices::rgb(197 / 255, 11 / 255, 34 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 247 / 255, 186 / 255), + grDevices::rgb(255 / 255, 240 / 255, 169 / 255), + grDevices::rgb(255 / 255, 233 / 255, 153 / 255), + grDevices::rgb(254 / 255, 225 / 255, 136 / 255), + grDevices::rgb(254 / 255, 218 / 255, 120 / 255), + grDevices::rgb(254 / 255, 204 / 255, 104 / 255), + grDevices::rgb(254 / 255, 188 / 255, 87 / 255), + grDevices::rgb(254 / 255, 174 / 255, 74 / 255), + grDevices::rgb(253 / 255, 159 / 255, 67 / 255), + grDevices::rgb(253 / 255, 145 / 255, 61 / 255), + grDevices::rgb(253 / 255, 125 / 255, 54 / 255), + grDevices::rgb(252 / 255, 101 / 255, 47 / 255), + grDevices::rgb(250 / 255,75 / 255, 41 / 255), + grDevices::rgb(240 / 255, 58 / 255, 35 / 255), + grDevices::rgb(231 / 255, 38 / 255, 30 / 255), + grDevices::rgb(215 / 255, 20 / 255, 30 / 255), + grDevices::rgb(196 / 255, 10 / 255, 34 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 255 / 255, 204 / 255), + grDevices::rgb(255 / 255, 248 / 255, 187 / 255), + grDevices::rgb(255 / 255, 241 / 255, 171 / 255), + grDevices::rgb(255 / 255, 234 / 255, 155 / 255), + grDevices::rgb(254 / 255, 227 / 255, 140 / 255), + grDevices::rgb(254 / 255, 220 / 255, 124 / 255), + grDevices::rgb(254 / 255, 208 / 255, 109 / 255), + grDevices::rgb(254 / 255, 194 / 255, 93 / 255), + grDevices::rgb(254 / 255, 180 / 255, 78 / 255), + grDevices::rgb(253 / 255, 166 / 255,70 / 255), + grDevices::rgb(253 / 255, 152 / 255, 64 / 255), + grDevices::rgb(253 / 255, 138 / 255, 58 / 255), + grDevices::rgb(253 / 255, 117 / 255, 52 / 255), + grDevices::rgb(252 / 255, 93 / 255, 45 / 255), + grDevices::rgb(248 / 255,71 / 255, 39 / 255), + grDevices::rgb(238 / 255, 54 / 255, 34 / 255), + grDevices::rgb(229 / 255, 33 / 255, 29 / 255), + grDevices::rgb(213 / 255, 19 / 255, 31 / 255), + grDevices::rgb(195 / 255, 9 / 255, 35 / 255), + grDevices::rgb(177 / 255, 0 / 255, 38 / 255)), + "type" = "sequential" + ), + "PuRd" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(231 / 255, 225 / 255, 239 / 255), + grDevices::rgb(221 / 255, 28 / 255, 119 / 255)), + "3" = tibble::lst(grDevices::rgb(231 / 255, 225 / 255, 239 / 255), + grDevices::rgb(201 / 255, 148 / 255, 199 / 255), + grDevices::rgb(221 / 255, 28 / 255, 119 / 255)), + "4" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), + grDevices::rgb(215 / 255, 181 / 255, 216 / 255), + grDevices::rgb(223 / 255, 101 / 255, 176 / 255), + grDevices::rgb(206 / 255, 18 / 255, 86 / 255)), + "5" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), + grDevices::rgb(215 / 255, 181 / 255, 216 / 255), + grDevices::rgb(223 / 255, 101 / 255, 176 / 255), + grDevices::rgb(221 / 255, 28 / 255, 119 / 255), + grDevices::rgb(152 / 255, 0 / 255, 67 / 255)), + "6" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), + grDevices::rgb(212 / 255, 185 / 255, 218 / 255), + grDevices::rgb(201 / 255, 148 / 255, 199 / 255), + grDevices::rgb(223 / 255, 101 / 255, 176 / 255), + grDevices::rgb(221 / 255, 28 / 255, 119 / 255), + grDevices::rgb(152 / 255, 0 / 255, 67 / 255)), + "7" = tibble::lst(grDevices::rgb(241 / 255, 238 / 255, 246 / 255), + grDevices::rgb(212 / 255, 185 / 255, 218 / 255), + grDevices::rgb(201 / 255, 148 / 255, 199 / 255), + grDevices::rgb(223 / 255, 101 / 255, 176 / 255), + grDevices::rgb(231 / 255, 41 / 255, 138 / 255), + grDevices::rgb(206 / 255, 18 / 255, 86 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "8" = tibble::lst(grDevices::rgb(247 / 255, 244 / 255, 249 / 255), + grDevices::rgb(231 / 255, 225 / 255, 239 / 255), + grDevices::rgb(212 / 255, 185 / 255, 218 / 255), + grDevices::rgb(201 / 255, 148 / 255, 199 / 255), + grDevices::rgb(223 / 255, 101 / 255, 176 / 255), + grDevices::rgb(231 / 255, 41 / 255, 138 / 255), + grDevices::rgb(206 / 255, 18 / 255, 86 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "9" = tibble::lst(grDevices::rgb(247 / 255, 244 / 255, 249 / 255), + grDevices::rgb(231 / 255, 225 / 255, 239 / 255), + grDevices::rgb(212 / 255, 185 / 255, 218 / 255), + grDevices::rgb(201 / 255, 148 / 255, 199 / 255), + grDevices::rgb(223 / 255, 101 / 255, 176 / 255), + grDevices::rgb(231 / 255, 41 / 255, 138 / 255), + grDevices::rgb(206 / 255, 18 / 255, 86 / 255), + grDevices::rgb(152 / 255, 0 / 255, 67 / 255), + grDevices::rgb(103 / 255, 0 / 255, 31 / 255)), + "10" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(234 / 255, 229 / 255, 241 / 255), + grDevices::rgb(220 / 255, 202 / 255, 227 / 255), + grDevices::rgb(208 / 255, 172 / 255, 211 / 255), + grDevices::rgb(203 / 255, 143 / 255, 196 / 255), + grDevices::rgb(220 / 255, 106 / 255, 178 / 255), + grDevices::rgb(229 / 255, 66 / 255, 150 / 255), + grDevices::rgb(220 / 255, 31 / 255, 114 / 255), + grDevices::rgb(192 / 255, 13 / 255, 80 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "11" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(235 / 255, 230 / 255, 241 / 255), + grDevices::rgb(223 / 255, 208 / 255, 230 / 255), + grDevices::rgb(210 / 255, 181 / 255, 216 / 255), + grDevices::rgb(203 / 255, 155 / 255, 202 / 255), + grDevices::rgb(213 / 255, 126 / 255, 187 / 255), + grDevices::rgb(225 / 255, 91 / 255, 168 / 255), + grDevices::rgb(230 / 255, 49 / 255, 141 / 255), + grDevices::rgb(216 / 255, 27 / 255, 106 / 255), + grDevices::rgb(187 / 255, 11 / 255, 78 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "12" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(236 / 255, 231 / 255, 242 / 255), + grDevices::rgb(225 / 255, 214 / 255, 233 / 255), + grDevices::rgb(213 / 255, 188 / 255, 219 / 255), + grDevices::rgb(206 / 255, 164 / 255, 207 / 255), + grDevices::rgb(205 / 255, 140 / 255, 194 / 255), + grDevices::rgb(219 / 255, 110 / 255, 180 / 255), + grDevices::rgb(227 / 255, 78 / 255, 158 / 255), + grDevices::rgb(228 / 255, 39 / 255, 133 / 255), + grDevices::rgb(213 / 255, 24 / 255, 99 / 255), + grDevices::rgb(183 / 255, 10 / 255,77 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "13" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(237 / 255, 232 / 255, 243 / 255), + grDevices::rgb(227 / 255, 218 / 255, 235 / 255), + grDevices::rgb(216 / 255, 194 / 255, 223 / 255), + grDevices::rgb(208 / 255, 172 / 255, 211 / 255), + grDevices::rgb(201 / 255, 151 / 255, 200 / 255), + grDevices::rgb(213 / 255, 126 / 255, 187 / 255), + grDevices::rgb(223 / 255, 97 / 255, 172 / 255), + grDevices::rgb(229 / 255, 66 / 255, 150 / 255), + grDevices::rgb(224 / 255, 35 / 255, 124 / 255), + grDevices::rgb(210 / 255, 22 / 255, 94 / 255), + grDevices::rgb(180 / 255, 9 / 255, 76 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "14" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(238 / 255, 233 / 255, 243 / 255), + grDevices::rgb(229 / 255, 221 / 255, 237 / 255), + grDevices::rgb(219 / 255, 200 / 255, 226 / 255), + grDevices::rgb(210 / 255, 179 / 255, 215 / 255), + grDevices::rgb(204 / 255, 159 / 255, 204 / 255), + grDevices::rgb(206 / 255, 138 / 255, 193 / 255), + grDevices::rgb(218 / 255, 113 / 255, 181 / 255), + grDevices::rgb(226 / 255, 86 / 255, 164 / 255), + grDevices::rgb(230 / 255, 53 / 255, 143 / 255), + grDevices::rgb(221 / 255, 32 / 255, 117 / 255), + grDevices::rgb(208 / 255, 20 / 255, 89 / 255), + grDevices::rgb(177 / 255, 8 / 255, 75 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "15" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(238 / 255, 234 / 255, 243 / 255), + grDevices::rgb(230 / 255, 224 / 255, 238 / 255), + grDevices::rgb(221 / 255, 204 / 255, 228 / 255), + grDevices::rgb(211 / 255, 184 / 255, 217 / 255), + grDevices::rgb(206 / 255, 166 / 255, 208 / 255), + grDevices::rgb(201 / 255, 147 / 255, 198 / 255), + grDevices::rgb(213 / 255, 126 / 255, 187 / 255), + grDevices::rgb(223 / 255, 101 / 255, 176 / 255), + grDevices::rgb(227 / 255, 76 / 255, 156 / 255), + grDevices::rgb(230 / 255, 40 / 255, 138 / 255), + grDevices::rgb(218 / 255, 30 / 255, 111 / 255), + grDevices::rgb(205 / 255, 18 / 255, 85 / 255), + grDevices::rgb(175 / 255,7 / 255,74 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "16" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(239 / 255, 235 / 255, 244 / 255), + grDevices::rgb(232 / 255, 226 / 255, 239 / 255), + grDevices::rgb(223 / 255, 208 / 255, 230 / 255), + grDevices::rgb(214 / 255, 190 / 255, 220 / 255), + grDevices::rgb(208 / 255, 172 / 255, 211 / 255), + grDevices::rgb(203 / 255, 155 / 255, 202 / 255), + grDevices::rgb(207 / 255, 136 / 255, 192 / 255), + grDevices::rgb(217 / 255, 114 / 255, 182 / 255), + grDevices::rgb(225 / 255, 91 / 255, 168 / 255), + grDevices::rgb(229 / 255, 66 / 255, 150 / 255), + grDevices::rgb(227 / 255, 38 / 255, 130 / 255), + grDevices::rgb(216 / 255, 27 / 255, 106 / 255), + grDevices::rgb(201 / 255, 16 / 255, 84 / 255), + grDevices::rgb(172 / 255, 7 / 255,73 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "17" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(239 / 255, 235 / 255, 244 / 255), + grDevices::rgb(232 / 255, 227 / 255, 240 / 255), + grDevices::rgb(225 / 255, 212 / 255, 232 / 255), + grDevices::rgb(216 / 255, 194 / 255, 223 / 255), + grDevices::rgb(210 / 255, 178 / 255, 214 / 255), + grDevices::rgb(205 / 255, 161 / 255, 206 / 255), + grDevices::rgb(202 / 255, 145 / 255, 197 / 255), + grDevices::rgb(213 / 255, 126 / 255, 187 / 255), + grDevices::rgb(221 / 255, 104 / 255, 177 / 255), + grDevices::rgb(226 / 255, 82 / 255, 161 / 255), + grDevices::rgb(229 / 255, 56 / 255, 144 / 255), + grDevices::rgb(224 / 255, 35 / 255, 124 / 255), + grDevices::rgb(214 / 255, 25 / 255, 101 / 255), + grDevices::rgb(198 / 255, 15 / 255, 83 / 255), + grDevices::rgb(171 / 255, 6 / 255, 72 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "18" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(240 / 255, 236 / 255, 244 / 255), + grDevices::rgb(233 / 255, 228 / 255, 240 / 255), + grDevices::rgb(226 / 255, 215 / 255, 234 / 255), + grDevices::rgb(218 / 255, 199 / 255, 225 / 255), + grDevices::rgb(211 / 255, 182 / 255, 216 / 255), + grDevices::rgb(207 / 255, 167 / 255, 209 / 255), + grDevices::rgb(202 / 255, 152 / 255, 201 / 255), + grDevices::rgb(208 / 255, 135 / 255, 192 / 255), + grDevices::rgb(217 / 255, 116 / 255, 182 / 255), + grDevices::rgb(224 / 255, 95 / 255, 171 / 255), + grDevices::rgb(228 / 255, 74 / 255, 155 / 255), + grDevices::rgb(230 / 255, 46 / 255, 140 / 255), + grDevices::rgb(222 / 255, 33 / 255, 119 / 255), + grDevices::rgb(212 / 255, 24 / 255, 97 / 255), + grDevices::rgb(194 / 255, 14 / 255, 81 / 255), + grDevices::rgb(169 / 255, 6 / 255,72 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "19" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(240 / 255, 236 / 255, 245 / 255), + grDevices::rgb(234 / 255, 229 / 255, 241 / 255), + grDevices::rgb(227 / 255, 218 / 255, 235 / 255), + grDevices::rgb(220 / 255, 202 / 255, 227 / 255), + grDevices::rgb(213 / 255, 187 / 255, 219 / 255), + grDevices::rgb(208 / 255, 172 / 255, 211 / 255), + grDevices::rgb(204 / 255, 158 / 255, 204 / 255), + grDevices::rgb(203 / 255, 143 / 255, 196 / 255), + grDevices::rgb(213 / 255, 126 / 255, 187 / 255), + grDevices::rgb(220 / 255, 106 / 255, 178 / 255), + grDevices::rgb(225 / 255, 87 / 255, 165 / 255), + grDevices::rgb(229 / 255, 66 / 255, 150 / 255), + grDevices::rgb(229 / 255, 39 / 255, 135 / 255), + grDevices::rgb(220 / 255, 31 / 255, 114 / 255), + grDevices::rgb(210 / 255, 22 / 255, 94 / 255), + grDevices::rgb(192 / 255, 13 / 255, 80 / 255), + grDevices::rgb(168 / 255, 5 / 255, 71 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "20" = tibble::lst(grDevices::rgb(247 / 255, 243 / 255, 248 / 255), + grDevices::rgb(241 / 255, 236 / 255, 245 / 255), + grDevices::rgb(235 / 255, 229 / 255, 241 / 255), + grDevices::rgb(229 / 255, 220 / 255, 236 / 255), + grDevices::rgb(222 / 255, 205 / 255, 229 / 255), + grDevices::rgb(215 / 255, 191 / 255, 221 / 255), + grDevices::rgb(209 / 255, 177 / 255, 213 / 255), + grDevices::rgb(205 / 255, 163 / 255, 206 / 255), + grDevices::rgb(201 / 255, 149 / 255, 199 / 255), + grDevices::rgb(208 / 255, 134 / 255, 191 / 255), + grDevices::rgb(216 / 255, 117 / 255, 183 / 255), + grDevices::rgb(223 / 255, 98 / 255, 173 / 255), + grDevices::rgb(227 / 255, 80 / 255, 159 / 255), + grDevices::rgb(229 / 255, 58 / 255, 145 / 255), + grDevices::rgb(227 / 255, 37 / 255, 129 / 255), + grDevices::rgb(218 / 255, 29 / 255, 110 / 255), + grDevices::rgb(208 / 255, 20 / 255, 91 / 255), + grDevices::rgb(189 / 255, 12 / 255, 79 / 255), + grDevices::rgb(167 / 255, 5 / 255,71 / 255), + grDevices::rgb(145 / 255, 0 / 255, 63 / 255)), + "type" = "sequential" + ), + "Blues" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(222 / 255, 235 / 255, 247 / 255), + grDevices::rgb(49 / 255, 130 / 255, 189 / 255)), + "3" = tibble::lst(grDevices::rgb(222 / 255, 235 / 255, 247 / 255), + grDevices::rgb(158 / 255, 202 / 255, 225 / 255), + grDevices::rgb(49 / 255, 130 / 255, 189 / 255)), + "4" = tibble::lst(grDevices::rgb(239 / 255, 243 / 255, 255 / 255), + grDevices::rgb(189 / 255, 215 / 255, 231 / 255), + grDevices::rgb(107 / 255, 174 / 255, 214 / 255), + grDevices::rgb(33 / 255, 113 / 255, 181 / 255)), + "5" = tibble::lst(grDevices::rgb(239 / 255, 243 / 255, 255 / 255), + grDevices::rgb(189 / 255, 215 / 255, 231 / 255), + grDevices::rgb(107 / 255, 174 / 255, 214 / 255), + grDevices::rgb(49 / 255, 130 / 255, 189 / 255), + grDevices::rgb(8 / 255, 81 / 255, 156 / 255)), + "6" = tibble::lst(grDevices::rgb(239 / 255, 243 / 255, 255 / 255), + grDevices::rgb(198 / 255, 219 / 255, 239 / 255), + grDevices::rgb(158 / 255, 202 / 255, 225 / 255), + grDevices::rgb(107 / 255, 174 / 255, 214 / 255), + grDevices::rgb(49 / 255, 130 / 255, 189 / 255), + grDevices::rgb(8 / 255, 81 / 255, 156 / 255)), + "7" = tibble::lst(grDevices::rgb(239 / 255, 243 / 255, 255 / 255), + grDevices::rgb(198 / 255, 219 / 255, 239 / 255), + grDevices::rgb(158 / 255, 202 / 255, 225 / 255), + grDevices::rgb(107 / 255, 174 / 255, 214 / 255), + grDevices::rgb(66 / 255, 146 / 255, 198 / 255), + grDevices::rgb(33 / 255, 113 / 255, 181 / 255), + grDevices::rgb(8 / 255, 69 / 255, 148 / 255)), + "8" = tibble::lst(grDevices::rgb(247 / 255, 251 / 255, 255 / 255), + grDevices::rgb(222 / 255, 235 / 255, 247 / 255), + grDevices::rgb(198 / 255, 219 / 255, 239 / 255), + grDevices::rgb(158 / 255, 202 / 255, 225 / 255), + grDevices::rgb(107 / 255, 174 / 255, 214 / 255), + grDevices::rgb(66 / 255, 146 / 255, 198 / 255), + grDevices::rgb(33 / 255, 113 / 255, 181 / 255), + grDevices::rgb(8 / 255, 69 / 255, 148 / 255)), + "9" = tibble::lst(grDevices::rgb(247 / 255, 251 / 255, 255 / 255), + grDevices::rgb(222 / 255, 235 / 255, 247 / 255), + grDevices::rgb(198 / 255, 219 / 255, 239 / 255), + grDevices::rgb(158 / 255, 202 / 255, 225 / 255), + grDevices::rgb(107 / 255, 174 / 255, 214 / 255), + grDevices::rgb(66 / 255, 146 / 255, 198 / 255), + grDevices::rgb(33 / 255, 113 / 255, 181 / 255), + grDevices::rgb(8 / 255, 81 / 255, 156 / 255), + grDevices::rgb(8 / 255, 48 / 255, 107 / 255)), + "10" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(227 / 255, 238 / 255, 248 / 255), + grDevices::rgb(208 / 255, 226 / 255, 242 / 255), + grDevices::rgb(184 / 255, 213 / 255, 234 / 255), + grDevices::rgb(152 / 255, 198 / 255, 223 / 255), + grDevices::rgb(113 / 255, 177 / 255, 215 / 255), + grDevices::rgb(80 / 255, 155 / 255, 203 / 255), + grDevices::rgb(53 / 255, 131 / 255, 190 / 255), + grDevices::rgb(29 / 255, 102 / 255, 173 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "11" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(229 / 255, 239 / 255, 249 / 255), + grDevices::rgb(212 / 255, 228 / 255, 243 / 255), + grDevices::rgb(194 / 255, 217 / 255, 237 / 255), + grDevices::rgb(166 / 255, 205 / 255, 227 / 255), + grDevices::rgb(133 / 255, 187 / 255, 219 / 255), + grDevices::rgb(99 / 255, 168 / 255, 210 / 255), + grDevices::rgb(70 / 255, 148 / 255, 199 / 255), + grDevices::rgb(48 / 255, 126 / 255, 187 / 255), + grDevices::rgb(27 / 255, 99 / 255, 171 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "12" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(231 / 255, 240 / 255, 249 / 255), + grDevices::rgb(215 / 255, 230 / 255, 244 / 255), + grDevices::rgb(200 / 255, 220 / 255, 239 / 255), + grDevices::rgb(176 / 255, 209 / 255, 231 / 255), + grDevices::rgb(149 / 255, 196 / 255, 223 / 255), + grDevices::rgb(117 / 255, 179 / 255, 216 / 255), + grDevices::rgb(89 / 255, 161 / 255, 206 / 255), + grDevices::rgb(63 / 255, 142 / 255, 196 / 255), + grDevices::rgb(43 / 255, 121 / 255, 185 / 255), + grDevices::rgb(26 / 255, 96 / 255, 168 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "13" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(232 / 255, 241 / 255, 250 / 255), + grDevices::rgb(218 / 255, 232 / 255, 245 / 255), + grDevices::rgb(204 / 255, 222 / 255, 241 / 255), + grDevices::rgb(184 / 255, 213 / 255, 234 / 255), + grDevices::rgb(161 / 255, 203 / 255, 226 / 255), + grDevices::rgb(133 / 255, 187 / 255, 219 / 255), + grDevices::rgb(103 / 255, 171 / 255, 212 / 255), + grDevices::rgb(80 / 255, 155 / 255, 203 / 255), + grDevices::rgb(59 / 255, 137 / 255, 193 / 255), + grDevices::rgb(39 / 255, 118 / 255, 183 / 255), + grDevices::rgb(25 / 255, 94 / 255, 167 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "14" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(233 / 255, 242 / 255, 250 / 255), + grDevices::rgb(220 / 255, 233 / 255, 246 / 255), + grDevices::rgb(207 / 255, 225 / 255, 242 / 255), + grDevices::rgb(191 / 255, 216 / 255, 236 / 255), + grDevices::rgb(170 / 255, 207 / 255, 229 / 255), + grDevices::rgb(146 / 255, 195 / 255, 222 / 255), + grDevices::rgb(119 / 255, 180 / 255, 216 / 255), + grDevices::rgb(95 / 255, 165 / 255, 209 / 255), + grDevices::rgb(73 / 255, 150 / 255, 200 / 255), + grDevices::rgb(55 / 255, 133 / 255, 191 / 255), + grDevices::rgb(36 / 255, 115 / 255, 182 / 255), + grDevices::rgb(24 / 255, 92 / 255, 165 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "15" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(234 / 255, 242 / 255, 251 / 255), + grDevices::rgb(222 / 255, 235 / 255, 247 / 255), + grDevices::rgb(210 / 255, 226 / 255, 243 / 255), + grDevices::rgb(197 / 255, 218 / 255, 238 / 255), + grDevices::rgb(178 / 255, 210 / 255, 231 / 255), + grDevices::rgb(158 / 255, 202 / 255, 224 / 255), + grDevices::rgb(133 / 255, 187 / 255, 219 / 255), + grDevices::rgb(107 / 255, 173 / 255, 214 / 255), + grDevices::rgb(87 / 255, 159 / 255, 205 / 255), + grDevices::rgb(65 / 255, 146 / 255, 197 / 255), + grDevices::rgb(51 / 255, 129 / 255, 189 / 255), + grDevices::rgb(32 / 255, 113 / 255, 180 / 255), + grDevices::rgb(23 / 255, 90 / 255, 164 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "16" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(235 / 255, 243 / 255, 251 / 255), + grDevices::rgb(223 / 255, 236 / 255, 247 / 255), + grDevices::rgb(212 / 255, 228 / 255, 243 / 255), + grDevices::rgb(201 / 255, 221 / 255, 240 / 255), + grDevices::rgb(184 / 255, 213 / 255, 234 / 255), + grDevices::rgb(166 / 255, 205 / 255, 227 / 255), + grDevices::rgb(145 / 255, 194 / 255, 222 / 255), + grDevices::rgb(121 / 255, 181 / 255, 216 / 255), + grDevices::rgb(99 / 255, 168 / 255, 210 / 255), + grDevices::rgb(80 / 255, 155 / 255, 203 / 255), + grDevices::rgb(62 / 255, 141 / 255, 195 / 255), + grDevices::rgb(48 / 255, 126 / 255, 187 / 255), + grDevices::rgb(31 / 255, 109 / 255, 178 / 255), + grDevices::rgb(22 / 255, 89 / 255, 163 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "17" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(236 / 255, 243 / 255, 251 / 255), + grDevices::rgb(225 / 255, 236 / 255, 248 / 255), + grDevices::rgb(214 / 255, 229 / 255, 244 / 255), + grDevices::rgb(204 / 255, 222 / 255, 241 / 255), + grDevices::rgb(190 / 255, 215 / 255, 236 / 255), + grDevices::rgb(173 / 255, 208 / 255, 230 / 255), + grDevices::rgb(155 / 255, 200 / 255, 224 / 255), + grDevices::rgb(133 / 255, 187 / 255, 219 / 255), + grDevices::rgb(110 / 255, 175 / 255, 214 / 255), + grDevices::rgb(92 / 255, 163 / 255, 207 / 255), + grDevices::rgb(74 / 255, 151 / 255, 200 / 255), + grDevices::rgb(59 / 255, 137 / 255, 193 / 255), + grDevices::rgb(45 / 255, 123 / 255, 186 / 255), + grDevices::rgb(30 / 255, 107 / 255, 176 / 255), + grDevices::rgb(22 / 255, 87 / 255, 162 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "18" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(236 / 255, 244 / 255, 251 / 255), + grDevices::rgb(226 / 255, 237 / 255, 248 / 255), + grDevices::rgb(216 / 255, 231 / 255, 245 / 255), + grDevices::rgb(206 / 255, 224 / 255, 241 / 255), + grDevices::rgb(195 / 255, 217 / 255, 238 / 255), + grDevices::rgb(179 / 255, 210 / 255, 232 / 255), + grDevices::rgb(162 / 255, 203 / 255, 226 / 255), + grDevices::rgb(143 / 255, 193 / 255, 221 / 255), + grDevices::rgb(122 / 255, 182 / 255, 217 / 255), + grDevices::rgb(102 / 255, 170 / 255, 212 / 255), + grDevices::rgb(86 / 255, 159 / 255, 205 / 255), + grDevices::rgb(68 / 255, 147 / 255, 198 / 255), + grDevices::rgb(55 / 255, 134 / 255, 192 / 255), + grDevices::rgb(42 / 255, 120 / 255, 185 / 255), + grDevices::rgb(30 / 255, 105 / 255, 175 / 255), + grDevices::rgb(21 / 255, 86 / 255, 161 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "19" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(237 / 255, 244 / 255, 251 / 255), + grDevices::rgb(227 / 255, 238 / 255, 248 / 255), + grDevices::rgb(218 / 255, 232 / 255, 245 / 255), + grDevices::rgb(208 / 255, 226 / 255, 242 / 255), + grDevices::rgb(199 / 255, 219 / 255, 239 / 255), + grDevices::rgb(184 / 255, 213 / 255, 234 / 255), + grDevices::rgb(169 / 255, 206 / 255, 228 / 255), + grDevices::rgb(152 / 255, 198 / 255, 223 / 255), + grDevices::rgb(133 / 255, 187 / 255, 219 / 255), + grDevices::rgb(113 / 255, 177 / 255, 215 / 255), + grDevices::rgb(96 / 255, 166 / 255, 209 / 255), + grDevices::rgb(80 / 255, 155 / 255, 203 / 255), + grDevices::rgb(64 / 255, 144 / 255, 197 / 255), + grDevices::rgb(53 / 255, 131 / 255, 190 / 255), + grDevices::rgb(39 / 255, 118 / 255, 183 / 255), + grDevices::rgb(29 / 255, 102 / 255, 173 / 255), + grDevices::rgb(20 / 255, 85 / 255, 160 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "20" = tibble::lst(grDevices::rgb(247 / 255, 250 / 255, 255 / 255), + grDevices::rgb(237 / 255, 245 / 255, 252 / 255), + grDevices::rgb(228 / 255, 239 / 255, 249 / 255), + grDevices::rgb(219 / 255, 233 / 255, 246 / 255), + grDevices::rgb(210 / 255, 227 / 255, 243 / 255), + grDevices::rgb(201 / 255, 221 / 255, 240 / 255), + grDevices::rgb(189 / 255, 215 / 255, 236 / 255), + grDevices::rgb(175 / 255, 209 / 255, 230 / 255), + grDevices::rgb(160 / 255, 202 / 255, 225 / 255), + grDevices::rgb(142 / 255, 193 / 255, 221 / 255), + grDevices::rgb(124 / 255, 182 / 255, 217 / 255), + grDevices::rgb(105 / 255, 172 / 255, 213 / 255), + grDevices::rgb(90 / 255, 162 / 255, 207 / 255), + grDevices::rgb(75 / 255, 151 / 255, 201 / 255), + grDevices::rgb(61 / 255, 140 / 255, 195 / 255), + grDevices::rgb(50 / 255, 128 / 255, 189 / 255), + grDevices::rgb(37 / 255, 116 / 255, 182 / 255), + grDevices::rgb(28 / 255, 101 / 255, 172 / 255), + grDevices::rgb(20 / 255, 84 / 255, 160 / 255), + grDevices::rgb(7 / 255, 69 / 255, 147 / 255)), + "type" = "sequential" + ), + "PuBuGn" = tibble::lst( + "1" = tibble::lst(), + "2" = tibble::lst(grDevices::rgb(236 / 255, 226 / 255, 240 / 255), + grDevices::rgb(28 / 255, 144 / 255, 153 / 255)), + "3" = tibble::lst(grDevices::rgb(236 / 255, 226 / 255, 240 / 255), + grDevices::rgb(166 / 255, 189 / 255, 219 / 255), + grDevices::rgb(28 / 255, 144 / 255, 153 / 255)), + "4" = tibble::lst(grDevices::rgb(246 / 255, 239 / 255, 247 / 255), + grDevices::rgb(189 / 255, 201 / 255, 225 / 255), + grDevices::rgb(103 / 255, 169 / 255, 207 / 255), + grDevices::rgb(2 / 255, 129 / 255, 138 / 255)), + "5" = tibble::lst(grDevices::rgb(246 / 255, 239 / 255, 247 / 255), + grDevices::rgb(189 / 255, 201 / 255, 225 / 255), + grDevices::rgb(103 / 255, 169 / 255, 207 / 255), + grDevices::rgb(28 / 255, 144 / 255, 153 / 255), + grDevices::rgb(1 / 255, 108 / 255, 89 / 255)), + "6" = tibble::lst(grDevices::rgb(246 / 255, 239 / 255, 247 / 255), + grDevices::rgb(208 / 255, 209 / 255, 230 / 255), + grDevices::rgb(166 / 255, 189 / 255, 219 / 255), + grDevices::rgb(103 / 255, 169 / 255, 207 / 255), + grDevices::rgb(28 / 255, 144 / 255, 153 / 255), + grDevices::rgb(1 / 255, 108 / 255, 89 / 255)), + "7" = tibble::lst(grDevices::rgb(246 / 255, 239 / 255, 247 / 255), + grDevices::rgb(208 / 255, 209 / 255, 230 / 255), + grDevices::rgb(166 / 255, 189 / 255, 219 / 255), + grDevices::rgb(103 / 255, 169 / 255, 207 / 255), + grDevices::rgb(54 / 255, 144 / 255, 192 / 255), + grDevices::rgb(2 / 255, 129 / 255, 138 / 255), + grDevices::rgb(1 / 255, 100 / 255, 80 / 255)), + "8" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 251 / 255), + grDevices::rgb(236 / 255, 226 / 255, 240 / 255), + grDevices::rgb(208 / 255, 209 / 255, 230 / 255), + grDevices::rgb(166 / 255, 189 / 255, 219 / 255), + grDevices::rgb(103 / 255, 169 / 255, 207 / 255), + grDevices::rgb(54 / 255, 144 / 255, 192 / 255), + grDevices::rgb(2 / 255, 129 / 255, 138 / 255), + grDevices::rgb(1 / 255, 100 / 255, 80 / 255)), + "9" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 251 / 255), + grDevices::rgb(236 / 255, 226 / 255, 240 / 255), + grDevices::rgb(208 / 255, 209 / 255, 230 / 255), + grDevices::rgb(166 / 255, 189 / 255, 219 / 255), + grDevices::rgb(103 / 255, 169 / 255, 207 / 255), + grDevices::rgb(54 / 255, 144 / 255, 192 / 255), + grDevices::rgb(2 / 255, 129 / 255, 138 / 255), + grDevices::rgb(1 / 255, 108 / 255, 89 / 255), + grDevices::rgb(1 / 255, 70 / 255, 54 / 255)), + "10" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(240 / 255, 230 / 255, 242 / 255), + grDevices::rgb(220 / 255, 216 / 255, 234 / 255), + grDevices::rgb(194 / 255, 202 / 255, 226 / 255), + grDevices::rgb(159 / 255, 186 / 255, 217 / 255), + grDevices::rgb(110 / 255, 171 / 255, 208 / 255), + grDevices::rgb(72 / 255, 152 / 255, 196 / 255), + grDevices::rgb(37 / 255, 137 / 255, 167 / 255), + grDevices::rgb(4 / 255, 122 / 255, 124 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "11" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(241 / 255, 232 / 255, 243 / 255), + grDevices::rgb(224 / 255, 219 / 255, 235 / 255), + grDevices::rgb(203 / 255, 206 / 255, 228 / 255), + grDevices::rgb(174 / 255, 192 / 255, 221 / 255), + grDevices::rgb(136 / 255, 179 / 255, 213 / 255), + grDevices::rgb(94 / 255, 163 / 255, 203 / 255), + grDevices::rgb(60 / 255, 146 / 255, 193 / 255), + grDevices::rgb(31 / 255, 135 / 255, 159 / 255), + grDevices::rgb(4 / 255, 120 / 255, 120 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "12" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(242 / 255, 233 / 255, 243 / 255), + grDevices::rgb(228 / 255, 221 / 255, 237 / 255), + grDevices::rgb(210 / 255, 210 / 255, 230 / 255), + grDevices::rgb(185 / 255, 198 / 255, 224 / 255), + grDevices::rgb(155 / 255, 185 / 255, 216 / 255), + grDevices::rgb(115 / 255, 172 / 255, 209 / 255), + grDevices::rgb(82 / 255, 157 / 255, 200 / 255), + grDevices::rgb(51 / 255, 142 / 255, 186 / 255), + grDevices::rgb(24 / 255, 133 / 255, 152 / 255), + grDevices::rgb(5 / 255, 118 / 255, 116 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "13" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(243 / 255, 234 / 255, 244 / 255), + grDevices::rgb(231 / 255, 223 / 255, 238 / 255), + grDevices::rgb(215 / 255, 213 / 255, 232 / 255), + grDevices::rgb(194 / 255, 202 / 255, 226 / 255), + grDevices::rgb(169 / 255, 190 / 255, 219 / 255), + grDevices::rgb(136 / 255, 179 / 255, 213 / 255), + grDevices::rgb(99 / 255, 166 / 255, 205 / 255), + grDevices::rgb(72 / 255, 152 / 255, 196 / 255), + grDevices::rgb(45 / 255, 140 / 255, 178 / 255), + grDevices::rgb(17 / 255, 131 / 255, 146 / 255), + grDevices::rgb(5 / 255, 116 / 255, 113 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "14" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(244 / 255, 235 / 255, 245 / 255), + grDevices::rgb(233 / 255, 224 / 255, 239 / 255), + grDevices::rgb(218 / 255, 215 / 255, 233 / 255), + grDevices::rgb(201 / 255, 205 / 255, 228 / 255), + grDevices::rgb(179 / 255, 195 / 255, 222 / 255), + grDevices::rgb(152 / 255, 184 / 255, 216 / 255), + grDevices::rgb(119 / 255, 173 / 255, 209 / 255), + grDevices::rgb(89 / 255, 161 / 255, 202 / 255), + grDevices::rgb(63 / 255, 147 / 255, 194 / 255), + grDevices::rgb(40 / 255, 138 / 255, 170 / 255), + grDevices::rgb(9 / 255, 130 / 255, 142 / 255), + grDevices::rgb(5 / 255, 115 / 255, 110 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "15" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(245 / 255, 236 / 255, 245 / 255), + grDevices::rgb(235 / 255, 225 / 255, 240 / 255), + grDevices::rgb(222 / 255, 217 / 255, 234 / 255), + grDevices::rgb(208 / 255, 209 / 255, 229 / 255), + grDevices::rgb(187 / 255, 198 / 255, 224 / 255), + grDevices::rgb(165 / 255, 189 / 255, 218 / 255), + grDevices::rgb(136 / 255, 179 / 255, 213 / 255), + grDevices::rgb(102 / 255, 169 / 255, 206 / 255), + grDevices::rgb(80 / 255, 156 / 255, 199 / 255), + grDevices::rgb(53 / 255, 144 / 255, 191 / 255), + grDevices::rgb(35 / 255, 136 / 255, 164 / 255), + grDevices::rgb(1 / 255, 128 / 255, 138 / 255), + grDevices::rgb(5 / 255, 114 / 255, 108 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "16" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(246 / 255, 237 / 255, 245 / 255), + grDevices::rgb(237 / 255, 227 / 255, 240 / 255), + grDevices::rgb(224 / 255, 219 / 255, 235 / 255), + grDevices::rgb(211 / 255, 211 / 255, 231 / 255), + grDevices::rgb(194 / 255, 202 / 255, 226 / 255), + grDevices::rgb(174 / 255, 192 / 255, 221 / 255), + grDevices::rgb(150 / 255, 183 / 255, 215 / 255), + grDevices::rgb(121 / 255, 174 / 255, 210 / 255), + grDevices::rgb(94 / 255, 163 / 255, 203 / 255), + grDevices::rgb(72 / 255, 152 / 255, 196 / 255), + grDevices::rgb(49 / 255, 142 / 255, 184 / 255), + grDevices::rgb(31 / 255, 135 / 255, 159 / 255), + grDevices::rgb(2 / 255, 127 / 255, 134 / 255), + grDevices::rgb(4 / 255, 113 / 255, 106 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "17" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(246 / 255, 237 / 255, 246 / 255), + grDevices::rgb(238 / 255, 228 / 255, 241 / 255), + grDevices::rgb(227 / 255, 220 / 255, 236 / 255), + grDevices::rgb(215 / 255, 213 / 255, 232 / 255), + grDevices::rgb(200 / 255, 205 / 255, 227 / 255), + grDevices::rgb(181 / 255, 196 / 255, 223 / 255), + grDevices::rgb(162 / 255, 187 / 255, 218 / 255), + grDevices::rgb(136 / 255, 179 / 255, 213 / 255), + grDevices::rgb(107 / 255, 170 / 255, 207 / 255), + grDevices::rgb(86 / 255, 159 / 255, 201 / 255), + grDevices::rgb(64 / 255, 148 / 255, 194 / 255), + grDevices::rgb(45 / 255, 140 / 255, 178 / 255), + grDevices::rgb(26 / 255, 133 / 255, 154 / 255), + grDevices::rgb(3 / 255, 125 / 255, 130 / 255), + grDevices::rgb(4 / 255, 112 / 255, 104 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "18" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(247 / 255, 238 / 255, 246 / 255), + grDevices::rgb(239 / 255, 229 / 255, 241 / 255), + grDevices::rgb(229 / 255, 221 / 255, 237 / 255), + grDevices::rgb(217 / 255, 214 / 255, 233 / 255), + grDevices::rgb(205 / 255, 207 / 255, 229 / 255), + grDevices::rgb(188 / 255, 199 / 255, 224 / 255), + grDevices::rgb(171 / 255, 191 / 255, 220 / 255), + grDevices::rgb(148 / 255, 183 / 255, 215 / 255), + grDevices::rgb(123 / 255, 174 / 255, 210 / 255), + grDevices::rgb(98 / 255, 166 / 255, 205 / 255), + grDevices::rgb(79 / 255, 155 / 255, 199 / 255), + grDevices::rgb(57 / 255, 145 / 255, 192 / 255), + grDevices::rgb(41 / 255, 138 / 255, 172 / 255), + grDevices::rgb(22 / 255, 132 / 255, 150 / 255), + grDevices::rgb(4 / 255, 123 / 255, 127 / 255), + grDevices::rgb(4 / 255, 111 / 255, 103 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "19" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(247 / 255, 238 / 255, 246 / 255), + grDevices::rgb(240 / 255, 230 / 255, 242 / 255), + grDevices::rgb(231 / 255, 223 / 255, 238 / 255), + grDevices::rgb(220 / 255, 216 / 255, 234 / 255), + grDevices::rgb(209 / 255, 209 / 255, 230 / 255), + grDevices::rgb(194 / 255, 202 / 255, 226 / 255), + grDevices::rgb(177 / 255, 194 / 255, 222 / 255), + grDevices::rgb(159 / 255, 186 / 255, 217 / 255), + grDevices::rgb(136 / 255, 179 / 255, 213 / 255), + grDevices::rgb(110 / 255, 171 / 255, 208 / 255), + grDevices::rgb(91 / 255, 161 / 255, 202 / 255), + grDevices::rgb(72 / 255, 152 / 255, 196 / 255), + grDevices::rgb(52 / 255, 143 / 255, 188 / 255), + grDevices::rgb(37 / 255, 137 / 255, 167 / 255), + grDevices::rgb(17 / 255, 131 / 255, 146 / 255), + grDevices::rgb(4 / 255, 122 / 255, 124 / 255), + grDevices::rgb(4 / 255, 111 / 255, 102 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "20" = tibble::lst(grDevices::rgb(255 / 255, 247 / 255, 250 / 255), + grDevices::rgb(247 / 255, 239 / 255, 246 / 255), + grDevices::rgb(240 / 255, 231 / 255, 242 / 255), + grDevices::rgb(233 / 255, 224 / 255, 238 / 255), + grDevices::rgb(222 / 255, 217 / 255, 235 / 255), + grDevices::rgb(212 / 255, 211 / 255, 231 / 255), + grDevices::rgb(199 / 255, 204 / 255, 227 / 255), + grDevices::rgb(183 / 255, 197 / 255, 223 / 255), + grDevices::rgb(168 / 255, 190 / 255, 219 / 255), + grDevices::rgb(147 / 255, 182 / 255, 215 / 255), + grDevices::rgb(124 / 255, 175 / 255, 210 / 255), + grDevices::rgb(100 / 255, 167 / 255, 206 / 255), + grDevices::rgb(84 / 255, 158 / 255, 200 / 255), + grDevices::rgb(66 / 255, 149 / 255, 195 / 255), + grDevices::rgb(48 / 255, 141 / 255, 183 / 255), + grDevices::rgb(34 / 255, 136 / 255, 163 / 255), + grDevices::rgb(12 / 255, 130 / 255, 143 / 255), + grDevices::rgb(4 / 255, 121 / 255, 122 / 255), + grDevices::rgb(4 / 255, 110 / 255, 100 / 255), + grDevices::rgb(0 / 255, 100 / 255, 80 / 255)), + "type" = "sequential" + ) +) + + diff --git a/R/sits_dendrogram.R b/R/sits_dendrogram.R index 6e24374de..f34428443 100644 --- a/R/sits_dendrogram.R +++ b/R/sits_dendrogram.R @@ -44,65 +44,3 @@ sits_dendrogram <- function (data.tb, bands = NULL, return (clusters) } -#' @title Create time series patterns for classification -#' @name sits_patt_dendgam -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' @author Michelle Picoli, \email{mipicoli@@gmail.com} -#' -#' -#' @description This function ... -#' -#' @param data.tb a SITS tibble time series with an alignment column -#' @param first_cluster_cleaner first_cluster_cleaner -#' @param cluster_a_labels cluster_a_labels -#' @param second_cluster_cleaner second_cluster_cleaner -#' @param k_cluster_a k_cluster_a -#' @param k_cluster_b k_cluster_b -#' @return result result -#' @export -#' -sits_patt_dendgam <- function(data.tb = NULL, first_cluster_cleaner = 0.027, - cluster_a_labels = c("Forest", "Cerrado", "Pasture"), - second_cluster_cleaner = 0.035, k_cluster_a = 8, k_cluster_b = 6){ - - result_fun <- function(tb){ - - # does the input data exist? - .sits_test_tibble (tb) - - # first cluster cutree and cleaner - data_clus.obj <- sits_dendrogram(tb, window.size = 7, step.pattern = symmetric1) - cluster.tb <- sits_cluster(tb, data_clus.obj, k = 2) - cluster.tb <- sits_cluster_cleaner(cluster.tb, min_clu_perc = first_cluster_cleaner) - - # cluster partitioning - frequency.tb <- sits_cluster_frequency(cluster.tb, relative = TRUE) - if (any(row.names(frequency.tb)[which.max(frequency.tb[1:(NROW(frequency.tb) - 1), 1])] %in% cluster_a_labels)){ - data_a.tb <- dplyr::filter(cluster.tb, cluster == 1) - data_b.tb <- dplyr::filter(cluster.tb, cluster == 2) - } else { - data_a.tb <- dplyr::filter(cluster.tb, cluster == 2) - data_b.tb <- dplyr::filter(cluster.tb, cluster == 1) - } - - # second cluster cutree and cleaner - # cluster_a - data_clus_a.obj <- sits_dendrogram(data_a.tb, window.size = 7, step.pattern = symmetric1) - cluster_a.tb <- sits_cluster(data_a.tb, data_clus_a.obj, k = k_cluster_a) - cluster_a.tb <- sits_cluster_cleaner(cluster_a.tb, min_clu_perc = second_cluster_cleaner) - # cluster_b - data_clus_b.obj <- sits_dendrogram(data_b.tb, window.size = 7, step.pattern = symmetric1) - cluster_b.tb <- sits_cluster(data_b.tb, data_clus_b.obj, k = k_cluster_b) - cluster_b.tb <- sits_cluster_cleaner(cluster_b.tb, min_clu_perc = second_cluster_cleaner) - - # bind cluster_a and cluster_b - combined.tb <- dplyr::bind_rows(cluster_a.tb, cluster_b.tb) - - # generate pattern with gam - result.tb <- sits_gam(combined.tb) - return(result.tb) - } - - result.tb <- .sits_factory_function (data.tb, result_fun) - return(result.tb) -} diff --git a/R/sits_distances.R b/R/sits_distances.R index b5d2e5e51..e25a41da0 100644 --- a/R/sits_distances.R +++ b/R/sits_distances.R @@ -17,7 +17,7 @@ #' @export #' sits_distances <- function(data.tb, patterns.tb, - dist_method = sits_distances_from_data() + dist_method = sits_distances_from_data2(start_from = "2000-09-01", interval = "12 month") ){ # does the input data exist? @@ -166,15 +166,19 @@ sits_TWDTW_distances <- function (data.tb = NULL, patterns.tb = NULL, ensurer::ensure_that(data.tb, all(sits_bands(patterns.tb) == sits_bands(.)), err_desc = "sits_TWDTW_distances: bands in the data do not match bands in the patterns") - result_fun <- function (data.tb, patterns.tb) { + result_fun <- function (data.tb = data.tb, patt.tb = patterns.tb) { + + # verify if input data are valid + .sits_test_tibble(data.tb) + .sits_test_tibble(patt.tb) # determine the bands of the data bands <- sits_bands (data.tb) - data.tb <- .sits_break_ts(data.tb, patterns.tb) + data.tb <- .sits_break_ts(data.tb, patt.tb) # determine the labels of the patterns - labels <- sits_labels(patterns.tb)$label + labels <- sits_labels(patt.tb)$label # Define the logistic function log_fun <- dtwSat::logisticWeight(alpha = alpha, beta = beta) @@ -193,7 +197,7 @@ sits_TWDTW_distances <- function (data.tb = NULL, patterns.tb = NULL, dist_fun <- function(part.tb){ # create a tibble to store the results - distances_part.tb <- sits_tibble_distance(patterns.tb) + distances_part.tb <- sits_tibble_distance(patt.tb) # add a progress bar n <- 0 @@ -217,7 +221,7 @@ sits_TWDTW_distances <- function (data.tb = NULL, patterns.tb = NULL, purrr::map (function (b){ # extract band from data and from patterns data_b.tb <- sits_select_bands (row.tb, bands = b) - patt_b.tb <- sits_select_bands (patterns.tb, bands = b) + patt_b.tb <- sits_select_bands (patt.tb, bands = b) # convert data to TWDTW format twdtw_series <- sits_toTWDTW(data_b.tb) @@ -324,3 +328,62 @@ sits_distances_from_data <- function(data.tb = NULL, patterns.tb = NULL){ result <- .sits_factory_function2 (data.tb, patterns.tb, result_fun) return (result) } +#' @title Use time series values from a sits tibble as distances for training patterns +#' @name sits_distances_from_data2 +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} +#' +#' @description This function allows using a set of labelled time series as +#' input to the machine learning models. Instead of first estimating a set +#' of idealised patterns and then computing distances from these patterns, +#' the attributes used to train the model are the series themselves. +#' This function then extracts the time series from a SITS tibble and +#' "spreads" them in time to produce a tibble with distances. +#' +#' @param data.tb a SITS tibble with original data +#' @param fun a function to be called over all data input. It must takes one argument as input. +#' @param start_from start date to break segments +#' @param interval an interval to define the lengths of breaked segments +#' @return distances.tb a tibble where columns have the reference label and the time series values as distances +#' @export +sits_distances_from_data2 <- function(data.tb = NULL, fun = NULL, start_from, interval){ + + match_timeline <- function(timeline, start_from, interval){ + cut(timeline, + breaks = seq(as.Date(start_from), max(timeline) + lubridate::period(interval), by = interval), + right = FALSE, labels = FALSE) + } + + result_fun <- function(data.tb, ...){ + if (is.null(fun)) + fun <- function(x) x + + bands <- + data.tb %>% + sits_bands() + + distances.tb <- + data.tb %>% + dplyr::mutate(original_row = 1:NROW(.)) %>% + tidyr::unnest() %>% + dplyr::mutate(interval = match_timeline(.$Index, start_from, interval)) %>% + dplyr::filter(!is.na(interval)) %>% + dplyr::group_by(original_row, interval, label) %>% + dplyr::mutate(ts_length = n()) %>% + dplyr::ungroup() %>% + dplyr::filter(ts_length == max(ts_length)) %>% + dplyr::group_by(original_row, interval, label) %>% + dplyr::do(from = min(.data$Index), + to = max(.data$Index), + distances=tibble::as_tibble(fun(t(as.matrix(unlist(.data[bands])))))) %>% + dplyr::ungroup() %>% + dplyr::select(-interval) %>% + tidyr::unnest(from, to, distances, .drop = FALSE) %>% + dplyr::rename(reference = label) + + return(distances.tb) + } + + result <- .sits_factory_function(data.tb, result_fun) + return (result) +} diff --git a/R/sits_factory.R b/R/sits_factory.R index 516799553..b132101c2 100644 --- a/R/sits_factory.R +++ b/R/sits_factory.R @@ -15,7 +15,7 @@ #' #' @param data.tb a SITS tibble time series with the data input to the function #' @param fun the function that performs some calculation on the input data -.sits_factory_function <- function (data.tb, fun) { +.sits_factory_function <- function (data.tb = NULL, fun) { # if no data is given, we prepare a function to be called as a parameter of other functions if (is.null(data.tb)) @@ -48,7 +48,7 @@ .sits_factory_function2 <- function (data.tb, data2.tb, fun) { # if no data is given, we prepare a function to be called as a parameter of other functions - if (is.null(data.tb) && is.null (data2.tb)) + if (is.null(data.tb) | is.null (data2.tb)) result <- fun # ...otherwise compute the result on the input data sets else diff --git a/R/sits_filters.R b/R/sits_filters.R index 67e58f0ce..7e1c4873c 100644 --- a/R/sits_filters.R +++ b/R/sits_filters.R @@ -1,318 +1,318 @@ -# --------------------------------------------------------------- -# -# This file contain a list of time series filters -# As a rule, filters are functions that apply a 1D function to a -# time series and produce new values as a result -# -# Most of the filters provides the generic method sits_apply to apply a -# 1D generic function to a time series and specific methods for -# common tasks such as missing values removal and smoothing -# -# --------------------------------------------------------------- - -#' @title Interpolation function of the time series in a sits tibble -#' @name sits_linear_interp -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' @description Computes the linearly interpolated bands for a given resolution -#' using the R base function approx -#' @param data.tb a valid sits tibble -#' @param n the number of time series elements to be created between start date and end date -#' @return result.tb a sits tibble with same samples and the new bands -#' @export -sits_linear_interp <- function(data.tb, n = 23){ - - # test if data.tb has data - .sits_test_tibble(data.tb) - - # compute linear approximation - result.tb <- sits_apply(data.tb, - fun = function(band) stats::approx(band, n = n, ties=mean)$y, - fun_index = function(band) as.Date(stats::approx(band, n = n, ties=mean)$y, - origin = "1970-01-01")) - return(result.tb) -} - -#' @title Inerpolation function of the time series of a sits_tibble -#' @name sits_interp -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' @description Computes the linearly interpolated bands for a given resolution -#' using the R base function approx -#' @param data.tb a valid sits tibble -#' @param fun the interpolation function to be used -#' @param n the number of time series elements to be created between start date and end date. -#' When a class function is passed to `n`, is is evaluated with each band time series as -#' an argument, e.g. n(band) (default: `length` function) -#' @param ... additional parameters to be used by the fun function -#' @return result.tb a sits tibble with same samples and the new bands -#' @export -sits_interp <- function(data.tb, fun = stats::approx, n = base::length, ...){ - - # test if data.tb has data - .sits_test_tibble(data.tb) - - # compute linear approximation - result.tb <- sits_apply(data.tb, - fun = function(band) { - if (class(n) == "function") - return(fun(band, n = n(band), ...)$y) - return(fun(band, n = n, ...)$y) - }, - fun_index = function(band) as.Date(fun(band, n = n, ...)$y, - origin = "1970-01-01")) - return(result.tb) -} -#' @title Remove missing values -#' @name sits_missing_values -#' @author Gilberto Camara, \email{gilberto.camara@inpe.br} -#' @description This function removes the missing values from an image time series by substituting them by NA -#' @param data.tb a valid sits tibble -#' @param miss_value a number indicating missing values in a time series. -#' @return result.tb a sits tibble with same samples and the new bands -#' @export -#' -sits_missing_values <- function(data.tb, miss_value) { - - # test if data.tb has data - .sits_test_tibble(data.tb) - - # remove missing values by NAs - result.tb <- sits_apply(data.tb, fun = function(band) return(ifelse(band == miss_value, NA, band))) - return (result.tb) -} - -#' @title Envelope filter -#' @name sits_envelope -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' @description This function computes the envelope of a time series using the -#' streaming algorithm proposed by Lemire (2009). This functions calls `dtwclust::compute_envelop` function. -#' @param data.tb a valid sits tibble -#' @param operations character sequence indicating which operations must be taken. "U" for upper filter, "D" for down filter. -#' @param bands_suffix the suffix to be appended to the resulting data (default "env") -#' @return result.tb a sits tibble with same samples and the new bands -#' @export -sits_envelope <- function(data.tb, operations = "UULL", bands_suffix = "env"){ - - # definitions of operations and the key returned by `dtwclust::compute_envelope` - def_op <- list("U" = "upper", "L" = "lower", "u" = "upper", "l" = "lower") - - # split envelope operations - operations <- strsplit(operations, "")[[1]] - - # verify if operations are either "U" or "L" - ensurer::ensure_that(operations, all(. %in% names(def_op)), - err_desc = "sits_envelope: invalid operation sequence") - - # compute envelopes - result.tb <- sits_apply(data.tb, - fun = function(band) { - for (op in operations){ - upper_lower.lst <- dtwclust::compute_envelope(band, window.size = 1, error.check = FALSE) - band <- upper_lower.lst[[def_op[[op]]]] - } - return(band) - }, - fun_index = function(band) band, - bands_suffix = bands_suffix) - return(result.tb) -} - - -#' @title Cloud filter -#' @name sits_cloud_filter -#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} -#' @description This function tries to remove clouds in the satellite image time series -#' @param data.tb a valid sits tibble containing the "ndvi" band -#' @param cutoff a numeric value for the maximum acceptable value of a NDVI difference -#' @param p the order (number of time lags) of the autoregressive model, -#' @param d the degree of differencing (the number of times the data have had past values subtracted), -#' @param q the order of the moving-average model. -#' @param bands_suffix the suffix to rename the filtered bands -#' @param apply_whit apply the whittaker smoother after filtering -#' @param lambda_whit lambda parameter of the whittaker smoother -#' @return result.tb a sits tibble with same samples and the new bands -#' @export -sits_cloud_filter <- function(data.tb, cutoff = -0.25, p = 0, d = 0, q = 3, - bands_suffix = ".cf", apply_whit = TRUE, lambda_whit = 1.0){ - - # find the bands of the data - bands <- sits_bands (data.tb) - ensurer::ensure_that(bands, ("ndvi" %in% (.)), err_desc = "data does not contain the ndvi band") - - # predictive model for missing values - pred_arima <- function (x, p, d, q ) { - idx <- which (is.na(x)) - for (i in idx) { - prev3 <- x[(i - q):(i - 1)] - ensurer::ensure_that(prev3, !anyNA(.), - err_desc = "Cannot remove clouds, please reduce filter order") - arima.ml <- stats::arima(prev3, c(p, d , q)) - x[i] <- as.vector(stats::predict (arima.ml, n.ahead = 1)$pred) - } - return (x) - } - # prepare result SITS tibble - result.tb <- data.tb - - # select the chosen bands for the time series - result.tb$time_series <- data.tb$time_series %>% - purrr::map (function (ts) { - ndvi <- dplyr::pull(ts[, "ndvi"]) - idx <- which (c(0, diff(ndvi)) < cutoff) - idx <- idx[!idx %in% 1:q] - ts[,bands][idx,] <- NA - # interpolate missing values - bands %>% - purrr::map (function (b) - ts[,b] <<- pred_arima (dplyr::pull(ts[,b]), p = p, d = d, q = q)) - return (ts) - }) - # rename the output bands - new_bands <- paste0(bands, ".", bands_suffix) - result.tb <- sits_rename(result.tb, new_bands) - - if (apply_whit) - result.tb <- sits_whittaker(result.tb, lambda = lambda_whit) - - return(result.tb) -} - -#' Smooth the time series using Whittaker smoother (based on PTW package) -#' @name sits_whittaker -#' @description The algorithm searches for an optimal polynomial describing the warping. -#' The degree of smoothing depends on smoothing factor lambda (usually from 0.5 to 10.0) -#' Use lambda = 0.5 for very slight smoothing and lambda = 5.0 for strong smoothing -#' -#' @param data.tb The SITS tibble containing the original time series -#' @param lambda double - the smoothing factor to be applied (default 1.0) -#' @param differences an integer indicating the order of differences of contiguous elements (default 3) -#' @param bands_suffix the suffix to be appended to the smoothed filters (default "whit") -#' @return output.tb a tibble with smoothed sits time series -#' @export -sits_whittaker <- function (data.tb, lambda = 1.0, differences = 3, bands_suffix = "whit") { - - result.tb <- sits_apply(data.tb, - fun = function(band){ - # According to: Whittaker (1923). On a new method of graduation. - # Proceedings of the Edinburgh Mathematical Society, 41, 63-73. - id.mtx <- diag(length(band)) - diff.mtx <- diff(id.mtx, lag = 1, differences = differences) - - # system of equations to be solved for band values - smooth.mtx <- id.mtx + (lambda * t(diff.mtx) %*% diff.mtx) - - # compute solution and return - return(solve(smooth.mtx, band)) - }, - fun_index = function(band) band, - bands_suffix = bands_suffix) - return(result.tb) -} - -#' Smooth the time series using Savitsky-Golay filter (based on signal package) -#' @name sits_sgolay -#' @description The algorithm searches for an optimal polynomial describing the warping. -#' The degree of smoothing depends on smoothing factor lambda (usually from 0.5 to 10.0) -#' Use lambda = 0.5 for very slight smoothing and lambda = 5.0 for strong smoothing -#' -#' @param data.tb The SITS tibble containing the original time series -#' @param order filter order -#' @param scale time scaling -#' @param bands_suffix the suffix to be appended to the smoothed filters -#' @return output.tb a tibble with smoothed sits time series -#' @export -sits_sgolay <- function (data.tb, order = 3, scale = 1, bands_suffix = "sg") { - result.tb <- sits_apply(data.tb, - fun = function(band) signal::sgolayfilt(band, p = order, ts = scale), - fun_index = function(band) band, - bands_suffix = bands_suffix) - return(result.tb) -} - - -#' Kalman filter -#' @name sits_kf -#' @description A simple Kalman filter implementation -#' -#' @param data.tb The SITS tibble containing the original time series -#' @param bands_suffix The suffix to be appended to the smoothed filters -#' @return output.tb A tibble with smoothed sits time series -#' @export -sits_kf <- function(data.tb, bands_suffix = "kf"){ - result.tb <- sits_apply(data.tb, - fun = function(band) .kalmanfilter(band, NULL, NULL, NULL), - fun_index = function(band) band, - bands_suffix = bands_suffix) - return(result.tb) -} - - -# Compute the Kalman filter -# -# @param measurement A vector of measurements -# @param error_in_measurement A vector of errors in the measuments -# @param initial_estimate A first estimation of the measurement -# @param initial_error_in_estimate A first error in the estimation -# @return A matrix of 3 columns estimate, error_in_estimate, and kalman_gain -.kalmanfilter <- function(measurement, - error_in_measurement = NULL, - initial_estimate = NULL, - initial_error_in_estimate = NULL){ - kg <- vector(mode = "logical", length = length(measurement) + 1) - est <- vector(mode = "logical", length = length(measurement) + 1) - e_est <- vector(mode = "logical", length = length(measurement) + 1) - # - # default values - if(is.null(initial_estimate) || is.na(initial_estimate)){ - initial_estimate <- base::mean(measurement, na.rm = TRUE) - } - if(is.null(initial_error_in_estimate) || is.na(initial_error_in_estimate)){ - initial_error_in_estimate <- base::abs(stats::sd(measurement, na.rm = TRUE)) - } - if(is.null(error_in_measurement)){ - error_in_measurement <- rep(stats::sd(measurement, na.rm = TRUE), length.out = base::length(measurement)) - } - # - # Compute the Kalman gain - # @param e_est error in estimation - # @param e_mea error in measurement - # @return the Kalman gain - .KG <- function(e_est, e_mea){ - return(e_est/(e_est + e_mea)) - } - # Compute the KF current estimate - # @param kg Kalman gain - # @param est_t1 previous estimate - # @param mea measurement - # @return current estimate - .EST_t <- function(kg, est_t1, mea){ - est_t1 + kg * (mea - est_t1) - } - # Compute the KF error in the estimation - # @param kg Kalman gain - # @param e_est_t1 previous error in estimation - .E_EST_t <- function(kg, e_est_t1){ - (1 - kg) * e_est_t1 - } - # add initial results - est[1] <- initial_estimate[1] - e_est[1] <- initial_error_in_estimate[1] - kg[1] <- NA - # compute - for(i in 2:(length(measurement) + 1)){ - kg[i] <- .KG(e_est[i - 1], error_in_measurement[i - 1]) - m <- measurement[i - 1] - if(is.na(m)){ - m <- est[i - 1] # if the measurement is missing, use the estimation instead - } - est[i] <- .EST_t(kg[i], est[i - 1], m) - e_est[i] <- .E_EST_t(kg[i], e_est[i - 1]) - } - # format the results: remove the row before the first measurement (t-1) - return( - list( - estimation = est[2:length(est)], - error_in_estimate = e_est[2:length(e_est)], - kalman_gain = kg[2:length(kg)] - ) - ) -} +# --------------------------------------------------------------- +# +# This file contain a list of time series filters +# As a rule, filters are functions that apply a 1D function to a +# time series and produce new values as a result +# +# Most of the filters provides the generic method sits_apply to apply a +# 1D generic function to a time series and specific methods for +# common tasks such as missing values removal and smoothing +# +# --------------------------------------------------------------- + +#' @title Interpolation function of the time series in a sits tibble +#' @name sits_linear_interp +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' @description Computes the linearly interpolated bands for a given resolution +#' using the R base function approx +#' @param data.tb a valid sits tibble +#' @param n the number of time series elements to be created between start date and end date +#' @return result.tb a sits tibble with same samples and the new bands +#' @export +sits_linear_interp <- function(data.tb, n = 23){ + + # test if data.tb has data + .sits_test_tibble(data.tb) + + # compute linear approximation + result.tb <- sits_apply(data.tb, + fun = function(band) stats::approx(band, n = n, ties=mean)$y, + fun_index = function(band) as.Date(stats::approx(band, n = n, ties=mean)$y, + origin = "1970-01-01")) + return(result.tb) +} + +#' @title Inerpolation function of the time series of a sits_tibble +#' @name sits_interp +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' @description Computes the linearly interpolated bands for a given resolution +#' using the R base function approx +#' @param data.tb a valid sits tibble +#' @param fun the interpolation function to be used +#' @param n the number of time series elements to be created between start date and end date. +#' When a class function is passed to `n`, is is evaluated with each band time series as +#' an argument, e.g. n(band) (default: `length` function) +#' @param ... additional parameters to be used by the fun function +#' @return result.tb a sits tibble with same samples and the new bands +#' @export +sits_interp <- function(data.tb, fun = stats::approx, n = base::length, ...){ + + # test if data.tb has data + .sits_test_tibble(data.tb) + + # compute linear approximation + result.tb <- sits_apply(data.tb, + fun = function(band) { + if (class(n) == "function") + return(fun(band, n = n(band), ...)$y) + return(fun(band, n = n, ...)$y) + }, + fun_index = function(band) as.Date(fun(band, n = n, ...)$y, + origin = "1970-01-01")) + return(result.tb) +} +#' @title Remove missing values +#' @name sits_missing_values +#' @author Gilberto Camara, \email{gilberto.camara@inpe.br} +#' @description This function removes the missing values from an image time series by substituting them by NA +#' @param data.tb a valid sits tibble +#' @param miss_value a number indicating missing values in a time series. +#' @return result.tb a sits tibble with same samples and the new bands +#' @export +#' +sits_missing_values <- function(data.tb, miss_value) { + + # test if data.tb has data + .sits_test_tibble(data.tb) + + # remove missing values by NAs + result.tb <- sits_apply(data.tb, fun = function(band) return(ifelse(band == miss_value, NA, band))) + return (result.tb) +} + +#' @title Envelope filter +#' @name sits_envelope +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' @description This function computes the envelope of a time series using the +#' streaming algorithm proposed by Lemire (2009). This functions calls `dtwclust::compute_envelop` function. +#' @param data.tb a valid sits tibble +#' @param operations character sequence indicating which operations must be taken. "U" for upper filter, "D" for down filter. +#' @param bands_suffix the suffix to be appended to the resulting data (default "env") +#' @return result.tb a sits tibble with same samples and the new bands +#' @export +sits_envelope <- function(data.tb, operations = "UULL", bands_suffix = "env"){ + + # definitions of operations and the key returned by `dtwclust::compute_envelope` + def_op <- list("U" = "upper", "L" = "lower", "u" = "upper", "l" = "lower") + + # split envelope operations + operations <- strsplit(operations, "")[[1]] + + # verify if operations are either "U" or "L" + ensurer::ensure_that(operations, all(. %in% names(def_op)), + err_desc = "sits_envelope: invalid operation sequence") + + # compute envelopes + result.tb <- sits_apply(data.tb, + fun = function(band) { + for (op in operations){ + upper_lower.lst <- dtwclust::compute_envelope(band, window.size = 1, error.check = FALSE) + band <- upper_lower.lst[[def_op[[op]]]] + } + return(band) + }, + fun_index = function(band) band, + bands_suffix = bands_suffix) + return(result.tb) +} + + +#' @title Cloud filter +#' @name sits_cloud_filter +#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} +#' @description This function tries to remove clouds in the satellite image time series +#' @param data.tb a valid sits tibble containing the "ndvi" band +#' @param cutoff a numeric value for the maximum acceptable value of a NDVI difference +#' @param p the order (number of time lags) of the autoregressive model, +#' @param d the degree of differencing (the number of times the data have had past values subtracted), +#' @param q the order of the moving-average model. +#' @param bands_suffix the suffix to rename the filtered bands +#' @param apply_whit apply the whittaker smoother after filtering +#' @param lambda_whit lambda parameter of the whittaker smoother +#' @return result.tb a sits tibble with same samples and the new bands +#' @export +sits_cloud_filter <- function(data.tb, cutoff = -0.25, p = 0, d = 0, q = 3, + bands_suffix = ".cf", apply_whit = TRUE, lambda_whit = 1.0){ + + # find the bands of the data + bands <- sits_bands (data.tb) + ensurer::ensure_that(bands, ("ndvi" %in% (.)), err_desc = "data does not contain the ndvi band") + + # predictive model for missing values + pred_arima <- function (x, p, d, q ) { + idx <- which (is.na(x)) + for (i in idx) { + prev3 <- x[(i - q):(i - 1)] + ensurer::ensure_that(prev3, !anyNA(.), + err_desc = "Cannot remove clouds, please reduce filter order") + arima.ml <- stats::arima(prev3, c(p, d , q)) + x[i] <- as.vector(stats::predict (arima.ml, n.ahead = 1)$pred) + } + return (x) + } + # prepare result SITS tibble + result.tb <- data.tb + + # select the chosen bands for the time series + result.tb$time_series <- data.tb$time_series %>% + purrr::map (function (ts) { + ndvi <- dplyr::pull(ts[, "ndvi"]) + idx <- which (c(0, diff(ndvi)) < cutoff) + idx <- idx[!idx %in% 1:q] + ts[,bands][idx,] <- NA + # interpolate missing values + bands %>% + purrr::map (function (b) + ts[,b] <<- pred_arima (dplyr::pull(ts[,b]), p = p, d = d, q = q)) + return (ts) + }) + # rename the output bands + new_bands <- paste0(bands, ".", bands_suffix) + result.tb <- sits_rename(result.tb, new_bands) + + if (apply_whit) + result.tb <- sits_whittaker(result.tb, lambda = lambda_whit) + + return(result.tb) +} + +#' Smooth the time series using Whittaker smoother (based on PTW package) +#' @name sits_whittaker +#' @description The algorithm searches for an optimal polynomial describing the warping. +#' The degree of smoothing depends on smoothing factor lambda (usually from 0.5 to 10.0) +#' Use lambda = 0.5 for very slight smoothing and lambda = 5.0 for strong smoothing +#' +#' @param data.tb The SITS tibble containing the original time series +#' @param lambda double - the smoothing factor to be applied (default 1.0) +#' @param differences an integer indicating the order of differences of contiguous elements (default 3) +#' @param bands_suffix the suffix to be appended to the smoothed filters (default "whit") +#' @return output.tb a tibble with smoothed sits time series +#' @export +sits_whittaker <- function (data.tb, lambda = 1.0, differences = 3, bands_suffix = "whit") { + + result.tb <- sits_apply(data.tb, + fun = function(band){ + # According to: Whittaker (1923). On a new method of graduation. + # Proceedings of the Edinburgh Mathematical Society, 41, 63-73. + id.mtx <- diag(length(band)) + diff.mtx <- diff(id.mtx, lag = 1, differences = differences) + + # system of equations to be solved for band values + smooth.mtx <- id.mtx + (lambda * t(diff.mtx) %*% diff.mtx) + + # compute solution and return + return(solve(smooth.mtx, band)) + }, + fun_index = function(band) band, + bands_suffix = bands_suffix) + return(result.tb) +} + +#' Smooth the time series using Savitsky-Golay filter (based on signal package) +#' @name sits_sgolay +#' @description The algorithm searches for an optimal polynomial describing the warping. +#' The degree of smoothing depends on smoothing factor lambda (usually from 0.5 to 10.0) +#' Use lambda = 0.5 for very slight smoothing and lambda = 5.0 for strong smoothing +#' +#' @param data.tb The SITS tibble containing the original time series +#' @param order filter order +#' @param scale time scaling +#' @param bands_suffix the suffix to be appended to the smoothed filters +#' @return output.tb a tibble with smoothed sits time series +#' @export +sits_sgolay <- function (data.tb, order = 3, scale = 1, bands_suffix = "sg") { + result.tb <- sits_apply(data.tb, + fun = function(band) signal::sgolayfilt(band, p = order, ts = scale), + fun_index = function(band) band, + bands_suffix = bands_suffix) + return(result.tb) +} + + +#' Kalman filter +#' @name sits_kf +#' @description A simple Kalman filter implementation +#' +#' @param data.tb The SITS tibble containing the original time series +#' @param bands_suffix The suffix to be appended to the smoothed filters +#' @return output.tb A tibble with smoothed sits time series +#' @export +sits_kf <- function(data.tb, bands_suffix = "kf"){ + result.tb <- sits_apply(data.tb, + fun = function(band) .kalmanfilter(band, NULL, NULL, NULL), + fun_index = function(band) band, + bands_suffix = bands_suffix) + return(result.tb) +} + + +# Compute the Kalman filter +# +# @param measurement A vector of measurements +# @param error_in_measurement A vector of errors in the measuments +# @param initial_estimate A first estimation of the measurement +# @param initial_error_in_estimate A first error in the estimation +# @return A matrix of 3 columns estimate, error_in_estimate, and kalman_gain +.kalmanfilter <- function(measurement, + error_in_measurement = NULL, + initial_estimate = NULL, + initial_error_in_estimate = NULL){ + kg <- vector(mode = "logical", length = length(measurement) + 1) + est <- vector(mode = "logical", length = length(measurement) + 1) + e_est <- vector(mode = "logical", length = length(measurement) + 1) + # + # default values + if(is.null(initial_estimate) || is.na(initial_estimate)){ + initial_estimate <- base::mean(measurement, na.rm = TRUE) + } + if(is.null(initial_error_in_estimate) || is.na(initial_error_in_estimate)){ + initial_error_in_estimate <- base::abs(stats::sd(measurement, na.rm = TRUE)) + } + if(is.null(error_in_measurement)){ + error_in_measurement <- rep(stats::sd(measurement, na.rm = TRUE), length.out = base::length(measurement)) + } + # + # Compute the Kalman gain + # @param e_est error in estimation + # @param e_mea error in measurement + # @return the Kalman gain + .KG <- function(e_est, e_mea){ + return(e_est/(e_est + e_mea)) + } + # Compute the KF current estimate + # @param kg Kalman gain + # @param est_t1 previous estimate + # @param mea measurement + # @return current estimate + .EST_t <- function(kg, est_t1, mea){ + est_t1 + kg * (mea - est_t1) + } + # Compute the KF error in the estimation + # @param kg Kalman gain + # @param e_est_t1 previous error in estimation + .E_EST_t <- function(kg, e_est_t1){ + (1 - kg) * e_est_t1 + } + # add initial results + est[1] <- initial_estimate[1] + e_est[1] <- initial_error_in_estimate[1] + kg[1] <- NA + # compute + for(i in 2:(length(measurement) + 1)){ + kg[i] <- .KG(e_est[i - 1], error_in_measurement[i - 1]) + m <- measurement[i - 1] + if(is.na(m)){ + m <- est[i - 1] # if the measurement is missing, use the estimation instead + } + est[i] <- .EST_t(kg[i], est[i - 1], m) + e_est[i] <- .E_EST_t(kg[i], e_est[i - 1]) + } + # format the results: remove the row before the first measurement (t-1) + return( + list( + estimation = est[2:length(est)], + error_in_estimate = e_est[2:length(e_est)], + kalman_gain = kg[2:length(kg)] + ) + ) +} diff --git a/R/sits_init.R b/R/sits_init.R index 6dd17c7df..798f9d8dd 100644 --- a/R/sits_init.R +++ b/R/sits_init.R @@ -16,7 +16,9 @@ utils::globalVariables(c(".", "%>%", "Index", "from", "value", "variable", "cond "original_label", "n_members", "n_members.n", "count", "segr", "frac", "total", "n", "distance", "predicted", "new_values", - "Alig.N", "matches", "reference", "cluster", ".data")) + "Alig.N", "matches", "reference", "cluster", ".data", + "from", "to", "original_row", "ts_length", "interval", + "distances")) #' @import dtwSat #' @import dtwclust #' @importFrom dtw symmetric1 symmetric2 diff --git a/R/sits_kohonen.R b/R/sits_kohonen.R index 421028464..cba1f65a0 100644 --- a/R/sits_kohonen.R +++ b/R/sits_kohonen.R @@ -1,93 +1,93 @@ -#' @title Cluster a set of satellite image time series using SOM -#' @name sits_kohonen -#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' @author Lorena Alves, \email{lorena.santos@@inpe.br} -#' -#' @description This function uses package "kohonen" (self-organized maps) to find clusters in -#' satellite image time series. -#' @references `kohonen` package (https://CRAN.R-project.org/package=kohonen) -#' -#' @param data.tb a SITS tibble the list of time series to be clustered -#' @param bands the bands to be clusterized. -#' @param grid_xdim x dimension of the SOM grid (used only in `kohonen` or `kohonen-dendogram` methods). Defaul is 5. -#' @param grid_ydim y dimension of the SOM grid -#' @param rlen the number of times the complete data set will be presented to the SOM grid -#' @param alpha learning rate, a vector of two numbers indicating the amount of change. -#' Default is to decline linearly from 0.05 to 0.01 over rlen updates. -#' @param ... Additional parameters to be passed to kohonen::supersom function -#' @return clusters.tb a SITS tibble with the clusters time series or cluster' members time series according to return_member parameter. -#' If return_members are FALSE, the returning SITS tibble will contain a new collumn called `n_members` informing how many members has each cluster. -#' @export -sits_kohonen <- function (data.tb, bands = NULL, grid_xdim = 5, grid_ydim = 5, rlen = 100, - alpha = c(0.05, 0.01), ...) { - - # does the input data exist? - .sits_test_tibble (data.tb) - - # if no bands informed, get all bands available in SITS tibble - if (purrr::is_null(bands)) - bands <- sits_bands(data.tb) - - # creates the resulting tibble - cluster.tb <- sits_tibble() - - # how many different labels are there? - labels <- dplyr::distinct (data.tb, label)$label - - # - message("Clustering using SOM...") - - # add a progress bar - progress_bar <- utils::txtProgressBar(min = 0, max = length(labels), style = 3) - - # traverse labels - purrr::map2(labels, seq_along(labels), function (lb, i){ - # filter only those rows with the same labels - # cut time series to fit in one year - label.tb <- dplyr::filter (data.tb, label == lb) - - # recalculate grid dimension if the number of neurons is greater than the number of data input cases - #### TO-DO: Document this recalculation! - if ((grid_xdim * grid_ydim) >= nrow(label.tb)){ - grid_xdim <- trunc(max(sqrt(nrow(label.tb) / (grid_xdim * grid_ydim) / 2) * grid_xdim, 2)) - grid_ydim <- trunc(max(sqrt(nrow(label.tb) / (grid_xdim * grid_ydim) / 2) * grid_ydim, 2)) - message(paste("Kohonen grid dimension reduced to", "grid_xdim =", grid_xdim, "and grid_ydim =", grid_ydim)) - } - - # get the values of the various time series for this band group - values.tb <- sits_values (label.tb, bands, format = "bands_cases_dates") - - grid <- kohonen::somgrid(xdim = grid_xdim, ydim = grid_ydim, topo = "rectangular") - kohonen_obj <- kohonen::supersom (values.tb, grid=grid, - rlen = rlen, alpha = alpha, - keep.data = TRUE, ...) - - # if no original_label exists, creates one - if (!("original_label" %in% colnames(label.tb))) - data.tb$original_label <- data.tb$label - - # get label prefix to form sub-class label result - label_prefix <- data.tb[1,]$label[[1]] - - # create a tibble to store the results - result.tb <- data.tb - - # assign new labels - result.tb$label <- paste0(label_prefix, ".", kohonen_obj$unit.classif) - - # organizes the resulting SITS tibble - result.tb <- dplyr::select(result.tb, longitude, latitude, start_date, end_date, label, coverage, time_series, original_label) - - # append the result - cluster.tb <<- dplyr::bind_rows(cluster.tb, result.tb) - - # update progress bar - utils::setTxtProgressBar(progress_bar, i) - - }) - close(progress_bar) - - return (cluster.tb) -} - +#' @title Cluster a set of satellite image time series using SOM +#' @name sits_kohonen +#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' @author Lorena Alves, \email{lorena.santos@@inpe.br} +#' +#' @description This function uses package "kohonen" (self-organized maps) to find clusters in +#' satellite image time series. +#' @references `kohonen` package (https://CRAN.R-project.org/package=kohonen) +#' +#' @param data.tb a SITS tibble the list of time series to be clustered +#' @param bands the bands to be clusterized. +#' @param grid_xdim x dimension of the SOM grid (used only in `kohonen` or `kohonen-dendogram` methods). Defaul is 5. +#' @param grid_ydim y dimension of the SOM grid +#' @param rlen the number of times the complete data set will be presented to the SOM grid +#' @param alpha learning rate, a vector of two numbers indicating the amount of change. +#' Default is to decline linearly from 0.05 to 0.01 over rlen updates. +#' @param ... Additional parameters to be passed to kohonen::supersom function +#' @return clusters.tb a SITS tibble with the clusters time series or cluster' members time series according to return_member parameter. +#' If return_members are FALSE, the returning SITS tibble will contain a new collumn called `n_members` informing how many members has each cluster. +#' @export +sits_kohonen <- function (data.tb, bands = NULL, grid_xdim = 5, grid_ydim = 5, rlen = 100, + alpha = c(0.05, 0.01), ...) { + + # does the input data exist? + .sits_test_tibble (data.tb) + + # if no bands informed, get all bands available in SITS tibble + if (purrr::is_null(bands)) + bands <- sits_bands(data.tb) + + # creates the resulting tibble + cluster.tb <- sits_tibble() + + # how many different labels are there? + labels <- dplyr::distinct (data.tb, label)$label + + # + message("Clustering using SOM...") + + # add a progress bar + progress_bar <- utils::txtProgressBar(min = 0, max = length(labels), style = 3) + + # traverse labels + purrr::map2(labels, seq_along(labels), function (lb, i){ + # filter only those rows with the same labels + # cut time series to fit in one year + label.tb <- dplyr::filter (data.tb, label == lb) + + # recalculate grid dimension if the number of neurons is greater than the number of data input cases + #### TO-DO: Document this recalculation! + if ((grid_xdim * grid_ydim) >= nrow(label.tb)){ + grid_xdim <- trunc(max(sqrt(nrow(label.tb) / (grid_xdim * grid_ydim) / 2) * grid_xdim, 2)) + grid_ydim <- trunc(max(sqrt(nrow(label.tb) / (grid_xdim * grid_ydim) / 2) * grid_ydim, 2)) + message(paste("Kohonen grid dimension reduced to", "grid_xdim =", grid_xdim, "and grid_ydim =", grid_ydim)) + } + + # get the values of the various time series for this band group + values.tb <- sits_values (label.tb, bands, format = "bands_cases_dates") + + grid <- kohonen::somgrid(xdim = grid_xdim, ydim = grid_ydim, topo = "rectangular") + kohonen_obj <- kohonen::supersom (values.tb, grid=grid, + rlen = rlen, alpha = alpha, + keep.data = TRUE, ...) + + # if no original_label exists, creates one + if (!("original_label" %in% colnames(label.tb))) + data.tb$original_label <- data.tb$label + + # get label prefix to form sub-class label result + label_prefix <- data.tb[1,]$label[[1]] + + # create a tibble to store the results + result.tb <- data.tb + + # assign new labels + result.tb$label <- paste0(label_prefix, ".", kohonen_obj$unit.classif) + + # organizes the resulting SITS tibble + result.tb <- dplyr::select(result.tb, longitude, latitude, start_date, end_date, label, coverage, time_series, original_label) + + # append the result + cluster.tb <<- dplyr::bind_rows(cluster.tb, result.tb) + + # update progress bar + utils::setTxtProgressBar(progress_bar, i) + + }) + close(progress_bar) + + return (cluster.tb) +} + diff --git a/R/sits_labels.R b/R/sits_labels.R index 8ee27e9a1..f89990865 100644 --- a/R/sits_labels.R +++ b/R/sits_labels.R @@ -1,98 +1,98 @@ -#' @title returns the labels' count of a sits table -#' @name sits_labels -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' -#' @description returns the labels and its respective counting and frequency. -#' -#' @param data.tb a valid sits table -#' @return result.tb a tibble with the names of the labels and its absolute and relative frequency -#' @export -#' -sits_labels <- function (data.tb) { - - # get frequency table - data.vec <- table(data.tb$label) - - # compose output tibble containing labels, count and relative frequency columns - result.tb <- tibble::as_tibble(list(label = names(data.vec), - count = as.integer(data.vec), - freq = as.numeric(prop.table(data.vec)))) - return (result.tb) -} -#' @title relabels a sits tibble -#' @name sits_relabel -#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' -#' @description Given a SITS tibble with a set of labels, and a conversion list -#' between the original labels and new labels, returns a new SITS tibble whose labels are changed. -#' -#' @param data.tb a SITS tibble -#' @param conv.lst a named list used to convert labels to a new value. Actual labels must be the names of the conv.lst elements. -#' An empty list produces no difference. -#' @return result.tb an assessment of validation -#' @export -sits_relabel <- function (data.tb, conv.lst = list()){ - - #does the input data exist? - .sits_test_tibble (data.tb) - - ensurer::ensure_that(conv.lst, !purrr::is_null(.), - err_desc = "sits_relabel: conversion list not provided") - - # prepare result tibble - result.tb <- data.tb - - if (length(conv.lst) > 0){ - - # get those labels not in conv.lst names - conv.lst <- sits_labels_list(data.tb, conv.lst) - - # convert labels and return - result.tb$label <- as.character(conv.lst[result.tb$label]) - } - return (result.tb) -} -#' @title SITS labels processing function -#' @name sits_labels_list -#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} -#' -#' @description completes list.lst list as a named list (names are unique labels from data.tb) according -#' to a given function that receives each label as an argument. -#' -#' @param data.tb a SITS tibble -#' @param list.lst any named list whose names are unique labels from data input. Non-informed labels will be completed -#' according to fun_label function. -#' @param fun_label a function that will be executed for each label non listed in list.lst parameter. The result of -#' the function is used as list.lst value for the respective label. -#' @return result.lst a list whose values non informed in list.lst is filled by fun_label for each unique label in data.tb. -#' @export -sits_labels_list <- function(data.tb, list.lst = list(), fun_label = function(lb) lb) { - - # verify if data.tb has data - .sits_test_tibble (data.tb) - - # get unique labels - u_labels <- base::unique(data.tb$label) - - # prepare result - result.lst <- list.lst - - # get non listed labels in list.lst - non_listed_values <- !(u_labels %in% names(list.lst)) - - # generate entries to those labels not listed in list.lst - if (any(non_listed_values)){ - - # call fun_label for each label as an argument - identity.lst <- u_labels[non_listed_values] %>% - purrr::map(fun_label) - - # name resulting list - names(identity.lst) <- u_labels[non_listed_values] - - # concat with list.lst - result.lst <- c(result.lst, identity.lst) - } - return(result.lst) -} +#' @title returns the labels' count of a sits table +#' @name sits_labels +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' +#' @description returns the labels and its respective counting and frequency. +#' +#' @param data.tb a valid sits table +#' @return result.tb a tibble with the names of the labels and its absolute and relative frequency +#' @export +#' +sits_labels <- function (data.tb) { + + # get frequency table + data.vec <- table(data.tb$label) + + # compose output tibble containing labels, count and relative frequency columns + result.tb <- tibble::as_tibble(list(label = names(data.vec), + count = as.integer(data.vec), + freq = as.numeric(prop.table(data.vec)))) + return (result.tb) +} +#' @title relabels a sits tibble +#' @name sits_relabel +#' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' +#' @description Given a SITS tibble with a set of labels, and a conversion list +#' between the original labels and new labels, returns a new SITS tibble whose labels are changed. +#' +#' @param data.tb a SITS tibble +#' @param conv.lst a named list used to convert labels to a new value. Actual labels must be the names of the conv.lst elements. +#' An empty list produces no difference. +#' @return result.tb an assessment of validation +#' @export +sits_relabel <- function (data.tb, conv.lst = list()){ + + #does the input data exist? + .sits_test_tibble (data.tb) + + ensurer::ensure_that(conv.lst, !purrr::is_null(.), + err_desc = "sits_relabel: conversion list not provided") + + # prepare result tibble + result.tb <- data.tb + + if (length(conv.lst) > 0){ + + # get those labels not in conv.lst names + conv.lst <- sits_labels_list(data.tb, conv.lst) + + # convert labels and return + result.tb$label <- as.character(conv.lst[result.tb$label]) + } + return (result.tb) +} +#' @title SITS labels processing function +#' @name sits_labels_list +#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} +#' +#' @description completes list.lst list as a named list (names are unique labels from data.tb) according +#' to a given function that receives each label as an argument. +#' +#' @param data.tb a SITS tibble +#' @param list.lst any named list whose names are unique labels from data input. Non-informed labels will be completed +#' according to fun_label function. +#' @param fun_label a function that will be executed for each label non listed in list.lst parameter. The result of +#' the function is used as list.lst value for the respective label. +#' @return result.lst a list whose values non informed in list.lst is filled by fun_label for each unique label in data.tb. +#' @export +sits_labels_list <- function(data.tb, list.lst = list(), fun_label = function(lb) lb) { + + # verify if data.tb has data + .sits_test_tibble (data.tb) + + # get unique labels + u_labels <- base::unique(data.tb$label) + + # prepare result + result.lst <- list.lst + + # get non listed labels in list.lst + non_listed_values <- !(u_labels %in% names(list.lst)) + + # generate entries to those labels not listed in list.lst + if (any(non_listed_values)){ + + # call fun_label for each label as an argument + identity.lst <- u_labels[non_listed_values] %>% + purrr::map(fun_label) + + # name resulting list + names(identity.lst) <- u_labels[non_listed_values] + + # concat with list.lst + result.lst <- c(result.lst, identity.lst) + } + return(result.lst) +} diff --git a/R/sits_machine_learning.R b/R/sits_machine_learning.R index d56bc8665..544ac13a8 100644 --- a/R/sits_machine_learning.R +++ b/R/sits_machine_learning.R @@ -93,6 +93,7 @@ sits_svm <- function(distances.tb = NULL, formula = sits_formula_logref(), kerne # construct model predict enclosure function and returns model_predict <- function(values.tb){ + eval(parse(text ="library(e1071)")) return(stats::predict(result_svm, newdata = values.tb)) } return(model_predict) @@ -140,6 +141,7 @@ sits_lda <- function(distances.tb = NULL, formula = sits_formula_logref(), ...) # construct model predict enclosure function and returns model_predict <- function(values.tb){ + eval(parse(text ="library(MASS)")) return(stats::predict(result_lda, newdata = values.tb)$class) } return(model_predict) @@ -189,6 +191,7 @@ sits_qda <- function(distances.tb = NULL, formula = sits_formula_logref(), ...) # construct model predict enclosure function and returns model_predict <- function(values.tb){ + eval(parse(text ="library(MASS)")) return(stats::predict(result_qda, newdata = values.tb)$class) } return(model_predict) @@ -237,6 +240,7 @@ sits_mlr <- function(distances.tb = NULL, formula = sits_formula_logref(), ...) # construct model predict enclosure function and returns model_predict <- function(values.tb){ + eval(parse(text ="library(nnet)")) return(stats::predict(result_mlr, newdata = values.tb)) } return(model_predict) @@ -287,6 +291,7 @@ sits_glm <- function(distances.tb = NULL, family = "multinomial", alpha = 1.0, l # construct model predict enclosure function and returns model_predict <- function(values.tb){ + eval(parse(text ="library(glmnet)")) return(stats::predict(result_glm, s = result_glm$lambda.min, newx = log(data.matrix(values.tb[,3:NCOL(values.tb)])), type = "class")) @@ -353,6 +358,7 @@ sits_gbm <- function(distances.tb = NULL, formula = sits_formula_logref(), distr # construct model predict enclosure function and returns # construct model predict enclosure function and returns model_predict <- function(values.tb){ + eval(parse(text ="library(gbm)")) result <- stats::predict(result_gbm, newdata = values.tb, best.iter) return(colnames(result)[max.col(result[,,1])]) } @@ -402,6 +408,7 @@ sits_rfor <- function(distances.tb = NULL, ntree = 500, ...) { # construct model predict enclosure function and returns model_predict <- function(values.tb){ + eval(parse(text ="library(randomForest)")) return(stats::predict(result_rfor, newdata = values.tb, type = "response")) } return(model_predict) @@ -479,7 +486,7 @@ sits_deep_learning <- function(distances.tb = NULL, ...) { #' @return result_fun a function that computes a valid formula #' @export #' -sits_formula_logref <- function(predictors_index = -2:0){ +sits_formula_logref <- function(predictors_index = -4:0){ # this function returns a formula like 'factor(reference~log(f1)+log(f2)+...+log(fn)' where f1, f2, ..., fn are, # respectivelly, the reference and predictors fields of tibble in `tb` parameter. @@ -513,7 +520,7 @@ sits_formula_logref <- function(predictors_index = -2:0){ #' @return result_fun a function that computes a valid formula #' @export #' -sits_formula_linear <- function(predictors_index = -2:0){ +sits_formula_linear <- function(predictors_index = -4:0){ # this function returns a formula like 'factor(reference~log(f1)+log(f2)+...+log(fn)' where f1, f2, ..., fn are, # respectivelly, the reference and predictors fields of tibble in `tb` parameter. @@ -545,7 +552,7 @@ sits_formula_linear <- function(predictors_index = -2:0){ #' @return result_fun a function that computes a valid formula #' @export #' -sits_formula_smooth <- function(predictors_index = -2:0){ +sits_formula_smooth <- function(predictors_index = -4:0){ # this function returns a formula like 'factor(reference~log(f1)+log(f2)+...+log(fn)' where f1, f2, ..., fn are, # respectivelly, the reference and predictors fields of tibble in `tb` parameter. diff --git a/R/sits_patterns.R b/R/sits_patterns.R index be78c52f6..872481797 100644 --- a/R/sits_patterns.R +++ b/R/sits_patterns.R @@ -28,7 +28,7 @@ sits_patterns <- function(data.tb, pt_method = sits_gam(data.tb = NULL, from = N } #' @title Do not create patterns for classification -#' @name sits_no_patterns +#' @name sits_patterns_from_data #' @author Rolf Simoes, \email{rolf.simoes@@inpe.br} #' @author Gilberto Camara, \email{gilberto.camara@@inpe.br} #' @@ -55,5 +55,3 @@ sits_patterns_from_data <- function (data.tb = NULL){ } result <- .sits_factory_function (data.tb, result_fun) } - - diff --git a/R/sits_plot.R b/R/sits_plot.R index 8dd44425e..bf72ab0e7 100644 --- a/R/sits_plot.R +++ b/R/sits_plot.R @@ -395,5 +395,3 @@ sits_plot_together <- function (data.tb, colors) { return (data.tb) } - - diff --git a/README.md b/README.md index 9d1093f06..a49a1e6d8 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -sits -====== - -[![Build Status](https://travis-ci.org/rolfsimoes/sits.svg?branch=master)](https://travis-ci.org/rolfsimoes/) [![License](http://img.shields.io/badge/license-GPL%20%28%3E=%202%29-brightgreen.svg?style=flat)](http://www.gnu.org/licenses/gpl-2.0.html) - -### Satellite Image Time Series Analysis. -A set of tools for working with satellite image time series. Includes data retrieval from a WTSS (web time series service), different visualisation methods for image time series, smoothing methods for noisy time series, different clustering methods, including dendrograms and SOM. Matches noiseless patterns with noisy time series using the TWDTW method for shape recognition and provides machine learning methods for time series classification, including SVM, LDA, QDA, GLM, Lasso, Random Forests and Deep Learning. - - +sits +====== + +[![Build Status](https://travis-ci.org/rolfsimoes/sits.svg?branch=master)](https://travis-ci.org/rolfsimoes/) [![License](http://img.shields.io/badge/license-GPL%20%28%3E=%202%29-brightgreen.svg?style=flat)](http://www.gnu.org/licenses/gpl-2.0.html) + +### Satellite Image Time Series Analysis. +A set of tools for working with satellite image time series. Includes data retrieval from a WTSS (web time series service), different visualisation methods for image time series, smoothing methods for noisy time series, different clustering methods, including dendrograms and SOM. Matches noiseless patterns with noisy time series using the TWDTW method for shape recognition and provides machine learning methods for time series classification, including SVM, LDA, QDA, GLM, Lasso, Random Forests and Deep Learning. + + diff --git a/inst/doc/sec02_data.Rmd b/inst/doc/sec02_data.Rmd index 531a3e79a..2eb6fe1c9 100644 --- a/inst/doc/sec02_data.Rmd +++ b/inst/doc/sec02_data.Rmd @@ -1,9 +1,9 @@ -The basic data unit in the sits package is the SITS tibble, which is - -```{r} -# Get a data set containing samples for two classes ("Cerrado" and "Pasture") -cerrado.tb <- sits_getdata(file = system.file("extdata/samples/cerrado.json.gz", package="sits")) -cerrado.tb -``` - -this needs to be explained further.... +The basic data unit in the sits package is the SITS tibble, which is + +```{r} +# Get a data set containing samples for two classes ("Cerrado" and "Pasture") +cerrado.tb <- sits_getdata(file = system.file("extdata/samples/cerrado.json.gz", package="sits")) +cerrado.tb +``` + +this needs to be explained further.... diff --git a/inst/doc/sits.Rmd b/inst/doc/sits.Rmd index 5dd5404a3..22b04db23 100644 --- a/inst/doc/sits.Rmd +++ b/inst/doc/sits.Rmd @@ -1,49 +1,49 @@ ---- -author: - - name: Rolf Simoes, Gilberto Camara - affiliation: INPE, Brazil - - name: Victor Maus - affiliation: IIASA - - name: Alexandre Iwata - affiliation: IPEA, Brazil -title: - formatted: '\pkg{SITS}: An R Package for Data Access, Visualisation, Filtering, - Clustering, Event Detection and Classification of Satellite Image Time Series' - plain: 'SITS: Satellite Image Time Series package' - short: SITS package -abstract: Using time series derived from big Earth Observation data sets is one of the leading research trends in Land Use Science and Remote Sensing. One of the more promising uses of satellite time series is its application for classification of land use and land cover, since our growing demand for natural resources has caused major environmental impacts. Given this motivation, this package provides a set of tools for data access, filtering, clustering and classification of satellite image time series. -keywords: - formatted: [satellite image time series, big Earth Observation data] -preamble: > - \usepackage{microtype} - \usepackage{amsmath} -output: rticles::jss_article -bibliography: e-sensing.bib -date: "`r Sys.Date()`" -vignette: > - %\VignetteIndexEntry{SITS: Satellite Image Time Series package} - %\VignetteEngine{knitr::rmarkdown} - %\VignetteEncoding{UTF-8} ---- - -```{r include = FALSE} -library(sits) -``` - - -# Introduction -```{r, child='sec01_introd.Rmd'} -``` - -# Data Handling in SITS -```{r, child='sec02_data.Rmd'} -``` - -# Using the Web Time Series Service WTSS -```{r, child='sec03_wtss.Rmd'} -``` - -\section*{Acknowledgments} -This work is supported by the São Paulo State Foundation (FAPESP) under grant 2014/08398-6 ("e-sensing: Big Earth observation data analytics for land use and land cover change information"), and by the Germany International Klimate Initiative under the RESTORE+ grant17_III_084_Global_A_RESTORE+ (“RESTORE+: Addressing Landscape Restoration on Degraded Land in Indonesia and Brazil”). Gilberto Camara's work is also supported by CNPq (grant 312151\/2014-4). - - +--- +author: + - name: Rolf Simoes, Gilberto Camara + affiliation: INPE, Brazil + - name: Victor Maus + affiliation: IIASA + - name: Alexandre Iwata + affiliation: IPEA, Brazil +title: + formatted: '\pkg{SITS}: An R Package for Data Access, Visualisation, Filtering, + Clustering, Event Detection and Classification of Satellite Image Time Series' + plain: 'SITS: Satellite Image Time Series package' + short: SITS package +abstract: Using time series derived from big Earth Observation data sets is one of the leading research trends in Land Use Science and Remote Sensing. One of the more promising uses of satellite time series is its application for classification of land use and land cover, since our growing demand for natural resources has caused major environmental impacts. Given this motivation, this package provides a set of tools for data access, filtering, clustering and classification of satellite image time series. +keywords: + formatted: [satellite image time series, big Earth Observation data] +preamble: > + \usepackage{microtype} + \usepackage{amsmath} +output: rticles::jss_article +bibliography: e-sensing.bib +date: "`r Sys.Date()`" +vignette: > + %\VignetteIndexEntry{SITS: Satellite Image Time Series package} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r include = FALSE} +library(sits) +``` + + +# Introduction +```{r, child='sec01_introd.Rmd'} +``` + +# Data Handling in SITS +```{r, child='sec02_data.Rmd'} +``` + +# Using the Web Time Series Service WTSS +```{r, child='sec03_wtss.Rmd'} +``` + +\section*{Acknowledgments} +This work is supported by the São Paulo State Foundation (FAPESP) under grant 2014/08398-6 ("e-sensing: Big Earth observation data analytics for land use and land cover change information"), and by the Germany International Klimate Initiative under the RESTORE+ grant17_III_084_Global_A_RESTORE+ (“RESTORE+: Addressing Landscape Restoration on Degraded Land in Indonesia and Brazil”). Gilberto Camara's work is also supported by CNPq (grant 312151\/2014-4). + + diff --git a/inst/doc/sits.tex b/inst/doc/sits.tex index 8921387af..89efcc4c8 100644 --- a/inst/doc/sits.tex +++ b/inst/doc/sits.tex @@ -1,217 +1,217 @@ -\documentclass[article]{jss} -\usepackage[utf8]{inputenc} - -\providecommand{\tightlist}{% - \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} - -\author{ -Rolf Simoes, Gilberto Camara\\INPE, Brazil \And Victor Maus\\IIASA \And Alexandre Iwata\\IPEA, Brazil -} -\title{\pkg{SITS}: An R Package for Data Access, Visualisation, Filtering, -Clustering, Event Detection and Classification of Satellite Image Time -Series} - -\Plainauthor{Rolf Simoes, Gilberto Camara, Victor Maus, Alexandre Iwata} -\Plaintitle{SITS: Satellite Image Time Series package} -\Shorttitle{SITS package} - -\Abstract{ -Using time series derived from big Earth Observation data sets is one of -the leading research trends in Land Use Science and Remote Sensing. One -of the more promising uses of satellite time series is its application -for classification of land use and land cover, since our growing demand -for natural resources has caused major environmental impacts. Given this -motivation, this package provides a set of tools for data access, -filtering, clustering and classification of satellite image time series. -} - -\Keywords{satellite image time series, big Earth Observation data} - -%% publication information -%% \Volume{50} -%% \Issue{9} -%% \Month{June} -%% \Year{2012} -%% \Submitdate{} -%% \Acceptdate{2012-06-04} - -\Address{ - } - -\usepackage{microtype} \usepackage{amsmath} - -\begin{document} - -\section{Introduction}\label{introduction} - -Earth observation satellites provide a continuous and consistent set of -information about the Earth's land and oceans. Most space agencies have -adopted an open data policy, making unprecedented amounts of satellite -data available for research and operational use. This data deluge has -brought about a major challenge for Geoinformatics research: -\textit{How to design and build technologies that allow the Earth observation community to analyse big data sets?} - -Since remote sensing satellites revisit the same place repeatedly, we -can calibrate their images so measures of the same place in different -times are comparable. These observation can be organised, so that each -measure from sensor is mapped into a three dimensional array in -space-time. From a data analysis perspective, researchers then have -access to satellite image time series (SITS). Using time series derived -from big Earth Observation data sets is one of the leading research -trends in Land Use Science and Remote Sensing. - -A time-series of measurements of the same location in the surface of the -Earth can be considered as a historical record. When the images arise -for a dense record of frequent revisits, the temporal resolution of the -big data set is able to capture the most important land use changes. -Such dense time series allow researchers to which changes have taken -place in each location. - -The benefits of remote sensing time series analysis arise when the -temporal resolution of the big data set is sufficient to capture the -most important changes. In this case, the temporal autocorrelation of -the data can be stronger than the spatial autocorrelation. In other -words, given data with adequate repeatability, a pixel will be more -related to its temporal neighbours rather its spatial ones. In this -case, \textit{time-first, space-later} methods will give better results -than the \textit{space-first, time-later} approach. - -Time series of remote sensing data show that land cover changes do not -always occur in a progressive and gradual way, but they may also show -periods of rapid and abrupt change followed either by a quick recovery -\citep{Lambin2006}. Analyses of multiyear time series of land surface -attributes, their fine-scale spatial pattern, and their seasonal -evolution leads to a broader view of land-cover change. Satellite image -time series have already been applied to applications such as mapping -for detecting forest disturbance \citep{Kennedy2010}, ecology dynamics -\citep{Pasquarella2016}, agricultural intensification -\citep{Galford2008} and its impacts on deforestation \citep{Arvor2012}. - -\section{Data Handling in SITS}\label{data-handling-in-sits} - -The basic data unit in the sits package is the SITS tibble, which is - -\begin{CodeChunk} - -\begin{CodeInput} -> # Get a data set containing samples for two classes ("Cerrado" and "Pasture") -> cerrado.tb <- sits_getdata(file = system.file("extdata/samples/cerrado.json.gz", package="sits")) -> cerrado.tb -\end{CodeInput} - -\begin{CodeOutput} -# A tibble: 746 x 7 - longitude latitude start_date end_date label coverage - - 1 -54.2313 -14.0482 2000-09-13 2001-08-29 Cerrado mod13q1_512 - 2 -54.2313 -14.0482 2001-09-14 2002-08-29 Cerrado mod13q1_512 - 3 -54.2313 -14.0482 2002-09-14 2003-08-29 Cerrado mod13q1_512 - 4 -54.2313 -14.0482 2003-09-14 2004-08-28 Cerrado mod13q1_512 - 5 -54.2313 -14.0482 2004-09-13 2005-08-29 Cerrado mod13q1_512 - 6 -54.2313 -14.0482 2005-09-14 2006-08-29 Cerrado mod13q1_512 - 7 -54.2313 -14.0482 2006-09-14 2007-08-29 Cerrado mod13q1_512 - 8 -54.2313 -14.0482 2007-09-14 2008-08-28 Cerrado mod13q1_512 - 9 -54.2313 -14.0482 2008-09-13 2009-08-29 Cerrado mod13q1_512 -10 -54.2313 -14.0482 2009-09-14 2010-08-29 Cerrado mod13q1_512 -# ... with 736 more rows, and 1 more variables: time_series -\end{CodeOutput} -\end{CodeChunk} - -this needs to be explained further\ldots{}. - -\section{Using the Web Time Series Service -WTSS}\label{using-the-web-time-series-service-wtss} - -To get a remote sensing time series, one first organises a large set of -EO data as a 3D array. From each pixel location in the array, one can -extract a time series of one or more variables for a temporal interval. -The WTSS service is independent of the actual data architecture used for -3D array store. It can work with solutions such as flat files, MapReduce -distributed datasets, array databases or object-relational databases. We -have implemented the service using both a set of flat files and the -SciDB array database management system \citep{Stonebraker2013}, with the -same external interface. - -\begin{CodeChunk} - -\begin{CodeInput} -> URL <- "http://www.dpi.inpe.br/tws/wtss" -> wtss_inpe <- sits_infoWTSS(URL) -\end{CodeInput} - -\begin{CodeOutput} ------------------------------------------------------------ -The WTSS server URL is http://www.dpi.inpe.br/tws/wtss -Available coverages: -itobi -merge -mixl8mod -mixl8mod_f -mod13q1_512 ------------------------------------------------------------- -\end{CodeOutput} -\end{CodeChunk} - -\begin{CodeChunk} - -\begin{CodeInput} -> # get information about a specific coverage -> sits_coverageWTSS(URL,"mod13q1_512") -\end{CodeInput} - -\begin{CodeOutput} ----------------------------------------------------------------------------------- -Coverage: mod13q1_512 -Description: Vegetation Indices 16-Day L3 Global 250m -Source: https://lpdaac.usgs.gov/dataset_discovery/modis/modis_products_table/mod13q1 -Bands: - name description -1 ndvi 250m 16 days NDVI -2 evi 250m 16 days EVI -3 red 250m 16 days red reflectance (Band 1) -4 nir 250m 16 days NIR reflectance (Band 2) -5 blue 250m 16 days blue reflectance (Band 3) -6 mir 250m 16 days MIR reflectance (Band 7) - -Spatial extent: (-180, -90) - (180, 90) -Spatial resolution: (0.00208334, 0.00208334) -Projection CRS: +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs -Time range: 2000-02-18 to 2017-02-18 -Temporal resolution: 16 days ----------------------------------------------------------------------------------- -\end{CodeOutput} - -\begin{CodeInput} -> # choose a coverage -> coverage <- "mod13q1_512" -> # recover all bands -> bands <- c("ndvi", "evi", "nir") -> # a point in the transition forest pasture in Northern MT -> long <- -55.57320 -> lat <- -11.50566 -> # obtain a time series from the WTSS server for this point -> series.tb <- sits_getdata(longitude = long, latitude = lat, URL = URL, coverage = "mod13q1_512", bands = bands) -> # plot the series -> sits_plot (series.tb) -\end{CodeInput} - - -\begin{center}\includegraphics{sits_files/figure-latex/unnamed-chunk-7-1} \end{center} - -\end{CodeChunk} - -\section*{Acknowledgments} - -This work is supported by the São Paulo State Foundation (FAPESP) under -grant 2014/08398-6 (``e-sensing: Big Earth observation data analytics -for land use and land cover change information''), and by the Germany -International Klimate Initiative under the RESTORE+ -grant17\_III\_084\_Global\_A\_RESTORE+ (``RESTORE+: Addressing Landscape -Restoration on Degraded Land in Indonesia and Brazil''). Gilberto -Camara's work is also supported by CNPq (grant 312151/2014-4). - -\bibliography{e-sensing.bib} - - -\end{document} - +\documentclass[article]{jss} +\usepackage[utf8]{inputenc} + +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + +\author{ +Rolf Simoes, Gilberto Camara\\INPE, Brazil \And Victor Maus\\IIASA \And Alexandre Iwata\\IPEA, Brazil +} +\title{\pkg{SITS}: An R Package for Data Access, Visualisation, Filtering, +Clustering, Event Detection and Classification of Satellite Image Time +Series} + +\Plainauthor{Rolf Simoes, Gilberto Camara, Victor Maus, Alexandre Iwata} +\Plaintitle{SITS: Satellite Image Time Series package} +\Shorttitle{SITS package} + +\Abstract{ +Using time series derived from big Earth Observation data sets is one of +the leading research trends in Land Use Science and Remote Sensing. One +of the more promising uses of satellite time series is its application +for classification of land use and land cover, since our growing demand +for natural resources has caused major environmental impacts. Given this +motivation, this package provides a set of tools for data access, +filtering, clustering and classification of satellite image time series. +} + +\Keywords{satellite image time series, big Earth Observation data} + +%% publication information +%% \Volume{50} +%% \Issue{9} +%% \Month{June} +%% \Year{2012} +%% \Submitdate{} +%% \Acceptdate{2012-06-04} + +\Address{ + } + +\usepackage{microtype} \usepackage{amsmath} + +\begin{document} + +\section{Introduction}\label{introduction} + +Earth observation satellites provide a continuous and consistent set of +information about the Earth's land and oceans. Most space agencies have +adopted an open data policy, making unprecedented amounts of satellite +data available for research and operational use. This data deluge has +brought about a major challenge for Geoinformatics research: +\textit{How to design and build technologies that allow the Earth observation community to analyse big data sets?} + +Since remote sensing satellites revisit the same place repeatedly, we +can calibrate their images so measures of the same place in different +times are comparable. These observation can be organised, so that each +measure from sensor is mapped into a three dimensional array in +space-time. From a data analysis perspective, researchers then have +access to satellite image time series (SITS). Using time series derived +from big Earth Observation data sets is one of the leading research +trends in Land Use Science and Remote Sensing. + +A time-series of measurements of the same location in the surface of the +Earth can be considered as a historical record. When the images arise +for a dense record of frequent revisits, the temporal resolution of the +big data set is able to capture the most important land use changes. +Such dense time series allow researchers to which changes have taken +place in each location. + +The benefits of remote sensing time series analysis arise when the +temporal resolution of the big data set is sufficient to capture the +most important changes. In this case, the temporal autocorrelation of +the data can be stronger than the spatial autocorrelation. In other +words, given data with adequate repeatability, a pixel will be more +related to its temporal neighbours rather its spatial ones. In this +case, \textit{time-first, space-later} methods will give better results +than the \textit{space-first, time-later} approach. + +Time series of remote sensing data show that land cover changes do not +always occur in a progressive and gradual way, but they may also show +periods of rapid and abrupt change followed either by a quick recovery +\citep{Lambin2006}. Analyses of multiyear time series of land surface +attributes, their fine-scale spatial pattern, and their seasonal +evolution leads to a broader view of land-cover change. Satellite image +time series have already been applied to applications such as mapping +for detecting forest disturbance \citep{Kennedy2010}, ecology dynamics +\citep{Pasquarella2016}, agricultural intensification +\citep{Galford2008} and its impacts on deforestation \citep{Arvor2012}. + +\section{Data Handling in SITS}\label{data-handling-in-sits} + +The basic data unit in the sits package is the SITS tibble, which is + +\begin{CodeChunk} + +\begin{CodeInput} +> # Get a data set containing samples for two classes ("Cerrado" and "Pasture") +> cerrado.tb <- sits_getdata(file = system.file("extdata/samples/cerrado.json.gz", package="sits")) +> cerrado.tb +\end{CodeInput} + +\begin{CodeOutput} +# A tibble: 746 x 7 + longitude latitude start_date end_date label coverage + + 1 -54.2313 -14.0482 2000-09-13 2001-08-29 Cerrado mod13q1_512 + 2 -54.2313 -14.0482 2001-09-14 2002-08-29 Cerrado mod13q1_512 + 3 -54.2313 -14.0482 2002-09-14 2003-08-29 Cerrado mod13q1_512 + 4 -54.2313 -14.0482 2003-09-14 2004-08-28 Cerrado mod13q1_512 + 5 -54.2313 -14.0482 2004-09-13 2005-08-29 Cerrado mod13q1_512 + 6 -54.2313 -14.0482 2005-09-14 2006-08-29 Cerrado mod13q1_512 + 7 -54.2313 -14.0482 2006-09-14 2007-08-29 Cerrado mod13q1_512 + 8 -54.2313 -14.0482 2007-09-14 2008-08-28 Cerrado mod13q1_512 + 9 -54.2313 -14.0482 2008-09-13 2009-08-29 Cerrado mod13q1_512 +10 -54.2313 -14.0482 2009-09-14 2010-08-29 Cerrado mod13q1_512 +# ... with 736 more rows, and 1 more variables: time_series +\end{CodeOutput} +\end{CodeChunk} + +this needs to be explained further\ldots{}. + +\section{Using the Web Time Series Service +WTSS}\label{using-the-web-time-series-service-wtss} + +To get a remote sensing time series, one first organises a large set of +EO data as a 3D array. From each pixel location in the array, one can +extract a time series of one or more variables for a temporal interval. +The WTSS service is independent of the actual data architecture used for +3D array store. It can work with solutions such as flat files, MapReduce +distributed datasets, array databases or object-relational databases. We +have implemented the service using both a set of flat files and the +SciDB array database management system \citep{Stonebraker2013}, with the +same external interface. + +\begin{CodeChunk} + +\begin{CodeInput} +> URL <- "http://www.dpi.inpe.br/tws/wtss" +> wtss_inpe <- sits_infoWTSS(URL) +\end{CodeInput} + +\begin{CodeOutput} +----------------------------------------------------------- +The WTSS server URL is http://www.dpi.inpe.br/tws/wtss +Available coverages: +itobi +merge +mixl8mod +mixl8mod_f +mod13q1_512 +------------------------------------------------------------ +\end{CodeOutput} +\end{CodeChunk} + +\begin{CodeChunk} + +\begin{CodeInput} +> # get information about a specific coverage +> sits_coverageWTSS(URL,"mod13q1_512") +\end{CodeInput} + +\begin{CodeOutput} +---------------------------------------------------------------------------------- +Coverage: mod13q1_512 +Description: Vegetation Indices 16-Day L3 Global 250m +Source: https://lpdaac.usgs.gov/dataset_discovery/modis/modis_products_table/mod13q1 +Bands: + name description +1 ndvi 250m 16 days NDVI +2 evi 250m 16 days EVI +3 red 250m 16 days red reflectance (Band 1) +4 nir 250m 16 days NIR reflectance (Band 2) +5 blue 250m 16 days blue reflectance (Band 3) +6 mir 250m 16 days MIR reflectance (Band 7) + +Spatial extent: (-180, -90) - (180, 90) +Spatial resolution: (0.00208334, 0.00208334) +Projection CRS: +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +Time range: 2000-02-18 to 2017-02-18 +Temporal resolution: 16 days +---------------------------------------------------------------------------------- +\end{CodeOutput} + +\begin{CodeInput} +> # choose a coverage +> coverage <- "mod13q1_512" +> # recover all bands +> bands <- c("ndvi", "evi", "nir") +> # a point in the transition forest pasture in Northern MT +> long <- -55.57320 +> lat <- -11.50566 +> # obtain a time series from the WTSS server for this point +> series.tb <- sits_getdata(longitude = long, latitude = lat, URL = URL, coverage = "mod13q1_512", bands = bands) +> # plot the series +> sits_plot (series.tb) +\end{CodeInput} + + +\begin{center}\includegraphics{sits_files/figure-latex/unnamed-chunk-7-1} \end{center} + +\end{CodeChunk} + +\section*{Acknowledgments} + +This work is supported by the São Paulo State Foundation (FAPESP) under +grant 2014/08398-6 (``e-sensing: Big Earth observation data analytics +for land use and land cover change information''), and by the Germany +International Klimate Initiative under the RESTORE+ +grant17\_III\_084\_Global\_A\_RESTORE+ (``RESTORE+: Addressing Landscape +Restoration on Degraded Land in Indonesia and Brazil''). Gilberto +Camara's work is also supported by CNPq (grant 312151/2014-4). + +\bibliography{e-sensing.bib} + + +\end{document} + diff --git a/inst/extdata/examples/sits_TWDTW_ML_full_embrapa_dataset.R b/inst/extdata/examples/sits_TWDTW_ML_full_embrapa_dataset.R index fd30df9ad..ee44db897 100644 --- a/inst/extdata/examples/sits_TWDTW_ML_full_embrapa_dataset.R +++ b/inst/extdata/examples/sits_TWDTW_ML_full_embrapa_dataset.R @@ -58,4 +58,3 @@ class.tb <- sits_classify(series.tb, patterns.tb, model.ml, start_date = "2000-0 # plot the classification of the time series by yearly intervals sits_plot(class.tb, patterns.tb, band = "ndvi") - diff --git a/inst/extdata/examples/sits_cerrado_pasture_KF.R b/inst/extdata/examples/sits_cerrado_pasture_KF.R index adaaa25c6..ac1837e9b 100644 --- a/inst/extdata/examples/sits_cerrado_pasture_KF.R +++ b/inst/extdata/examples/sits_cerrado_pasture_KF.R @@ -47,4 +47,3 @@ cerrado3.tb %>% sits_select(bands = c("evi.env.kf.estimation", "evi")) %>% sits_plot() - diff --git a/inst/extdata/examples/sits_classification_examples.R b/inst/extdata/examples/sits_classification_examples.R index f8d80724d..5e73bdcf5 100644 --- a/inst/extdata/examples/sits_classification_examples.R +++ b/inst/extdata/examples/sits_classification_examples.R @@ -49,7 +49,10 @@ sits_plot(patterns_gam.tb, type = "patterns") # This function obtains a traning data set of attributes for the MatoGrosso data using the TWTDW algorithm # we are not running this function as it takes a lot of time, so we # retrieve a set of pre-defined patterns from an RDS file -if (FALSE) distances_twdtw.tb <- sits_TWDTW_distances(embrapa.tb, patterns_gam.tb) +if (FALSE) { + distances_twdtw.tb <- sits_TWDTW_distances(embrapa.tb, patterns_gam.tb, multicores = 14) + saveRDS(distances_twdtw.tb, "./inst/extdata/models/embrapa_mt_distances_twdtw.rds") +} if (TRUE) distances_twdtw.tb <- readRDS(system.file("extdata/models/embrapa_mt_distances_twdtw.rds", package = "sits")) @@ -69,13 +72,14 @@ sits_plot_classification(class.tb, patterns_gam.tb, band = "ndvi") patterns_data.tb <- sits_patterns_from_data(embrapa.tb) # estimate distances -distances_data.tb <- sits_distances_from_data(embrapa.tb, patterns_data.tb) +distances_data.tb <- sits_distances_from_data2(embrapa.tb, fun = function(band) band + 3, start_from = "2000-09-01", interval = "12 months") # estimate an SVM model for this training data model_svm2.ml <- sits_svm(distances_data.tb, kernel = "radial", cost = 10) # classify the test data -class.tb <- sits_classify(series.tb, patterns_data.tb, model_svm2.ml, dist_method = sits_distances_from_data()) +class.tb <- sits_classify2(series.tb, model_svm2.ml, + dist_method = sits_distances_from_data2(fun = function(band) band + 3, start_from = "2000-09-01", interval = "12 months")) # plot the classification of the time series by yearly intervals sits_plot_classification(class.tb, patterns_data.tb, band = "ndvi") diff --git a/inst/extdata/examples/sits_example_TWDTW.R b/inst/extdata/examples/sits_example_TWDTW.R index 8f411867d..13562ac45 100644 --- a/inst/extdata/examples/sits_example_TWDTW.R +++ b/inst/extdata/examples/sits_example_TWDTW.R @@ -33,7 +33,7 @@ embrapa_mt.tb <- readRDS(system.file("extdata/time_series/embrapa_mt.rds", packa # obtain a set of patterns for these samples patterns.tb <- sits_patterns(embrapa_mt.tb) -sits_plot (patterns.tb,type="patterns") +sits_plot (patterns.tb, type = "patterns") # find the matches between the patterns and the time series using the TWDTW algorithm # (uses the dtwSat R package) diff --git a/inst/extdata/examples/sits_machine_learning_comparison2.R b/inst/extdata/examples/sits_machine_learning_comparison2.R index bfaa65d4f..a7131e164 100644 --- a/inst/extdata/examples/sits_machine_learning_comparison2.R +++ b/inst/extdata/examples/sits_machine_learning_comparison2.R @@ -11,11 +11,10 @@ embrapa.tb <- sits_select (embrapa.tb, bands = c("ndvi", "evi", "nir", "mir") ) results <- list() # test accuracy of TWDTW to measure distances -conf_svm.tb <- sits_kfold_fast_validate(embrapa.tb, folds = 5, multicores = 2, +conf_svm.tb <- sits_kfold_validate(embrapa.tb, folds = 5, multicores = 1, pt_method = sits_patterns_from_data(), dist_method = sits_distances_from_data(), - tr_method = sits_svm (cost = 10, kernel = "radial", - tolerance = 0.001, epsilon = 0.1)) + tr_method = sits_svm (formula = sits_formula_linear(), kernel = "radial")) print("==================================================") print ("== Confusion Matrix = SVM =======================") conf_svm.mx <- sits_accuracy(conf_svm.tb) diff --git a/inst/extdata/examples/sits_prodes_226_064_examples.R b/inst/extdata/examples/sits_prodes_226_064_examples.R index 7890c4c09..2764a74e3 100644 --- a/inst/extdata/examples/sits_prodes_226_064_examples.R +++ b/inst/extdata/examples/sits_prodes_226_064_examples.R @@ -1,606 +1,35 @@ -library(wtss) -library(sits) - - -# _____ _____ ____ _____ ______ _____ -# | __ \ | __ \ / __ \ | __ \ | ____| / ____| -# | |__) | | |__) | | | | | | | | | | |__ | (___ -# | ___/ | _ / | | | | | | | | | __| \___ \ -# | | | | \ \ | |__| | | |__| | | |____ ____) | -# |_| |_| \_\ \____/ |_____/ |______| |_____/ -# -# -######################################################################################## +# This script evaluates the accuracy of different classification methods on PRODES data sample +library(sits) # load data and fill NAs with linear interpolation -prodes.tb <- sits_getdata(system.file("extdata/samples/prodes_226_064.json.gz", package = "sits")) %>% - sits_select_bands(c("ndvi", "evi", "nir")) %>% dplyr::filter(label != "primary_forest") %>% sits_linear_interp() - -prodes2.tb <- sits_getdata(system.file("extdata/samples/prodes_samples_226_64_v1.json.gz", package = "sits")) %>% - sits_select_bands(c("ndvi", "evi", "nir")) %>% dplyr::filter(label != "ClearCut") %>% sits_linear_interp() - -prodes.tb <- prodes.tb %>% dplyr::bind_rows(prodes2.tb) -rm(prodes2.tb) +prodes.tb <- sits_getdata(system.file("extdata/time_series/prodes_226_064.json.gz", package = "sits")) %>% + sits_linear_interp() # view a summary of the data sits_summary(prodes.tb) # create list of label conversion -conv.lst <- list("deforestation2014" = "Clear_Cut", - "deforestation2015" = "Clear_Cut", +conv.lst <- list("Deforestation_2014" = "Clear_Cut", + "Deforestation_2015" = "Clear_Cut", "Forest" = "Forest", "Pasture" = "Pasture") # create list for non_forest/forest classes -conv2.lst <- list("deforestation2014" = "Non_Forest", - "deforestation2015" = "Non_Forest", +conv2.lst <- list("Deforestation_2014" = "Non_Forest", + "Deforestation_2015" = "Non_Forest", "Forest" = "Forest", "Pasture" = "Non_Forest") -# create patterns and plot them -patt_prodes.tb <- prodes.tb %>% sits_gam() -sits_plot_patterns(patt_prodes.tb) - -# create distances -dist_prodes.tb <- prodes.tb %>% sits_distances(patt_prodes.tb) - -####################################################################################### -# _____ _______ _______ _____ _____ _____ _______ -# | __ \ /\ |__ __||__ __| | __ \|_ _| / ____||__ __| -# | |__) |/ \ | | | | | | | | | | | (___ | | -# | ___// /\ \ | | | | | | | | | | \___ \ | | -# | | / ____ \ | | | | _ | |__| |_| |_ ____) | | | _ -# |_| /_/ \_\|_| |_|(_) |_____/|_____||_____/ |_|(_) -# -# - - -# _____ _____ ____ _____ ____ -# |_ _|| ____|/ ___||_ _|/ ___| -# | | | _| \___ \ | | \___ \ -# | | | |___ ___) | | | ___) | -# |_| |_____||____/ |_| |____/ -# -# - -# start "one-shot" tests. - - -# ___ __ __ __ __ -# / __|\ \ / /| \/ | -# \__ \ \ V / | |\/| | -# |___/ \_/ |_| |_| -# -model.svm <- sits_train(dist_prodes.tb, sits_svm(formula = sits_formula_linear(), - kernel = "radial")) - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.svm) -prodes.tb %>% - dplyr::mutate(reference = label) %>% - sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 317 7 18 -# Forest 4 117 3 -# Pasture 16 0 124 -# -# Overall Statistics -# -# Accuracy : 0.9208 -# 95% CI : (0.8964, 0.941) -# -# Kappa : 0.8655 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.9407 0.9435 0.8552 -# Specificity 0.9071 0.9855 0.9653 -# User Acc (Pos Pred Value) 0.9269 0.9435 0.8857 -# Neg Pred Value 0.9242 0.9855 0.9549 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.svm) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 117 7 -# Non_Forest 7 475 -# -# Accuracy : 0.9769 -# 95% CI : (0.9615, 0.9873) -# -# Kappa : 0.929 -# -# Prod Acc Forest : 0.9435 -# Prod Acc Non_Forest : 0.9855 -# User Acc Forest : 0.9435 -# User Acc Non_Forest : 0.9855 -# - - -# _ ___ _ -# | | | \ /_\ -# | |__ | |) |/ _ \ -# |____||___//_/ \_\ -# -model.lda <- sits_train(dist_prodes.tb, sits_lda(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.lda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 272 13 47 -# Forest 28 107 10 -# Pasture 37 4 88 -# -# Overall Statistics -# -# Accuracy : 0.7706 -# 95% CI : (0.7351, 0.8035) -# -# Kappa : 0.6148 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8071 0.8629 0.6069 -# Specificity 0.7770 0.9212 0.9111 -# User Acc (Pos Pred Value) 0.8193 0.7379 0.6822 -# Neg Pred Value 0.7628 0.9631 0.8805 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.lda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 107 38 -# Non_Forest 17 444 -# -# Accuracy : 0.9092 -# 95% CI : (0.8835, 0.9309) -# -# Kappa : 0.7377 -# -# Prod Acc Forest : 0.8629 -# Prod Acc Non_Forest : 0.9212 -# User Acc Forest : 0.7379 -# User Acc Non_Forest : 0.9631 - - -# ___ ___ _ -# / _ \ | \ /_\ -# | (_) || |) |/ _ \ -# \__\_\|___//_/ \_\ -# -model.qda <- sits_train(dist_prodes.tb, sits_qda(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.qda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 278 9 36 -# Forest 21 113 9 -# Pasture 38 2 100 -# -# Overall Statistics -# -# Accuracy : 0.8102 -# 95% CI : (0.7767, 0.8407) -# -# Kappa : 0.6837 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8249 0.9113 0.6897 -# Specificity 0.8327 0.9378 0.9132 -# User Acc (Pos Pred Value) 0.8607 0.7902 0.7143 -# Neg Pred Value 0.7915 0.9762 0.9034 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.qda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 113 30 -# Non_Forest 11 452 -# -# Accuracy : 0.9323 -# 95% CI : (0.9093, 0.951) -# -# Kappa : 0.8033 -# -# Prod Acc Forest : 0.9113 -# Prod Acc Non_Forest : 0.9378 -# User Acc Forest : 0.7902 -# User Acc Non_Forest : 0.9762 - - -# __ __ _ ___ -# | \/ || | | _ \ -# | |\/| || |__ | / -# |_| |_||____||_|_\ -# -model.mlr <- sits_train(dist_prodes.tb, sits_mlr(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.mlr) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 279 14 50 -# Forest 23 107 10 -# Pasture 35 3 85 -# -# Overall Statistics -# -# Accuracy : 0.7772 -# 95% CI : (0.742, 0.8098) -# -# Kappa : 0.622 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8279 0.8629 0.5862 -# Specificity 0.7621 0.9315 0.9176 -# User Acc (Pos Pred Value) 0.8134 0.7643 0.6911 -# Neg Pred Value 0.7795 0.9635 0.8758 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.mlr) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 107 33 -# Non_Forest 17 449 -# -# Accuracy : 0.9175 -# 95% CI : (0.8927, 0.9381) -# -# Kappa : 0.7581 -# -# Prod Acc Forest : 0.8629 -# Prod Acc Non_Forest : 0.9315 -# User Acc Forest : 0.7643 -# User Acc Non_Forest : 0.9635 - -# _ _ ___ ___ ___ -# | | /_\ / __|/ __| / _ \ -# | |__ / _ \ \__ \\__ \| (_) | -# |____|/_/ \_\|___/|___/ \___/ -# -model.glm1 <- sits_train(dist_prodes.tb, sits_glm(alpha = 1)) -get("result_glm", envir = environment(model.glm1))$lambda.min -# [1] 0.004700096 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm1) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 285 12 52 -# Forest 21 107 11 -# Pasture 31 5 82 -# -# Overall Statistics -# -# Accuracy : 0.7822 -# 95% CI : (0.7472, 0.8144) -# -# Kappa : 0.6284 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8457 0.8629 0.5655 -# Specificity 0.7621 0.9336 0.9219 -# User Acc (Pos Pred Value) 0.8166 0.7698 0.6949 -# Neg Pred Value 0.7977 0.9636 0.8709 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm1) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 107 32 -# Non_Forest 17 450 -# -# Accuracy : 0.9191 -# 95% CI : (0.8945, 0.9396) -# -# Kappa : 0.7623 -# -# Prod Acc Forest : 0.8629 -# Prod Acc Non_Forest : 0.9336 -# User Acc Forest : 0.7698 -# User Acc Non_Forest : 0.9636 - - -# ___ ___ ___ ___ ___ -# | _ \|_ _|| \ / __|| __| -# | / | | | |) || (_ || _| -# |_|_\|___||___/ \___||___| -# -model.glm2 <- sits_train(dist_prodes.tb, sits_glm(alpha = 0)) -get("result_glm", envir = environment(model.glm2))$lambda.min -# [1] 0.01942086 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm2) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 282 11 57 -# Forest 21 108 9 -# Pasture 34 5 79 -# -# Overall Statistics -# -# Accuracy : 0.7739 -# 95% CI : (0.7385, 0.8067) -# -# Kappa : 0.614 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8368 0.8710 0.5448 -# Specificity 0.7472 0.9378 0.9154 -# User Acc (Pos Pred Value) 0.8057 0.7826 0.6695 -# Neg Pred Value 0.7852 0.9658 0.8648 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm2) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 108 30 -# Non_Forest 16 452 -# -# Accuracy : 0.9241 -# 95% CI : (0.9, 0.9439) -# -# Kappa : 0.7762 -# -# Prod Acc Forest : 0.8710 -# Prod Acc Non_Forest : 0.9378 -# User Acc Forest : 0.7826 -# User Acc Non_Forest : 0.9658 - - -# ___ _ _ ___ ___ ___ ___ ___ ___ _____ -# | _ \| \| || \ | __|/ _ \ | _ \| __|/ __||_ _| -# | /| .` || |) |_ | _|| (_) || /| _| \__ \ | | -# |_|_\|_|\_||___/(_)|_| \___/ |_|_\|___||___/ |_| -# - -# random forest returning 1.0 of accuracy. Reducing data training to 95% -model.rfor <- prodes.tb %>% sits_sample(frac = 0.95) %>% - sits_distances(patt_prodes.tb) %>% - sits_train(sits_rfor()) - -# test on all data set -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.rfor) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 288 13 54 -# Forest 14 94 9 -# Pasture 35 17 82 -# -# Overall Statistics -# -# Accuracy : 0.7657 -# 95% CI : (0.7299, 0.7989) -# -# Kappa : 0.5973 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8546 0.7581 0.5655 -# Specificity 0.7509 0.9523 0.8872 -# User Acc (Pos Pred Value) 0.8113 0.8034 0.6119 -# Neg Pred Value 0.8048 0.9387 0.8665 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.rfor) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 94 23 -# Non_Forest 30 459 -# -# Accuracy : 0.9125 -# 95% CI : (0.8872, 0.9338) -# -# Kappa : 0.7256 -# -# Prod Acc Forest : 0.7581 -# Prod Acc Non_Forest : 0.9523 -# User Acc Forest : 0.8034 -# User Acc Non_Forest : 0.9387 - - - -# result PATT.DIST. -# - SVM: 0.9769 * -# - LDA: 0.9092 -# - QDA: 0.9323 * -# - MLR: 0.9175 -# - LASSO: 0.9191 -# - RIDGE: 0.9241 -# - RFOR: 0.9125 - -# -# -# ################################################################### - +# some ML functions computes log to perform classification. Hence, we must work on positive values. +# We transform the data time series values by shifting the data values: +positive_prodes.tb <- prodes.tb %>% sits_apply(function(band) (3 + band)) -# _ __ _____ ___ _ ____ -# | |/ / | ___|/ _ \ | | | _ \ -# | ' / _____ | |_ | | | || | | | | | -# | . \|_____|| _| | |_| || |___ | |_| | -# |_|\_\ |_| \___/ |_____||____/ -# - -# The best "one-shot" results were: SVM and QDA. -# We processed k-fold validation for both methods - -# ___ __ __ __ __ -# / __|\ \ / /| \/ | -# \__ \ \ V / | |\/| | -# |___/ \_/ |_| |_| -# -svm.kfold <- - prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = sits_gam(), - dist_method = sits_TWDTW_distances(multicores = 5), - tr_method = sits_svm(formula = sits_formula_linear(), - kernel = "radial"), - multicores = 2) -svm.kfold %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 268 22 57 -# Forest 19 91 11 -# Pasture 50 11 77 -# -# Overall Statistics -# -# Accuracy : 0.7195 -# 95% CI : (0.6819, 0.7549) -# -# Kappa : 0.5215 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.7953 0.7339 0.5310 -# Specificity 0.7063 0.9378 0.8677 -# User Acc (Pos Pred Value) 0.7723 0.7521 0.5580 -# Neg Pred Value 0.7336 0.9320 0.8547 - -svm.kfold %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 91 30 -# Non_Forest 33 452 -# -# Accuracy : 0.896 -# 95% CI : (0.869, 0.9192) -# -# Kappa : 0.6777 -# -# Prod Acc Forest : 0.7339 -# Prod Acc Non_Forest : 0.9378 -# User Acc Forest : 0.7521 -# User Acc Non_Forest : 0.9320 - - - -# ___ ___ _ -# / _ \ | \ /_\ -# | (_) | | |) | / _ \ -# \__\_\ |___/ /_/ \_\ -# -qda.kfold <- - prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = sits_gam(), - dist_method = sits_TWDTW_distances(multicores = 5), - tr_method = sits_qda(formula = sits_formula_linear()), - multicores = 2) -qda.kfold %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 264 18 53 -# Forest 22 98 11 -# Pasture 51 8 81 -# -# Overall Statistics -# -# Accuracy : 0.731 -# 95% CI : (0.6938, 0.766) -# -# Kappa : 0.5465 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.7834 0.7903 0.5586 -# Specificity 0.7361 0.9315 0.8720 -# User Acc (Pos Pred Value) 0.7881 0.7481 0.5786 -# Neg Pred Value 0.7306 0.9453 0.8627 - -qda.kfold %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 98 33 -# Non_Forest 26 449 -# -# Accuracy : 0.9026 -# 95% CI : (0.8762, 0.9251) -# -# Kappa : 0.707 -# -# Prod Acc Forest : 0.7903 -# Prod Acc Non_Forest : 0.9315 -# User Acc Forest : 0.7481 -# User Acc Non_Forest : 0.9453 - - -# result K-FOLD PATT.DIST. -# - SVM: 0.8960 (0.8690, 0.9192) -# - QDA: 0.9026 (0.8762, 0.9251) * - - -# -# -# ################################################################### -# ################################################################### -# ################################################################### - - - -# _ _ _____ _ _ _ _____ _______ ______ _____ -# (_) | | / ____|| | | | | | / ____||__ __|| ____|| __ \ -# _ _ __ | |_ _ __ __ _ | | | | | | | || (___ | | | |__ | |__) | -# | || '_ \ | __|| '__|/ _` || | | | | | | | \___ \ | | | __| | _ / -# | || | | || |_ | | | (_| || |____ | |____| |__| | ____) | | | | |____ | | \ \ -# |_||_| |_| \__||_| \__,_| \_____||______|\____/ |_____/ |_| |______||_| \_\ -# -# - -# make intra-clusters +# CLUSTER Prepare library(dtwclust) +# define a pattern generator by internal label clustering (inCLUST) sits_intracluster_patterns <- function(data.tb = NULL, k = 3){ result_fun1 <- function(data.tb){ @@ -633,2244 +62,302 @@ sits_intracluster_patterns <- function(data.tb = NULL, k = 3){ return(result_fun2) } -# create patterns and plot them -patt_intracluster_gen <- prodes.tb %>% sits_intracluster_patterns() -patt_prodes.tb <- patt_intracluster_gen(3) -sits_plot_patterns(patt_prodes.tb) - -# create distances -dist_prodes.tb <- prodes.tb %>% sits_distances(patt_prodes.tb, dist_method = sits_TWDTW_distances(multicores = 10)) - - -# _____ _____ ____ _____ ____ -# |_ _|| ____|/ ___||_ _|/ ___| -# | | | _| \___ \ | | \___ \ -# | | | |___ ___) | | | ___) | -# |_| |_____||____/ |_| |____/ -# -# - -# start "one-shot" tests. - - -# ___ __ __ __ __ -# / __|\ \ / /| \/ | -# \__ \ \ V / | |\/| | -# |___/ \_/ |_| |_| -# -model.svm <- sits_train(dist_prodes.tb, sits_svm(formula = sits_formula_linear(), - kernel = "radial")) - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.svm) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 332 1 7 -# Forest 1 122 0 -# Pasture 4 1 138 -# -# Overall Statistics -# -# Accuracy : 0.9769 -# 95% CI : (0.9615, 0.9873) -# -# Kappa : 0.9608 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.9852 0.9839 0.9517 -# Specificity 0.9703 0.9979 0.9892 -# User Acc (Pos Pred Value) 0.9765 0.9919 0.9650 -# Neg Pred Value 0.9812 0.9959 0.9849 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.svm) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 122 1 -# Non_Forest 2 481 -# -# Accuracy : 0.995 -# 95% CI : (0.9856, 0.999) -# -# Kappa : 0.9847 -# -# Prod Acc Forest : 0.9839 -# Prod Acc Non_Forest : 0.9979 -# User Acc Forest : 0.9919 -# User Acc Non_Forest : 0.9959 - +# define a pattern generator by clustering (CLUSTER) +sits_cluster_patterns <- function(data.tb = NULL, k = 3){ -# _ ___ _ -# | | | \ /_\ -# | |__ | |) |/ _ \ -# |____||___//_/ \_\ -# -model.lda <- sits_train(dist_prodes.tb, sits_lda(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.lda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 284 11 29 -# Forest 17 110 11 -# Pasture 36 3 105 -# -# Overall Statistics -# -# Accuracy : 0.8234 -# 95% CI : (0.7907, 0.853) -# -# Kappa : 0.7053 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8427 0.8871 0.7241 -# Specificity 0.8513 0.9419 0.9154 -# User Acc (Pos Pred Value) 0.8765 0.7971 0.7292 -# Neg Pred Value 0.8121 0.9701 0.9134 + result_fun1 <- function(data.tb){ + dendro.obj <- data.tb %>% sits_dendrogram() -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.lda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 110 28 -# Non_Forest 14 454 -# -# Accuracy : 0.9307 -# 95% CI : (0.9075, 0.9496) -# -# Kappa : 0.7956 -# -# Prod Acc Forest : 0.8871 -# Prod Acc Non_Forest : 0.9419 -# User Acc Forest : 0.7971 -# User Acc Non_Forest : 0.9701 + sits_cluster(data.tb, dendro.obj, k) %>% + dplyr::mutate(label = paste0("Cluster", cluster)) %>% + sits_foreach(cluster, fun = function(tb) tb %>% sits_gam()) + } + result_fun2 <- function(k = k){ + sits_cluster(data.tb, dendro.obj, k) %>% + dplyr::mutate(label = paste0("Cluster", cluster)) %>% + sits_foreach(cluster, fun = function(tb) tb %>% sits_gam()) + } -# ___ ___ _ -# / _ \ | \ /_\ -# | (_) || |) |/ _ \ -# \__\_\|___//_/ \_\ -# -model.qda <- sits_train(dist_prodes.tb, sits_qda(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.qda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 320 3 6 -# Forest 7 121 2 -# Pasture 10 0 137 -# -# Overall Statistics -# -# Accuracy : 0.9538 -# 95% CI : (0.9339, 0.9691) -# -# Kappa : 0.9225 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.9496 0.9758 0.9448 -# Specificity 0.9665 0.9813 0.9783 -# User Acc (Pos Pred Value) 0.9726 0.9308 0.9320 -# Neg Pred Value 0.9386 0.9937 0.9826 + dendro.obj <- NULL + if (!is.null(data.tb)){ + dendro.obj <- data.tb %>% sits_dendrogram() + return(result_fun2) + } + return(result_fun1) +} -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.qda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics # -# Reference -# Prediction Forest Non_Forest -# Forest 121 9 -# Non_Forest 3 473 # -# Accuracy : 0.9802 -# 95% CI : (0.9657, 0.9897) -# -# Kappa : 0.9402 -# -# Prod Acc Forest : 0.9758 -# Prod Acc Non_Forest : 0.9813 -# User Acc Forest : 0.9308 -# User Acc Non_Forest : 0.9937 - +# ################################################################### -# __ __ _ ___ -# | \/ || | | _ \ -# | |\/| || |__ | / -# |_| |_||____||_|_\ -# -model.mlr <- sits_train(dist_prodes.tb, sits_mlr(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.mlr) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 294 11 35 -# Forest 13 110 9 -# Pasture 30 3 101 -# -# Overall Statistics -# -# Accuracy : 0.8333 -# 95% CI : (0.8012, 0.8621) -# -# Kappa : 0.7178 -# -# Statistics by Class: +# TWDTW distances between patterns generated by GAM and time series data (TWDTW_GAM) +# This method use Machine Learning on distances between patterns and time series data. +# +# Patterns are generated by GAM only. +TWDTW_GAM_experiments.lst <- list( + "TWDTW_GAM_SVM_radial" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_gam(), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_svm(formula = sits_formula_linear(), kernel = "radial"), + multicores = 5), + "TWDTW_GAM_LDA" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_gam(), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_lda(formula = sits_formula_linear()), + multicores = 5), + "TWDTW_GAM_QDA" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_gam(), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_qda(formula = sits_formula_linear()), + multicores = 5), + "TWDTW_GAM_MLR" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_gam(), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_mlr(formula = sits_formula_linear()), + multicores = 5), + "TWDTW_GAM_LASSO" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_gam(), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_glm(alpha = 1), + multicores = 5), + "TWDTW_GAM_RIDGE" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_gam(), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_glm(alpha = 0), + multicores = 5), + "TWDTW_GAM_RFOR" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_gam(), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_rfor(), + multicores = 5)) + + +# TWDTW + Clustering Pattern Generator inside each lable (TWDTW_inCLUST) +# This method use Machine Learning on distances between patterns and time series data. +# +# Patterns are generated by intra class clustering followed by GAM. +TWDTW_inCLUST_experiments.lst <- list( + "TWDTW_inCLUST_SVM_radial" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_intracluster_patterns(k = 6), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_svm(formula = sits_formula_linear(), kernel = "radial"), + multicores = 5), + "TWDTW_inCLUST_LDA" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_intracluster_patterns(k = 6), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_lda(formula = sits_formula_linear()), + multicores = 5), + "TWDTW_inCLUST_QDA" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_intracluster_patterns(k = 6), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_qda(formula = sits_formula_linear()), + multicores = 5), + "TWDTW_inCLUST_MLR" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_intracluster_patterns(k = 6), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_mlr(formula = sits_formula_linear()), + multicores = 5), + "TWDTW_inCLUST_LASSO" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_intracluster_patterns(k = 6), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_glm(alpha = 1), + multicores = 5), + "TWDTW_inCLUST_RIDGE" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_intracluster_patterns(k = 6), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_glm(alpha = 0), + multicores = 5), + "TWDTW_inCLUST_RFOR" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_intracluster_patterns(k = 6), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_rfor(), + multicores = 5)) + + +# TWDTW + Clustering Pattern Generator (TWDTW_CLUSTER) +# This method use Machine Learning on distances between patterns and time series data. +# +# Patterns are generated by clustering followed by GAM. +TWDTW_CLUSTER_experiments.lst <- list( + "TWDTW_CLUSTER_SVM_radial" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_cluster_patterns(k = 24), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_svm(formula = sits_formula_linear(), kernel = "radial"), + multicores = 5), + "TWDTW_CLUSTER_LDA" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_cluster_patterns(k = 24), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_lda(formula = sits_formula_linear()), + multicores = 5), + "TWDTW_CLUSTER_QDA" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_cluster_patterns(k = 24), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_qda(formula = sits_formula_linear()), + multicores = 5), + "TWDTW_CLUSTER_MLR" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_cluster_patterns(k = 24), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_mlr(formula = sits_formula_linear()), + multicores = 5), + "TWDTW_CLUSTER_LASSO" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_cluster_patterns(k = 24), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_glm(alpha = 1), + multicores = 5), + "TWDTW_CLUSTER_RIDGE" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_cluster_patterns(k = 24), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_glm(alpha = 0), + multicores = 5), + "TWDTW_CLUSTER_RFOR" = list(data.tb = prodes.tb, + folds = 5, + pt_method = sits_cluster_patterns(k = 24), + dist_method = sits_TWDTW_distances(multicores = 3), + tr_method = sits_rfor(), + multicores = 5)) + + +# TIME SERIES SPREADED (TS_SPRD) +# This method use Machine Learning directly over time series data. +# The function called to spread time series as atributes in +# SITS distance format is `sits_spread_time_series()`. # -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8724 0.8871 0.6966 -# Specificity 0.8290 0.9544 0.9284 -# User Acc (Pos Pred Value) 0.8647 0.8333 0.7537 -# Neg Pred Value 0.8383 0.9705 0.9068 +# No pattern needs to be created. The attributes are the time series itself. +TS_SPRD_experiments.lst <- list( + "TS_SPRD_SVM_radial" = list(data.tb = positive_prodes.tb, + folds = 5, + pt_method = function(...) NULL, + dist_method = sits_spread_time_series(), + tr_method = sits_svm(formula = sits_formula_linear(), kernel = "radial"), + multicores = 5), + "TS_SPRD_LDA" = list(data.tb = positive_prodes.tb, + folds = 5, + pt_method = function(...) NULL, + dist_method = sits_spread_time_series(), + tr_method = sits_lda(formula = sits_formula_linear()), + multicores = 5), + "TS_SPRD_QDA" = list(data.tb = positive_prodes.tb, + folds = 5, + pt_method = function(...) NULL, + dist_method = sits_spread_time_series(), + tr_method = sits_qda(formula = sits_formula_linear()), + multicores = 5), + "TS_SPRD_MLR" = list(data.tb = positive_prodes.tb, + folds = 5, + pt_method = function(...) NULL, + dist_method = sits_spread_time_series(), + tr_method = sits_mlr(formula = sits_formula_linear()), + multicores = 5), + "TS_SPRD_LASSO" = list(data.tb = positive_prodes.tb, + folds = 5, + pt_method = function(...) NULL, + dist_method = sits_spread_time_series(), + tr_method = sits_glm(alpha = 1), + multicores = 5), + "TS_SPRD_RIDGE" = list(data.tb = positive_prodes.tb, + folds = 5, + pt_method = function(...) NULL, + dist_method = sits_spread_time_series(), + tr_method = sits_glm(alpha = 0), + multicores = 5), + "TS_SPRD_RFOR" = list(data.tb = positive_prodes.tb, + folds = 5, + pt_method = function(...) NULL, + dist_method = sits_spread_time_series(), + tr_method = sits_rfor(), + multicores = 5) +) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.mlr) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 110 22 -# Non_Forest 14 460 # -# Accuracy : 0.9406 -# 95% CI : (0.9187, 0.958) # -# Kappa : 0.8218 -# -# Prod Acc Forest : 0.8871 -# Prod Acc Non_Forest : 0.9544 -# User Acc Forest : 0.8333 -# User Acc Non_Forest : 0.9705 - +# ################################################################### -# _ _ ___ ___ ___ -# | | /_\ / __|/ __| / _ \ -# | |__ / _ \ \__ \\__ \| (_) | -# |____|/_/ \_\|___/|___/ \___/ -# -model.glm1 <- sits_train(dist_prodes.tb, sits_glm(alpha = 1)) -get("result_glm", envir = environment(model.glm1))$lambda.min -# [1] 0.003934933 +# TWDTW_GAM +TWDTW_GAM_start_time <- Sys.time() +TWDTW_GAM_kfolds.lst <- + TWDTW_GAM_experiments.lst %>% purrr::map(function(params){ + do.call(sits_kfold_validate, params) + }) +TWDTW_GAM_end_time <- Sys.time() + +TWDTW_GAM_results.lst <- TWDTW_GAM_kfolds.lst %>% purrr::map2(names(TWDTW_GAM_kfolds.lst), function(kfold, kfold.name){ + conf.mx <- kfold %>% sits_accuracy(conv2.lst) + conf.mx$name <- kfold.name + invisible(conf.mx) +}) + +# TWDTW_inCLUST +TWDTW_inCLUST_start_time <- Sys.time() +TWDTW_inCLUST_kfolds.lst <- + TWDTW_inCLUST_experiments.lst %>% purrr::map(function(params){ + do.call(sits_kfold_validate, params) + }) +TWDTW_inCLUST_end_time <- Sys.time() + +TWDTW_inCLUST_results.lst <- TWDTW_inCLUST_kfolds.lst %>% purrr::map2(names(TWDTW_inCLUST_kfolds.lst), function(kfold, kfold.name){ + conf.mx <- kfold %>% sits_accuracy(conv2.lst) + conf.mx$name <- kfold.name + invisible(conf.mx) +}) + +# TWDTW_CLUSTER +TWDTW_CLUSTER_start_time <- Sys.time() +TWDTW_CLUSTER_kfolds.lst <- + TWDTW_CLUSTER_experiments.lst %>% purrr::map(function(params){ + do.call(sits_kfold_validate, params) + }) +TWDTW_CLUSTER_end_time <- Sys.time() + +TWDTW_CLUSTER_results.lst <- TWDTW_CLUSTER_kfolds.lst %>% purrr::map2(names(TWDTW_CLUSTER_kfolds.lst), function(kfold, kfold.name){ + conf.mx <- kfold %>% sits_accuracy(conv2.lst) + conf.mx$name <- kfold.name + invisible(conf.mx) +}) + +# TS_SPRD +TS_SPRD_start_time <- Sys.time() +TS_SPRD_kfolds.lst <- + TS_SPRD_experiments.lst %>% purrr::map(function(params){ + do.call(sits_kfold_validate, params) + }) +TS_SPRD_end_time <- Sys.time() + +TS_SPRD_results.lst <- TS_SPRD_kfolds.lst %>% purrr::map2(names(TS_SPRD_kfolds.lst), function(kfold, kfold.name){ + conf.mx <- kfold %>% sits_accuracy(conv2.lst) + conf.mx$name <- kfold.name + invisible(conf.mx) +}) + + +working_dir = getwd() +sits_toXLSX(TWDTW_GAM_results.lst, file = paste0(working_dir, "_PRODES_TWDTW_GAM_accuracy.xlsx")) +sits_toXLSX(TWDTW_inCLUST_results.lst, file = paste0(working_dir, "_PRODES_TWDTW_inCLUST_accuracy.xlsx")) +sits_toXLSX(TWDTW_CLUSTER_results.lst, file = paste0(working_dir, "_PRODES_TWDTW_CLUSTER_accuracy.xlsx")) +sits_toXLSX(TS_SPRD_results.lst, file = paste0(working_dir, "_PRODES_TS_SPRD_accuracy.xlsx")) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm1) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 291 10 40 -# Forest 14 109 12 -# Pasture 32 5 93 -# -# Overall Statistics # -# Accuracy : 0.8135 -# 95% CI : (0.7802, 0.8438) -# -# Kappa : 0.684 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8635 0.8790 0.6414 -# Specificity 0.8141 0.9461 0.9197 -# User Acc (Pos Pred Value) 0.8534 0.8074 0.7154 -# Neg Pred Value 0.8264 0.9682 0.8908 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm1) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics # -# Reference -# Prediction Forest Non_Forest -# Forest 109 26 -# Non_Forest 15 456 -# -# Accuracy : 0.9323 -# 95% CI : (0.9093, 0.951) -# -# Kappa : 0.7988 -# -# Prod Acc Forest : 0.8790 -# Prod Acc Non_Forest : 0.9461 -# User Acc Forest : 0.8074 -# User Acc Non_Forest : 0.9682 - - -# ___ ___ ___ ___ ___ -# | _ \|_ _|| \ / __|| __| -# | / | | | |) || (_ || _| -# |_|_\|___||___/ \___||___| -# -model.glm2 <- sits_train(dist_prodes.tb, sits_glm(alpha = 0)) -get("result_glm", envir = environment(model.glm2))$lambda.min -# [1] 0.02149369 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm2) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 288 13 39 -# Forest 17 107 13 -# Pasture 32 4 93 -# -# Overall Statistics -# -# Accuracy : 0.8053 -# 95% CI : (0.7715, 0.8361) -# -# Kappa : 0.6704 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8546 0.8629 0.6414 -# Specificity 0.8067 0.9378 0.9219 -# User Acc (Pos Pred Value) 0.8471 0.7810 0.7209 -# Neg Pred Value 0.8158 0.9638 0.8910 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm2) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 107 30 -# Non_Forest 17 452 -# -# Accuracy : 0.9224 -# 95% CI : (0.8982, 0.9425) -# -# Kappa : 0.7707 -# -# Prod Acc Forest : 0.8629 -# Prod Acc Non_Forest : 0.9378 -# User Acc Forest : 0.7810 -# User Acc Non_Forest : 0.9638 - - -# ___ _ _ ___ ___ ___ ___ ___ ___ _____ -# | _ \| \| || \ | __|/ _ \ | _ \| __|/ __||_ _| -# | /| .` || |) |_ | _|| (_) || /| _| \__ \ | | -# |_|_\|_|\_||___/(_)|_| \___/ |_|_\|___||___/ |_| -# - -# random forest returns 1.0 of accuracy if all data is used for training. Reducing data training to 95% -model.rfor <- prodes.tb %>% sits_sample(frac = 0.95) %>% - sits_distances(patt_prodes.tb, dist_method = sits_TWDTW_distances(multicores = 10)) %>% - sits_train(sits_rfor()) - -# test on all data set -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.rfor) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 304 14 46 -# Forest 14 95 5 -# Pasture 19 15 94 -# -# Overall Statistics -# -# Accuracy : 0.8135 -# 95% CI : (0.7802, 0.8438) -# -# Kappa : 0.6768 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.9021 0.7661 0.6483 -# Specificity 0.7770 0.9606 0.9262 -# User Acc (Pos Pred Value) 0.8352 0.8333 0.7344 -# Neg Pred Value 0.8636 0.9411 0.8933 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.rfor) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 95 19 -# Non_Forest 29 463 -# -# Accuracy : 0.9208 -# 95% CI : (0.8964, 0.941) -# -# Kappa : 0.7491 -# -# Prod Acc Forest : 0.7661 -# Prod Acc Non_Forest : 0.9606 -# User Acc Forest : 0.8333 -# User Acc Non_Forest : 0.9411 - - - -# result PATT.DIST. intraCLUST. -# - SVM: 0.9769 * 0.9950 * -# - LDA: 0.9092 0.9307 -# - QDA: 0.9323 * 0.9802 * -# - MLR: 0.9175 0.9406 -# - LASSO: 0.9191 0.9323 -# - RIDGE: 0.9241 0.9224 -# - RFOR: 0.9125 0.9208 - -# -# -# ################################################################### - - -# _ __ _____ ___ _ ____ -# | |/ / | ___|/ _ \ | | | _ \ -# | ' / _____ | |_ | | | || | | | | | -# | . \|_____|| _| | |_| || |___ | |_| | -# |_|\_\ |_| \___/ |_____||____/ -# - -# The best "one-shot" results were: SVM and QDA. -# We processed k-fold validation for both methods - -# ___ __ __ __ __ -# / __|\ \ / /| \/ | -# \__ \ \ V / | |\/| | -# |___/ \_/ |_| |_| -# -svm.kfold <- - prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = sits_intracluster_patterns(k = 3), - dist_method = sits_TWDTW_distances(multicores = 5), - tr_method = sits_svm(formula = sits_formula_linear(), - kernel = "radial"), - multicores = 2) -svm.kfold %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 278 14 43 -# Forest 19 100 14 -# Pasture 40 10 88 -# -# Overall Statistics -# -# Accuracy : 0.769 -# 95% CI : (0.7333, 0.802) -# -# Kappa : 0.6105 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8249 0.8065 0.6069 -# Specificity 0.7881 0.9315 0.8915 -# User Acc (Pos Pred Value) 0.8299 0.7519 0.6377 -# Neg Pred Value 0.7823 0.9493 0.8782 - -svm.kfold %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 100 33 -# Non_Forest 24 449 -# -# Accuracy : 0.9059 -# 95% CI : (0.8799, 0.928) -# -# Kappa : 0.7186 -# -# Prod Acc Forest : 0.8065 -# Prod Acc Non_Forest : 0.9315 -# User Acc Forest : 0.7519 -# User Acc Non_Forest : 0.9493 - - - -# ___ ___ _ -# / _ \ | \ /_\ -# | (_) | | |) | / _ \ -# \__\_\ |___/ /_/ \_\ -# -qda.kfold <- - prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = sits_intracluster_patterns(k = 3), - dist_method = sits_TWDTW_distances(multicores = 5), - tr_method = sits_qda(formula = sits_formula_linear()), - multicores = 2) -qda.kfold %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 270 35 77 -# Forest 20 72 8 -# Pasture 47 17 60 -# -# Overall Statistics -# -# Accuracy : 0.6634 -# 95% CI : (0.6242, 0.7009) -# -# Kappa : 0.406 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8012 0.5806 0.4138 -# Specificity 0.5836 0.9419 0.8612 -# User Acc (Pos Pred Value) 0.7068 0.7200 0.4839 -# Neg Pred Value 0.7009 0.8972 0.8237 - -qda.kfold %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 72 28 -# Non_Forest 52 454 -# -# Accuracy : 0.868 -# 95% CI : (0.8384, 0.8939) -# -# Kappa : 0.563 -# -# Prod Acc Forest : 0.5806 -# Prod Acc Non_Forest : 0.9419 -# User Acc Forest : 0.7200 -# User Acc Non_Forest : 0.8972 - - -# result K-FOLD PATT.DIST. K-FOLD intraCLUST -# - SVM: 0.8960 (0.8690, 0.9192) 0.9059 (0.8799, 0.9280) * -# - QDA: 0.9026 (0.8762, 0.9251) * 0.8680 (0.8384, 0.8939) - - -# -# -# ################################################################### -# ################################################################### -# ################################################################### - - - - -# _____ _ _ _ _____ _______ ______ _____ -# / ____|| | | | | | / ____||__ __|| ____|| __ \ -# | | | | | | | || (___ | | | |__ | |__) | -# | | | | | | | | \___ \ | | | __| | _ / -# | |____ | |____| |__| | ____) | | | | |____ | | \ \ -# \_____||______|\____/ |_____/ |_| |______||_| \_\ -# -# - -# make clusters -library(dtwclust) - -sits_cluster_patterns <- function(data.tb = NULL, k = 3){ - - result_fun1 <- function(data.tb){ - dendro.obj <- data.tb %>% sits_dendrogram() - - sits_cluster(data.tb, dendro.obj, k) %>% - dplyr::mutate(label = paste0("Cluster", cluster)) %>% - sits_foreach(cluster, fun = function(tb) tb %>% sits_gam()) - } - - result_fun2 <- function(k = k){ - sits_cluster(data.tb, dendro.obj, k) %>% - dplyr::mutate(label = paste0("Cluster", cluster)) %>% - sits_foreach(cluster, fun = function(tb) tb %>% sits_gam()) - } - - dendro.obj <- NULL - if (!is.null(data.tb)){ - dendro.obj <- data.tb %>% sits_dendrogram() - return(result_fun2) - } - return(result_fun1) -} - -# create patterns and plot them -patt_cluster_gen <- prodes.tb %>% sits_cluster_patterns() -patt_prodes.tb <- patt_cluster_gen(12) -sits_plot_patterns(patt_prodes.tb) - -# create distances -dist_prodes.tb <- prodes.tb %>% sits_distances(patt_prodes.tb, dist_method = sits_TWDTW_distances(multicores = 10)) - - -# _____ _____ ____ _____ ____ -# |_ _|| ____|/ ___||_ _|/ ___| -# | | | _| \___ \ | | \___ \ -# | | | |___ ___) | | | ___) | -# |_| |_____||____/ |_| |____/ -# -# - -# start "one-shot" tests. - - -# ___ __ __ __ __ -# / __|\ \ / /| \/ | -# \__ \ \ V / | |\/| | -# |___/ \_/ |_| |_| -# -model.svm <- sits_train(dist_prodes.tb, sits_svm(formula = sits_formula_linear(), - kernel = "radial")) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.svm) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 333 2 3 -# Forest 1 122 0 -# Pasture 3 0 142 -# -# Overall Statistics -# -# Accuracy : 0.9851 -# 95% CI : (0.972, 0.9932) -# -# Kappa : 0.9749 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.9881 0.9839 0.9793 -# Specificity 0.9814 0.9979 0.9935 -# User Acc (Pos Pred Value) 0.9852 0.9919 0.9793 -# Neg Pred Value 0.9851 0.9959 0.9935 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.svm) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 122 1 -# Non_Forest 2 481 -# -# Accuracy : 0.995 -# 95% CI : (0.9856, 0.999) -# -# Kappa : 0.9847 -# -# Prod Acc Forest : 0.9839 -# Prod Acc Non_Forest : 0.9979 -# User Acc Forest : 0.9919 -# User Acc Non_Forest : 0.9959 - - -# _ ___ _ -# | | | \ /_\ -# | |__ | |) |/ _ \ -# |____||___//_/ \_\ -# -model.lda <- sits_train(dist_prodes.tb, sits_lda(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.lda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 279 11 36 -# Forest 17 106 12 -# Pasture 41 7 97 -# -# Overall Statistics -# -# Accuracy : 0.7954 -# 95% CI : (0.761, 0.8268) -# -# Kappa : 0.6578 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8279 0.8548 0.6690 -# Specificity 0.8253 0.9398 0.8959 -# User Acc (Pos Pred Value) 0.8558 0.7852 0.6690 -# Neg Pred Value 0.7929 0.9618 0.8959 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.lda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 106 29 -# Non_Forest 18 453 -# -# Accuracy : 0.9224 -# 95% CI : (0.8982, 0.9425) -# -# Kappa : 0.7693 -# -# Prod Acc Forest : 0.8548 -# Prod Acc Non_Forest : 0.9398 -# User Acc Forest : 0.7852 -# User Acc Non_Forest : 0.9618 - - -# ___ ___ _ -# / _ \ | \ /_\ -# | (_) || |) |/ _ \ -# \__\_\|___//_/ \_\ -# -model.qda <- sits_train(dist_prodes.tb, sits_qda(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.qda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 325 3 3 -# Forest 4 120 4 -# Pasture 8 1 138 -# -# Overall Statistics -# -# Accuracy : 0.962 -# 95% CI : (0.9436, 0.9758) -# -# Kappa : 0.9362 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.9644 0.9677 0.9517 -# Specificity 0.9777 0.9834 0.9805 -# User Acc (Pos Pred Value) 0.9819 0.9375 0.9388 -# Neg Pred Value 0.9564 0.9916 0.9847 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.qda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 120 8 -# Non_Forest 4 474 -# -# Accuracy : 0.9802 -# 95% CI : (0.9657, 0.9897) -# -# Kappa : 0.9399 -# -# Prod Acc Forest : 0.9677 -# Prod Acc Non_Forest : 0.9834 -# User Acc Forest : 0.9375 -# User Acc Non_Forest : 0.9916 - - -# __ __ _ ___ -# | \/ || | | _ \ -# | |\/| || |__ | / -# |_| |_||____||_|_\ -# -model.mlr <- sits_train(dist_prodes.tb, sits_mlr(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.mlr) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 290 12 31 -# Forest 14 106 11 -# Pasture 33 6 103 -# -# Overall Statistics -# -# Accuracy : 0.8234 -# 95% CI : (0.7907, 0.853) -# -# Kappa : 0.7028 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8605 0.8548 0.7103 -# Specificity 0.8401 0.9481 0.9154 -# User Acc (Pos Pred Value) 0.8709 0.8092 0.7254 -# Neg Pred Value 0.8278 0.9621 0.9095 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.mlr) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 106 25 -# Non_Forest 18 457 -# -# Accuracy : 0.929 -# 95% CI : (0.9056, 0.9482) -# -# Kappa : 0.7865 -# -# Prod Acc Forest : 0.8548 -# Prod Acc Non_Forest : 0.9481 -# User Acc Forest : 0.8092 -# User Acc Non_Forest : 0.9621 - - -# _ _ ___ ___ ___ -# | | /_\ / __|/ __| / _ \ -# | |__ / _ \ \__ \\__ \| (_) | -# |____|/_/ \_\|___/|___/ \___/ -# -model.glm1 <- sits_train(dist_prodes.tb, sits_glm(alpha = 1)) -get("result_glm", envir = environment(model.glm1))$lambda.min -# [1] 0.004342837 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm1) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 281 12 36 -# Forest 15 106 14 -# Pasture 41 6 95 -# -# Overall Statistics -# -# Accuracy : 0.7954 -# 95% CI : (0.761, 0.8268) -# -# Kappa : 0.6569 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8338 0.8548 0.6552 -# Specificity 0.8216 0.9398 0.8980 -# User Acc (Pos Pred Value) 0.8541 0.7852 0.6690 -# Neg Pred Value 0.7978 0.9618 0.8922 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm1) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst)) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 106 29 -# Non_Forest 18 453 -# -# Accuracy : 0.9224 -# 95% CI : (0.8982, 0.9425) -# -# Kappa : 0.7693 -# -# Prod Acc Forest : 0.8548 -# Prod Acc Non_Forest : 0.9398 -# User Acc Forest : 0.7852 -# User Acc Non_Forest : 0.9618 - - -# ___ ___ ___ ___ ___ -# | _ \|_ _|| \ / __|| __| -# | / | | | |) || (_ || _| -# |_|_\|___||___/ \___||___| -# -model.glm2 <- sits_train(dist_prodes.tb, sits_glm(alpha = 0)) -get("result_glm", envir = environment(model.glm2))$lambda.min -# [1] 0.02372178 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm2) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 282 9 35 -# Forest 18 109 14 -# Pasture 37 6 96 -# -# Overall Statistics -# -# Accuracy : 0.8036 -# 95% CI : (0.7697, 0.8345) -# -# Kappa : 0.6718 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8368 0.8790 0.6621 -# Specificity 0.8364 0.9336 0.9067 -# User Acc (Pos Pred Value) 0.8650 0.7730 0.6906 -# Neg Pred Value 0.8036 0.9677 0.8951 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm2) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 109 32 -# Non_Forest 15 450 -# -# Accuracy : 0.9224 -# 95% CI : (0.8982, 0.9425) -# -# Kappa : 0.7733 -# -# Prod Acc Forest : 0.8790 -# Prod Acc Non_Forest : 0.9336 -# User Acc Forest : 0.7730 -# User Acc Non_Forest : 0.9677 - - -# ___ _ _ ___ ___ ___ ___ ___ ___ _____ -# | _ \| \| || \ | __|/ _ \ | _ \| __|/ __||_ _| -# | /| .` || |) |_ | _|| (_) || /| _| \__ \ | | -# |_|_\|_|\_||___/(_)|_| \___/ |_|_\|___||___/ |_| -# - -# random forest returns 1.0 of accuracy if all data is used for training. Reducing data training to 95% -model.rfor <- prodes.tb %>% sits_sample(frac = 0.95) %>% - sits_distances(patt_prodes.tb, dist_method = sits_TWDTW_distances(multicores = 10)) %>% - sits_train(sits_rfor()) - -# test on all data set -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.rfor) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 300 12 43 -# Forest 14 101 12 -# Pasture 23 11 90 -# -# Overall Statistics -# -# Accuracy : 0.8102 -# 95% CI : (0.7767, 0.8407) -# -# Kappa : 0.6742 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8902 0.8145 0.6207 -# Specificity 0.7955 0.9461 0.9262 -# User Acc (Pos Pred Value) 0.8451 0.7953 0.7258 -# Neg Pred Value 0.8526 0.9520 0.8859 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.rfor) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 101 26 -# Non_Forest 23 456 -# -# Accuracy : 0.9191 -# 95% CI : (0.8945, 0.9396) -# -# Kappa : 0.7538 -# -# Prod Acc Forest : 0.8145 -# Prod Acc Non_Forest : 0.9461 -# User Acc Forest : 0.7953 -# User Acc Non_Forest : 0.9520 - - - -# result PATT.DIST. intraCLUST. CLUST -# - SVM: 0.9769 * 0.9950 * 0.9950 * -# - LDA: 0.9092 0.9307 0.9224 -# - QDA: 0.9323 * 0.9802 * 0.9802 * -# - MLR: 0.9175 0.9406 0.9290 -# - LASSO: 0.9191 0.9323 0.9224 -# - RIDGE: 0.9241 0.9224 0.9224 -# - RFOR: 0.9125 0.9208 0.9191 - -# -# -# ################################################################### - - -# _ __ _____ ___ _ ____ -# | |/ / | ___|/ _ \ | | | _ \ -# | ' / _____ | |_ | | | || | | | | | -# | . \|_____|| _| | |_| || |___ | |_| | -# |_|\_\ |_| \___/ |_____||____/ -# - -# The best "one-shot" results were: SVM and QDA. -# We processed k-fold validation for both methods - -# ___ __ __ __ __ -# / __|\ \ / /| \/ | -# \__ \ \ V / | |\/| | -# |___/ \_/ |_| |_| -# -svm.kfold <- - prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = sits_cluster_patterns(k = 12), - dist_method = sits_TWDTW_distances(multicores = 4), - tr_method = sits_svm(formula = sits_formula_linear(), - kernel = "radial"), - multicores = 4) -svm.kfold %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 289 14 48 -# Forest 14 96 11 -# Pasture 34 14 86 -# -# Overall Statistics -# -# Accuracy : 0.7772 -# 95% CI : (0.742, 0.8098) -# -# Kappa : 0.6186 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8576 0.7742 0.5931 -# Specificity 0.7695 0.9481 0.8959 -# User Acc (Pos Pred Value) 0.8234 0.7934 0.6418 -# Neg Pred Value 0.8118 0.9423 0.8750 - -svm.kfold %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 96 25 -# Non_Forest 28 457 -# -# Accuracy : 0.9125 -# 95% CI : (0.8872, 0.9338) -# -# Kappa : 0.7289 -# -# Prod Acc Forest : 0.7742 -# Prod Acc Non_Forest : 0.9481 -# User Acc Forest : 0.7934 -# User Acc Non_Forest : 0.9423 - - - -# ___ ___ _ -# / _ \ | \ /_\ -# | (_) | | |) | / _ \ -# \__\_\ |___/ /_/ \_\ -# -qda.kfold <- - prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = sits_cluster_patterns(k = 12), - dist_method = sits_TWDTW_distances(multicores = 4), - tr_method = sits_qda(formula = sits_formula_linear()), - multicores = 4) -qda.kfold %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 281 33 59 -# Forest 20 79 7 -# Pasture 36 12 79 -# -# Overall Statistics -# -# Accuracy : 0.7244 -# 95% CI : (0.687, 0.7597) -# -# Kappa : 0.518 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8338 0.6371 0.5448 -# Specificity 0.6580 0.9440 0.8959 -# User Acc (Pos Pred Value) 0.7534 0.7453 0.6220 -# Neg Pred Value 0.7597 0.9100 0.8622 - -qda.kfold %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 79 27 -# Non_Forest 45 455 -# -# Accuracy : 0.8812 -# 95% CI : (0.8527, 0.9059) -# -# Kappa : 0.6142 -# -# Prod Acc Forest : 0.6371 -# Prod Acc Non_Forest : 0.9440 -# User Acc Forest : 0.7453 -# User Acc Non_Forest : 0.9100 - - -# result K-FOLD PATT.DIST. K-FOLD intraCLUST K-FOLD CLUST -# - SVM: 0.8960 (0.8690, 0.9192) 0.9059 (0.8799, 0.9280) * 0.9125 (0.8872, 0.9338) * -# - QDA: 0.9026 (0.8762, 0.9251) * 0.8680 (0.8384, 0.8939) 0.8812 (0.8527, 0.9059) - -# -# -# ################################################################### -# ################################################################### -# ################################################################### - - - - - -# _____ _ _ _____ _____ _______ _______ -# | __ \ /\ | \ | | | __ \ | __ \ /\ |__ __| |__ __| -# | |__) | / \ | \| | | | | | | |__) | / \ | | | | -# | _ / / /\ \ | . ` | | | | | | ___/ / /\ \ | | | | -# | | \ \ / ____ \ | |\ | | |__| | _ | | / ____ \ | | | | _ -# |_| \_\ /_/ \_\ |_| \_| |_____/ (_) |_| /_/ \_\ |_| |_| (_) -# -# - -sits_random_patterns <- function(data.tb = NULL, n){ - - result_fun <- function(data.tb){ - values <- seq(n) %>% purrr::map(function(i){ - ts.tb <- prodes.tb$time_series[[1]] - ts.tb[2:NCOL(ts.tb)] <- ts.tb[2:NCOL(ts.tb)] %>% - purrr::map(function(band){ - rnd <- cumsum(runif(n = 5 + length(band), min = -0.4, max = 0.4)[-5:0]) - }) - ts.tb - }) - sits_tibble() %>% - tibble::add_row(longitude = 0.0, - latitude = 0.0, - start_date = data.tb$start_date[[1]], - end_date = data.tb$end_date[[1]], - label = paste0("Random.", seq(n)), - coverage = "Random", - time_series = values) - } - - if (is.null(data.tb)) - return(result_fun) - return(result_fun(data.tb)) -} - -# create patterns and plot them -patt_random_gen <- sits_random_patterns(n = 2) -patt_prodes.tb <- prodes.tb %>% patt_random_gen() -sits_plot_patterns(patt_prodes.tb) - -# create distances -dist_prodes.tb <- prodes.tb %>% sits_distances(patt_prodes.tb, dist_method = sits_TWDTW_distances(multicores = 10)) - - -# _____ _____ ____ _____ ____ -# |_ _|| ____|/ ___||_ _|/ ___| -# | | | _| \___ \ | | \___ \ -# | | | |___ ___) | | | ___) | -# |_| |_____||____/ |_| |____/ -# -# - -# start "one-shot" tests. - - -# ___ __ __ __ __ -# / __|\ \ / /| \/ | -# \__ \ \ V / | |\/| | -# |___/ \_/ |_| |_| -# -model.svm <- sits_train(dist_prodes.tb, sits_svm(formula = sits_formula_linear(), - kernel = "radial")) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.svm) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 326 3 11 -# Forest 10 120 0 -# Pasture 1 1 134 -# -# Overall Statistics -# -# Accuracy : 0.9571 -# 95% CI : (0.9378, 0.9718) -# -# Kappa : 0.9273 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.9674 0.9677 0.9241 -# Specificity 0.9480 0.9793 0.9957 -# User Acc (Pos Pred Value) 0.9588 0.9231 0.9853 -# Neg Pred Value 0.9586 0.9916 0.9766 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.svm) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 120 10 -# Non_Forest 4 472 -# -# Accuracy : 0.9769 -# 95% CI : (0.9615, 0.9873) -# -# Kappa : 0.9303 -# -# Prod Acc Forest : 0.9677 -# Prod Acc Non_Forest : 0.9793 -# User Acc Forest : 0.9231 -# User Acc Non_Forest : 0.9916 - - -# _ ___ _ -# | | | \ /_\ -# | |__ | |) |/ _ \ -# |____||___//_/ \_\ -# -model.lda <- sits_train(dist_prodes.tb, sits_lda(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.lda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 279 11 36 -# Forest 17 106 12 -# Pasture 41 7 97 -# -# Overall Statistics -# -# Accuracy : 0.7954 -# 95% CI : (0.761, 0.8268) -# -# Kappa : 0.6578 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8279 0.8548 0.6690 -# Specificity 0.8253 0.9398 0.8959 -# User Acc (Pos Pred Value) 0.8558 0.7852 0.6690 -# Neg Pred Value 0.7929 0.9618 0.8959 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.lda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 106 29 -# Non_Forest 18 453 -# -# Accuracy : 0.9224 -# 95% CI : (0.8982, 0.9425) -# -# Kappa : 0.7693 -# -# Prod Acc Forest : 0.8548 -# Prod Acc Non_Forest : 0.9398 -# User Acc Forest : 0.7852 -# User Acc Non_Forest : 0.9618 - - -# ___ ___ _ -# / _ \ | \ /_\ -# | (_) || |) |/ _ \ -# \__\_\|___//_/ \_\ -# -model.qda <- sits_train(dist_prodes.tb, sits_qda(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.qda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 325 3 3 -# Forest 4 120 4 -# Pasture 8 1 138 -# -# Overall Statistics -# -# Accuracy : 0.962 -# 95% CI : (0.9436, 0.9758) -# -# Kappa : 0.9362 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.9644 0.9677 0.9517 -# Specificity 0.9777 0.9834 0.9805 -# User Acc (Pos Pred Value) 0.9819 0.9375 0.9388 -# Neg Pred Value 0.9564 0.9916 0.9847 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.qda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 120 8 -# Non_Forest 4 474 -# -# Accuracy : 0.9802 -# 95% CI : (0.9657, 0.9897) -# -# Kappa : 0.9399 -# -# Prod Acc Forest : 0.9677 -# Prod Acc Non_Forest : 0.9834 -# User Acc Forest : 0.9375 -# User Acc Non_Forest : 0.9916 - - -# __ __ _ ___ -# | \/ || | | _ \ -# | |\/| || |__ | / -# |_| |_||____||_|_\ -# -model.mlr <- sits_train(dist_prodes.tb, sits_mlr(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.mlr) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 290 12 31 -# Forest 14 106 11 -# Pasture 33 6 103 -# -# Overall Statistics -# -# Accuracy : 0.8234 -# 95% CI : (0.7907, 0.853) -# -# Kappa : 0.7028 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8605 0.8548 0.7103 -# Specificity 0.8401 0.9481 0.9154 -# User Acc (Pos Pred Value) 0.8709 0.8092 0.7254 -# Neg Pred Value 0.8278 0.9621 0.9095 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.mlr) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 106 25 -# Non_Forest 18 457 -# -# Accuracy : 0.929 -# 95% CI : (0.9056, 0.9482) -# -# Kappa : 0.7865 -# -# Prod Acc Forest : 0.8548 -# Prod Acc Non_Forest : 0.9481 -# User Acc Forest : 0.8092 -# User Acc Non_Forest : 0.9621 - - -# _ _ ___ ___ ___ -# | | /_\ / __|/ __| / _ \ -# | |__ / _ \ \__ \\__ \| (_) | -# |____|/_/ \_\|___/|___/ \___/ -# -model.glm1 <- sits_train(dist_prodes.tb, sits_glm(alpha = 1)) -get("result_glm", envir = environment(model.glm1))$lambda.min -# [1] 0.004342837 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm1) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 281 12 36 -# Forest 15 106 14 -# Pasture 41 6 95 -# -# Overall Statistics -# -# Accuracy : 0.7954 -# 95% CI : (0.761, 0.8268) -# -# Kappa : 0.6569 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8338 0.8548 0.6552 -# Specificity 0.8216 0.9398 0.8980 -# User Acc (Pos Pred Value) 0.8541 0.7852 0.6690 -# Neg Pred Value 0.7978 0.9618 0.8922 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm1) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 106 29 -# Non_Forest 18 453 -# -# Accuracy : 0.9224 -# 95% CI : (0.8982, 0.9425) -# -# Kappa : 0.7693 -# -# Prod Acc Forest : 0.8548 -# Prod Acc Non_Forest : 0.9398 -# User Acc Forest : 0.7852 -# User Acc Non_Forest : 0.9618 - - -# ___ ___ ___ ___ ___ -# | _ \|_ _|| \ / __|| __| -# | / | | | |) || (_ || _| -# |_|_\|___||___/ \___||___| -# -model.glm2 <- sits_train(dist_prodes.tb, sits_glm(alpha = 0)) -get("result_glm", envir = environment(model.glm2))$lambda.min -# [1] 0.02372178 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm2) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 282 9 35 -# Forest 18 109 14 -# Pasture 37 6 96 -# -# Overall Statistics -# -# Accuracy : 0.8036 -# 95% CI : (0.7697, 0.8345) -# -# Kappa : 0.6718 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8368 0.8790 0.6621 -# Specificity 0.8364 0.9336 0.9067 -# User Acc (Pos Pred Value) 0.8650 0.7730 0.6906 -# Neg Pred Value 0.8036 0.9677 0.8951 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.glm2) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 109 32 -# Non_Forest 15 450 -# -# Accuracy : 0.9224 -# 95% CI : (0.8982, 0.9425) -# -# Kappa : 0.7733 -# -# Prod Acc Forest : 0.8790 -# Prod Acc Non_Forest : 0.9336 -# User Acc Forest : 0.7730 -# User Acc Non_Forest : 0.9677 - - -# ___ _ _ ___ ___ ___ ___ ___ ___ _____ -# | _ \| \| || \ | __|/ _ \ | _ \| __|/ __||_ _| -# | /| .` || |) |_ | _|| (_) || /| _| \__ \ | | -# |_|_\|_|\_||___/(_)|_| \___/ |_|_\|___||___/ |_| -# - -# random forest returns 1.0 of accuracy if all data is used for training. Reducing data training to 95% -model.rfor <- prodes.tb %>% sits_sample(frac = 0.95) %>% - sits_distances(patt_prodes.tb, dist_method = sits_TWDTW_distances(multicores = 10)) %>% - sits_train(sits_rfor()) - -# test on all data set -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.rfor) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 300 12 43 -# Forest 14 101 12 -# Pasture 23 11 90 -# -# Overall Statistics -# -# Accuracy : 0.8102 -# 95% CI : (0.7767, 0.8407) -# -# Kappa : 0.6742 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8902 0.8145 0.6207 -# Specificity 0.7955 0.9461 0.9262 -# User Acc (Pos Pred Value) 0.8451 0.7953 0.7258 -# Neg Pred Value 0.8526 0.9520 0.8859 - -prodes.tb$predicted <- sits_predict(dist_prodes.tb, model.rfor) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 101 26 -# Non_Forest 23 456 -# -# Accuracy : 0.9191 -# 95% CI : (0.8945, 0.9396) -# -# Kappa : 0.7538 -# -# Prod Acc Forest : 0.8145 -# Prod Acc Non_Forest : 0.9461 -# User Acc Forest : 0.7953 -# User Acc Non_Forest : 0.9520 - - - -# result PATT.DIST. intraCLUST. CLUST -# - SVM: 0.9769 * 0.9950 * 0.9950 * -# - LDA: 0.9092 0.9307 0.9224 -# - QDA: 0.9323 * 0.9802 * 0.9802 * -# - MLR: 0.9175 0.9406 0.9290 -# - LASSO: 0.9191 0.9323 0.9224 -# - RIDGE: 0.9241 0.9224 0.9224 -# - RFOR: 0.9125 0.9208 0.9191 - -# -# -# ################################################################### - - -# _ __ _____ ___ _ ____ -# | |/ / | ___|/ _ \ | | | _ \ -# | ' / _____ | |_ | | | || | | | | | -# | . \|_____|| _| | |_| || |___ | |_| | -# |_|\_\ |_| \___/ |_____||____/ -# - -# The best "one-shot" results were: SVM and QDA. -# We processed k-fold validation for both methods - -# ___ __ __ __ __ -# / __|\ \ / /| \/ | -# \__ \ \ V / | |\/| | -# |___/ \_/ |_| |_| -# -svm.kfold <- - prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = sits_random_patterns(k = 12), - dist_method = sits_TWDTW_distances(multicores = 4), - tr_method = sits_svm(formula = sits_formula_linear(), - kernel = "radial"), - multicores = 4) -svm.kfold %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 289 14 48 -# Forest 14 96 11 -# Pasture 34 14 86 -# -# Overall Statistics -# -# Accuracy : 0.7772 -# 95% CI : (0.742, 0.8098) -# -# Kappa : 0.6186 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8576 0.7742 0.5931 -# Specificity 0.7695 0.9481 0.8959 -# User Acc (Pos Pred Value) 0.8234 0.7934 0.6418 -# Neg Pred Value 0.8118 0.9423 0.8750 - -svm.kfold %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 96 25 -# Non_Forest 28 457 -# -# Accuracy : 0.9125 -# 95% CI : (0.8872, 0.9338) -# -# Kappa : 0.7289 -# -# Prod Acc Forest : 0.7742 -# Prod Acc Non_Forest : 0.9481 -# User Acc Forest : 0.7934 -# User Acc Non_Forest : 0.9423 - - - -# ___ ___ _ -# / _ \ | \ /_\ -# | (_) | | |) | / _ \ -# \__\_\ |___/ /_/ \_\ -# -qda.kfold <- - prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = sits_cluster_patterns(k = 12), - dist_method = sits_TWDTW_distances(multicores = 4), - tr_method = sits_qda(formula = sits_formula_linear()), - multicores = 4) -qda.kfold %>% sits_accuracy(conv.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Clear_Cut Forest Pasture -# Clear_Cut 281 33 59 -# Forest 20 79 7 -# Pasture 36 12 79 -# -# Overall Statistics -# -# Accuracy : 0.7244 -# 95% CI : (0.687, 0.7597) -# -# Kappa : 0.518 -# -# Statistics by Class: -# -# Class: Clear_Cut Class: Forest Class: Pasture -# Prod Acc (Sensitivity) 0.8338 0.6371 0.5448 -# Specificity 0.6580 0.9440 0.8959 -# User Acc (Pos Pred Value) 0.7534 0.7453 0.6220 -# Neg Pred Value 0.7597 0.9100 0.8622 - -qda.kfold %>% sits_accuracy(conv2.lst) -# Confusion Matrix and Statistics -# -# Reference -# Prediction Forest Non_Forest -# Forest 79 27 -# Non_Forest 45 455 -# -# Accuracy : 0.8812 -# 95% CI : (0.8527, 0.9059) -# -# Kappa : 0.6142 -# -# Prod Acc Forest : 0.6371 -# Prod Acc Non_Forest : 0.9440 -# User Acc Forest : 0.7453 -# User Acc Non_Forest : 0.9100 - - -# result K-FOLD PATT.DIST. K-FOLD intraCLUST K-FOLD CLUST -# - SVM: 0.8960 (0.8690, 0.9192) 0.9059 (0.8799, 0.9280) * 0.9125 (0.8872, 0.9338) * -# - QDA: 0.9026 (0.8762, 0.9251) * 0.8680 (0.8384, 0.8939) 0.8812 (0.8527, 0.9059) - -# -# -# ################################################################### -# ################################################################### -# ################################################################### - - - -# _______ _____ _____ _____ _____ ______ _____ -# |__ __|/ ____| / ____|| __ \ | __ \ | ____| /\ | __ \ -# | | | (___ | (___ | |__) || |__) || |__ / \ | | | | -# | | \___ \ \___ \ | ___/ | _ / | __| / /\ \ | | | | -# | | ____) |_ ____) || | | | \ \ | |____ / ____ \ | |__| | -# |_| |_____/(_) |_____/ |_| |_| \_\|______|/_/ \_\|_____/ -# -# This method use Machine Learning directly over time series data. -# The function called to spread time series as atributes in -# SITS distance format is `sits_distances_from_data()`. -# -# No pattern needs to be created. The attributes are the time series itself. - -tssp_prodes.tb <- prodes.tb %>% sits_distances_from_data() - - -# -# -# ################################################################### - - -# _____ _____ ____ _____ ____ -# |_ _|| ____|/ ___||_ _|/ ___| -# | | | _| \___ \ | | \___ \ -# | | | |___ ___) | | | ___) | -# |_| |_____||____/ |_| |____/ -# - - -# start of "one-shot" tests - - -# ___ __ __ __ __ -# / __|\ \ / /| \/ | -# \__ \ \ V / | |\/| | -# |___/ \_/ |_| |_| -# -tssp.svm <- sits_train(tssp_prodes.tb, sits_svm(formula = sits_formula_linear(), - kernel = "radial")) -prodes.tb$predicted <- sits_predict(tssp_prodes.tb, tssp.svm) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 146 0 0 -# deforestation2015 0 191 0 -# primary_forest 0 0 74 -# -# Overall Statistics -# -# Accuracy : 1 -# 95% CI : (0.9911, 1) -# -# Kappa : 1 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 1 1 1 -# Specificity 1 1 1 -# User Acc (Pos Pred Value) 1 1 1 -# Neg Pred Value 1 1 1 - - -# _ ___ _ -# | | | \ /_\ -# | |__ | |) |/ _ \ -# |____||___//_/ \_\ -# -tssp.lda <- sits_train(tssp_prodes.tb, sits_lda(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(tssp_prodes.tb, tssp.lda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 141 5 3 -# deforestation2015 3 182 0 -# primary_forest 2 4 71 -# -# Overall Statistics -# -# Accuracy : 0.9586 -# 95% CI : (0.9346, 0.9757) -# -# Kappa : 0.9342 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 0.9658 0.9529 0.9595 -# Specificity 0.9698 0.9864 0.9822 -# User Acc (Pos Pred Value) 0.9463 0.9838 0.9221 -# Neg Pred Value 0.9809 0.9602 0.9910 - - -# ___ ___ _ -# / _ \ | \ /_\ -# | (_) || |) |/ _ \ -# \__\_\|___//_/ \_\ -# -tssp.qda <- sits_train(tssp_prodes.tb, sits_qda(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(tssp_prodes.tb, tssp.qda) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 146 0 0 -# deforestation2015 0 191 0 -# primary_forest 0 0 74 -# -# Overall Statistics -# -# Accuracy : 1 -# 95% CI : (0.9911, 1) -# -# Kappa : 1 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 1 1 1 -# Specificity 1 1 1 -# User Acc (Pos Pred Value) 1 1 1 -# Neg Pred Value 1 1 1 - - -# __ __ _ ___ -# | \/ || | | _ \ -# | |\/| || |__ | / -# |_| |_||____||_|_\ -# -tssp.mlr <- sits_train(tssp_prodes.tb, sits_mlr(formula = sits_formula_linear())) -prodes.tb$predicted <- sits_predict(tssp_prodes.tb, tssp.mlr) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 146 0 0 -# deforestation2015 0 191 0 -# primary_forest 0 0 74 -# -# Overall Statistics -# -# Accuracy : 1 -# 95% CI : (0.9911, 1) -# -# Kappa : 1 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 1 1 1 -# Specificity 1 1 1 -# User Acc (Pos Pred Value) 1 1 1 -# Neg Pred Value 1 1 1 - - -# _ _ ___ ___ ___ -# | | /_\ / __|/ __| / _ \ -# | |__ / _ \ \__ \\__ \| (_) | -# |____|/_/ \_\|___/|___/ \___/ -# - -# glm use log function so translate time series values to strictly positive numbers: -positive_prodes.tb <- prodes.tb %>% sits_apply(function(band) (1 + 9 * band) ** 2) -positive_tssp_prodes.tb <- positive_prodes.tb %>% sits_distances_from_data() - -tssp.glm1 <- sits_train(positive_tssp_prodes.tb, sits_glm(alpha = 1)) -get("result_glm", envir = environment(tssp.glm1))$lambda.min -# [1] 0.009024855 - -prodes.tb$predicted <- sits_predict(positive_tssp_prodes.tb, tssp.glm1) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 136 10 2 -# deforestation2015 7 179 1 -# primary_forest 3 2 71 -# -# Overall Statistics -# -# Accuracy : 0.9392 -# 95% CI : (0.9115, 0.9603) -# -# Kappa : 0.903 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 0.9315 0.9372 0.9595 -# Specificity 0.9547 0.9636 0.9852 -# User Acc (Pos Pred Value) 0.9189 0.9572 0.9342 -# Neg Pred Value 0.9620 0.9464 0.9910 - - -# ___ ___ ___ ___ ___ -# | _ \|_ _|| \ / __|| __| -# | / | | | |) || (_ || _| -# |_|_\|___||___/ \___||___| -# - -# glm use log function so translate time series values to strictly positive numbers: -positive_prodes.tb <- prodes.tb %>% sits_apply(function(band) (1 + 9 * band) ** 2) -positive_tssp_prodes.tb <- positive_prodes.tb %>% sits_distances_from_data() - -tssp.glm2 <- sits_train(positive_tssp_prodes.tb, sits_glm(alpha = 0)) -get("result_glm", envir = environment(tssp.glm2))$lambda.min -# [1] 0.03095949 - -prodes.tb$predicted <- sits_predict(positive_tssp_prodes.tb, tssp.glm2) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 139 8 0 -# deforestation2015 5 182 0 -# primary_forest 2 1 74 -# -# Overall Statistics -# -# Accuracy : 0.9611 -# 95% CI : (0.9375, 0.9776) -# -# Kappa : 0.938 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 0.9521 0.9529 1.0000 -# Specificity 0.9698 0.9773 0.9911 -# User Acc (Pos Pred Value) 0.9456 0.9733 0.9610 -# Neg Pred Value 0.9735 0.9598 1.0000 - - -# ___ _ _ ___ ___ ___ ___ ___ ___ _____ -# | _ \| \| || \ | __|/ _ \ | _ \| __|/ __||_ _| -# | /| .` || |) |_ | _|| (_) || /| _| \__ \ | | -# |_|_\|_|\_||___/(_)|_| \___/ |_|_\|___||___/ |_| -# -tssp.rfor <- tssp_prodes.tb %>% sits_train(sits_rfor()) -prodes.tb$predicted <- sits_predict(positive_tssp_prodes.tb, tssp.rfor) -prodes.tb %>% dplyr::mutate(reference = label) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 146 0 0 -# deforestation2015 0 191 0 -# primary_forest 0 0 74 -# -# Overall Statistics -# -# Accuracy : 1 -# 95% CI : (0.9911, 1) -# -# Kappa : 1 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 1 1 1 -# Specificity 1 1 1 -# User Acc (Pos Pred Value) 1 1 1 -# Neg Pred Value 1 1 1 - - -# -# -# ################################################################### - - -# _ __ _____ ___ _ ____ -# | |/ / | ___|/ _ \ | | | _ \ -# | ' / _____ | |_ | | | || | | | | | -# | . \|_____|| _| | |_| || |___ | |_| | -# |_|\_\ |_| \___/ |_____||____/ -# -# -# All "one-shot" results were above 0.93. -# All methods were used to proceed with k-fold validation - - -# ___ __ __ __ __ -# / __|\ \ / /| \/ | -# \__ \ \ V / | |\/| | -# |___/ \_/ |_| |_| -# - -prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = function(...) NULL, - dist_method = sits_distances_from_data(), - tr_method = sits_svm(formula = sits_formula_linear(), - kernel = "radial"), - multicores = 5) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 129 14 2 -# deforestation2015 13 172 2 -# primary_forest 4 5 70 -# -# Overall Statistics -# -# Accuracy : 0.9027 -# 95% CI : (0.8698, 0.9296) -# -# Kappa : 0.8452 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 0.8836 0.9005 0.9459 -# Specificity 0.9396 0.9318 0.9733 -# User Acc (Pos Pred Value) 0.8897 0.9198 0.8861 -# Neg Pred Value 0.9361 0.9152 0.9880 - - -# _ ___ _ -# | | | \ /_\ -# | |__ | |) |/ _ \ -# |____||___//_/ \_\ -# - -prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = function(...) NULL, - dist_method = sits_distances_from_data(), - tr_method = sits_lda(formula = sits_formula_linear()), - multicores = 5) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 130 9 4 -# deforestation2015 13 172 4 -# primary_forest 3 10 66 -# -# Overall Statistics -# -# Accuracy : 0.8954 -# 95% CI : (0.8617, 0.9232) -# -# Kappa : 0.8334 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 0.8904 0.9005 0.8919 -# Specificity 0.9509 0.9227 0.9614 -# User Acc (Pos Pred Value) 0.9091 0.9101 0.8354 -# Neg Pred Value 0.9403 0.9144 0.9759 - - -# ___ ___ _ -# / _ \ | \ /_\ -# | (_) || |) |/ _ \ -# \__\_\|___//_/ \_\ -# - -# qda needs more cases than attributes, so we will select only two bands to produce the spreaded time series distance table -prodes.tb %>% sits_select_bands(c("ndvi", "evi")) %>% - sits_kfold_validate(folds = 5, - pt_method = function(...) NULL, - dist_method = sits_distances_from_data(), - tr_method = sits_qda(formula = sits_formula_linear()), - multicores = 1) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 131 8 17 -# deforestation2015 15 183 47 -# primary_forest 0 0 10 -# -# Overall Statistics -# -# Accuracy : 0.7883 -# 95% CI : (0.7456, 0.8268) -# -# Kappa : 0.6374 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 0.8973 0.9581 0.1351 -# Specificity 0.9057 0.7182 1.0000 -# User Acc (Pos Pred Value) 0.8397 0.7469 1.0000 -# Neg Pred Value 0.9412 0.9518 0.8404 - - - -# __ __ _ ___ -# | \/ || | | _ \ -# | |\/| || |__ | / -# |_| |_||____||_|_\ -# -prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = function(...) NULL, - dist_method = sits_distances_from_data(), - tr_method = sits_mlr(formula = sits_formula_linear()), - multicores = 5) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 129 13 1 -# deforestation2015 12 170 12 -# primary_forest 5 8 61 -# -# Overall Statistics -# -# Accuracy : 0.8759 -# 95% CI : (0.8401, 0.9062) -# -# Kappa : 0.8013 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 0.8836 0.8901 0.8243 -# Specificity 0.9472 0.8909 0.9614 -# User Acc (Pos Pred Value) 0.9021 0.8763 0.8243 -# Neg Pred Value 0.9366 0.9032 0.9614 - - - -# _ _ ___ ___ ___ -# | | /_\ / __|/ __| / _ \ -# | |__ / _ \ \__ \\__ \| (_) | -# |____|/_/ \_\|___/|___/ \___/ -# - -# glm use log function so translate time series values to strictly positive numbers: -positive_prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = function(...) NULL, - dist_method = sits_distances_from_data(), - tr_method = sits_glm(alpha = 1), - multicores = 5) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 132 17 4 -# deforestation2015 11 168 2 -# primary_forest 3 6 68 -# -# Overall Statistics -# -# Accuracy : 0.8954 -# 95% CI : (0.8617, 0.9232) -# -# Kappa : 0.8338 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 0.9041 0.8796 0.9189 -# Specificity 0.9208 0.9409 0.9733 -# User Acc (Pos Pred Value) 0.8627 0.9282 0.8831 -# Neg Pred Value 0.9457 0.9000 0.9820 - - -# ___ ___ ___ ___ ___ -# | _ \|_ _|| \ / __|| __| -# | / | | | |) || (_ || _| -# |_|_\|___||___/ \___||___| -# - -# glm use log function so translate time series values to strictly positive numbers: -positive_prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = function(...) NULL, - dist_method = sits_distances_from_data(), - tr_method = sits_glm(alpha = 0), - multicores = 5) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 127 19 3 -# deforestation2015 15 167 6 -# primary_forest 4 5 65 -# -# Overall Statistics -# -# Accuracy : 0.8735 -# 95% CI : (0.8374, 0.904) -# -# Kappa : 0.798 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 0.8699 0.8743 0.8784 -# Specificity 0.9170 0.9045 0.9733 -# User Acc (Pos Pred Value) 0.8523 0.8883 0.8784 -# Neg Pred Value 0.9275 0.8924 0.9733 - - - - -# ___ _ _ ___ ___ ___ ___ ___ ___ _____ -# | _ \| \| || \ | __|/ _ \ | _ \| __|/ __||_ _| -# | /| .` || |) |_ | _|| (_) || /| _| \__ \ | | -# |_|_\|_|\_||___/(_)|_| \___/ |_|_\|___||___/ |_| -# -prodes.tb %>% sits_kfold_validate(folds = 5, - pt_method = function(...) NULL, - dist_method = sits_distances_from_data(), - tr_method = sits_rfor(), - multicores = 5) %>% sits_accuracy() -# Confusion Matrix and Statistics -# -# Reference -# Prediction deforestation2014 deforestation2015 primary_forest -# deforestation2014 135 10 1 -# deforestation2015 9 180 4 -# primary_forest 2 1 69 -# -# Overall Statistics -# -# Accuracy : 0.9343 -# 95% CI : (0.9059, 0.9563) -# -# Kappa : 0.8947 -# -# Statistics by Class: -# -# Class: deforestation2014 Class: deforestation2015 Class: primary_forest -# Prod Acc (Sensitivity) 0.9247 0.9424 0.9324 -# Specificity 0.9585 0.9409 0.9911 -# User Acc (Pos Pred Value) 0.9247 0.9326 0.9583 -# Neg Pred Value 0.9585 0.9495 0.9853 - - - - -# Random Forest produced the best accuracy: 0.9343 - - - -# -# -# ################################################################### -# ################################################################### # ################################################################### diff --git a/inst/extdata/examples/sits_scidb_streaming_example.R b/inst/extdata/examples/sits_scidb_streaming_example.R index d05a8c6e9..761d69ace 100644 --- a/inst/extdata/examples/sits_scidb_streaming_example.R +++ b/inst/extdata/examples/sits_scidb_streaming_example.R @@ -94,3 +94,4 @@ while(TRUE) { } close(con_in) + diff --git a/inst/extdata/examples/sits_scidb_streaming_rolf.R b/inst/extdata/examples/sits_scidb_streaming_rolf.R new file mode 100644 index 000000000..ee3b3fd0a --- /dev/null +++ b/inst/extdata/examples/sits_scidb_streaming_rolf.R @@ -0,0 +1,134 @@ +con_in <- file("stdin", "rb") +con_out <- pipe("cat", "wb") + +while(TRUE) { + + input.lst <- unserialize(con_in) + ncol <- length(input.lst) + if(ncol == 0) { + sits::sits_exitConnection(list(), con_out) + break + } + + library(e1071) + attach(input.lst) + + # read and parse arguments + args <- commandArgs(trailingOnly=TRUE) # comenta essa linha quando entrar com input_list csv + lapply(args, function(x) {l <- unlist(strsplit(x, "=")); assign(l[1], l[2], envir = .GlobalEnv)}) + + `%>%` <- magrittr::`%>%` # needed to include the pipe operators + + # ################ + # bands <- "ndvi,evi,nir,mir" + # ml_model <- "../svm_kr-radial_fm-linear__embrapa_mt.RData" + # interval <- "12,month" + # start_date <- "2000-09-01" + # end_date <- "2017-08-31" + # dates <- c("2000-02-18,2000-03-05,2000-03-21,2000-04-06,2000-04-22,2000-05-08,2000-05-24,2000-06-09,2000-06-25,2000-07-11,2000-07-27,2000-08-12,", + # "2000-08-28,2000-09-13,2000-09-29,2000-10-15,2000-10-31,2000-11-16,2000-12-02,2000-12-18,2001-01-01,2001-01-17,2001-02-02,2001-02-18,", + # "2001-03-06,2001-03-22,2001-04-07,2001-04-23,2001-05-09,2001-05-25,2001-06-10,2001-06-26,2001-07-12,2001-07-28,2001-08-13,2001-08-29,", + # "2001-09-14,2001-09-30,2001-10-16,2001-11-01,2001-11-17,2001-12-03,2001-12-19,2002-01-01,2002-01-17,2002-02-02,2002-02-18,2002-03-06,", + # "2002-03-22,2002-04-07,2002-04-23,2002-05-09,2002-05-25,2002-06-10,2002-06-26,2002-07-12,2002-07-28,2002-08-13,2002-08-29,2002-09-14,", + # "2002-09-30,2002-10-16,2002-11-01,2002-11-17,2002-12-03,2002-12-19,2003-01-01,2003-01-17,2003-02-02,2003-02-18,2003-03-06,2003-03-22,", + # "2003-04-07,2003-04-23,2003-05-09,2003-05-25,2003-06-10,2003-06-26,2003-07-12,2003-07-28,2003-08-13,2003-08-29,2003-09-14,2003-09-30,", + # "2003-10-16,2003-11-01,2003-11-17,2003-12-03,2003-12-19,2004-01-01,2004-01-17,2004-02-02,2004-02-18,2004-03-05,2004-03-21,2004-04-06,", + # "2004-04-22,2004-05-08,2004-05-24,2004-06-09,2004-06-25,2004-07-11,2004-07-27,2004-08-12,2004-08-28,2004-09-13,2004-09-29,2004-10-15,", + # "2004-10-31,2004-11-16,2004-12-02,2004-12-18,2005-01-01,2005-01-17,2005-02-02,2005-02-18,2005-03-06,2005-03-22,2005-04-07,2005-04-23,", + # "2005-05-09,2005-05-25,2005-06-10,2005-06-26,2005-07-12,2005-07-28,2005-08-13,2005-08-29,2005-09-14,2005-09-30,2005-10-16,2005-11-01,", + # "2005-11-17,2005-12-03,2005-12-19,2006-01-01,2006-01-17,2006-02-02,2006-02-18,2006-03-06,2006-03-22,2006-04-07,2006-04-23,2006-05-09,", + # "2006-05-25,2006-06-10,2006-06-26,2006-07-12,2006-07-28,2006-08-13,2006-08-29,2006-09-14,2006-09-30,2006-10-16,2006-11-01,2006-11-17,", + # "2006-12-03,2006-12-19,2007-01-01,2007-01-17,2007-02-02,2007-02-18,2007-03-06,2007-03-22,2007-04-07,2007-04-23,2007-05-09,2007-05-25,", + # "2007-06-10,2007-06-26,2007-07-12,2007-07-28,2007-08-13,2007-08-29,2007-09-14,2007-09-30,2007-10-16,2007-11-01,2007-11-17,2007-12-03,", + # "2007-12-19,2008-01-01,2008-01-17,2008-02-02,2008-02-18,2008-03-05,2008-03-21,2008-04-06,2008-04-22,2008-05-08,2008-05-24,2008-06-09,", + # "2008-06-25,2008-07-11,2008-07-27,2008-08-12,2008-08-28,2008-09-13,2008-09-29,2008-10-15,2008-10-31,2008-11-16,2008-12-02,2008-12-18,", + # "2009-01-01,2009-01-17,2009-02-02,2009-02-18,2009-03-06,2009-03-22,2009-04-07,2009-04-23,2009-05-09,2009-05-25,2009-06-10,2009-06-26,", + # "2009-07-12,2009-07-28,2009-08-13,2009-08-29,2009-09-14,2009-09-30,2009-10-16,2009-11-01,2009-11-17,2009-12-03,2009-12-19,2010-01-01,", + # "2010-01-17,2010-02-02,2010-02-18,2010-03-06,2010-03-22,2010-04-07,2010-04-23,2010-05-09,2010-05-25,2010-06-10,2010-06-26,2010-07-12,", + # "2010-07-28,2010-08-13,2010-08-29,2010-09-14,2010-09-30,2010-10-16,2010-11-01,2010-11-17,2010-12-03,2010-12-19,2011-01-01,2011-01-17,", + # "2011-02-02,2011-02-18,2011-03-06,2011-03-22,2011-04-07,2011-04-23,2011-05-09,2011-05-25,2011-06-10,2011-06-26,2011-07-12,2011-07-28,", + # "2011-08-13,2011-08-29,2011-09-14,2011-09-30,2011-10-16,2011-11-01,2011-11-17,2011-12-03,2011-12-19,2012-01-01,2012-01-17,2012-02-02,", + # "2012-02-18,2012-03-05,2012-03-21,2012-04-06,2012-04-22,2012-05-08,2012-05-24,2012-06-09,2012-06-25,2012-07-11,2012-07-27,2012-08-12,", + # "2012-08-28,2012-09-13,2012-09-29,2012-10-15,2012-10-31,2012-11-16,2012-12-02,2012-12-18,2013-01-01,2013-01-17,2013-02-02,2013-02-18,", + # "2013-03-06,2013-03-22,2013-04-07,2013-04-23,2013-05-09,2013-05-25,2013-06-10,2013-06-26,2013-07-12,2013-07-28,2013-08-13,2013-08-29,", + # "2013-09-14,2013-09-30,2013-10-16,2013-11-01,2013-11-17,2013-12-03,2013-12-19,2014-01-01,2014-01-17,2014-02-02,2014-02-18,2014-03-06,", + # "2014-03-22,2014-04-07,2014-04-23,2014-05-09,2014-05-25,2014-06-10,2014-06-26,2014-07-12,2014-07-28,2014-08-13,2014-08-29,2014-09-14,", + # "2014-09-30,2014-10-16,2014-11-01,2014-11-17,2014-12-03,2014-12-19,2015-01-01,2015-01-17,2015-02-02,2015-02-18,2015-03-06,2015-03-22,", + # "2015-04-07,2015-04-23,2015-05-09,2015-05-25,2015-06-10,2015-06-26,2015-07-12,2015-07-28,2015-08-13,2015-08-29,2015-09-14,2015-09-30,", + # "2015-10-16,2015-11-01,2015-11-17,2015-12-03,2015-12-19,2016-01-01,2016-01-17,2016-02-02,2016-02-18,2016-03-05,2016-03-21,2016-04-06,", + # "2016-04-22,2016-05-08,2016-05-24,2016-06-09,2016-06-25,2016-07-11,2016-07-27,2016-08-12,2016-08-28,2016-09-13,2016-09-29,2016-10-15,", + # "2016-10-31,2016-11-16,2016-12-02,2016-12-18,2017-01-01,2017-01-17,2017-02-02,2017-02-18,2017-03-06") %>% paste0(collapse = "") + # input.lst <- read.csv("../mod13q1_chunk.csv", header = TRUE, sep = ",") + # scale_factor <- "0.0001" + # miss_value <- "-3000,-3000,-1000,-1000" + # cores <- "20" + # ################ + + bands <- unlist(strsplit(bands, split=",")) + ml_model <- get(load(file = ml_model)) + interval <- gsub(",", " ", interval) + start_date <- as.Date(start_date) + end_date <- as.Date(end_date) + dates <- as.Date(unlist(strsplit(dates, split = ","))) + breaks <- seq(from = start_date, to = end_date, by = interval) + period_id <- cut(x = dates, breaks = breaks, right = FALSE, labels = FALSE) + scale_factor <- as.double(scale_factor) + missing_values <- as.integer(unlist(strsplit(missing_values, split = ","))) + cores <- as.integer(cores) + + #################################################### + + # prepare time series values + input.mx <- + input.lst[bands] %>% + tibble::as_tibble() %>% + Matrix::as.matrix() + + # remove missing values + input.mx[which(input.mx == missing_values)] <- NA + input.mx <- + zoo::na.spline(input.mx) * scale_factor + 3 + + # select interested data by years + input.tb <- + input.mx %>% + tibble::as_tibble() %>% + dplyr::filter(!is.na(rep(period_id, NROW(.) %/% length(period_id)))) + + + ##################################################### + + library(multidplyr) + script_cluster <- multidplyr::create_cluster(cores) + + input_dist.tb <- + input.lst[c("colid", "rowid")] %>% + lapply(as.double) %>% + tibble::as_tibble() %>% + dplyr::mutate(periodid = as.double(rep(period_id, NROW(.) %/% length(period_id)))) %>% + dplyr::filter(!is.na(periodid)) %>% + dplyr::bind_cols(input.tb) %>% + multidplyr::partition(colid, rowid, cluster = script_cluster) %>% + multidplyr::cluster_assign_value("bands", bands) %>% + dplyr::group_by(colid, rowid, periodid) %>% + dplyr::do(tibble::as_tibble(t(as.matrix(unlist(.data[bands]))))) %>% + dplyr::collect() %>% + dplyr::ungroup() + + predicted.tb <- input_dist.tb[1:3] + + predicted.tb$predicted <- + input_dist.tb[-1:0] %>% + ml_model() %>% + as.integer() + + #################################################### + + # predicted.tb <- tibble::tibble(colid=predicted.tb$colid[[1]], rowid=predicted.tb$rowid[[1]], periodid=predicted.tb$periodid[[1]], predicted=predicted.tb$predicted[[1]]) + # predicted.tb <- tibble::tibble(colid=60120, rowid=48622, periodid=1, predicted=as.integer(5)) + + writeBin(serialize(c(predicted.tb), NULL, xdr=FALSE), con_out) + flush(con_out) +} + +close(con_in) diff --git a/inst/extdata/results/sits_PRODES_TS_SPRD_accuracy.xlsx b/inst/extdata/results/sits_PRODES_TS_SPRD_accuracy.xlsx new file mode 100644 index 000000000..055b81bdc Binary files /dev/null and b/inst/extdata/results/sits_PRODES_TS_SPRD_accuracy.xlsx differ diff --git a/inst/extdata/results/sits_PRODES_TWDTW_CLUSTER_accuracy.xlsx b/inst/extdata/results/sits_PRODES_TWDTW_CLUSTER_accuracy.xlsx new file mode 100644 index 000000000..1ec8a671a Binary files /dev/null and b/inst/extdata/results/sits_PRODES_TWDTW_CLUSTER_accuracy.xlsx differ diff --git a/inst/extdata/results/sits_PRODES_TWDTW_GAM_accuracy.xlsx b/inst/extdata/results/sits_PRODES_TWDTW_GAM_accuracy.xlsx new file mode 100644 index 000000000..394cc609f Binary files /dev/null and b/inst/extdata/results/sits_PRODES_TWDTW_GAM_accuracy.xlsx differ diff --git a/inst/extdata/results/sits_PRODES_TWDTW_inCLUST_accuracy.xlsx b/inst/extdata/results/sits_PRODES_TWDTW_inCLUST_accuracy.xlsx new file mode 100644 index 000000000..35ae0645a Binary files /dev/null and b/inst/extdata/results/sits_PRODES_TWDTW_inCLUST_accuracy.xlsx differ diff --git a/man/sits_classify2.Rd b/man/sits_classify2.Rd new file mode 100644 index 000000000..4a36a52ab --- /dev/null +++ b/man/sits_classify2.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/sits_classification.R +\name{sits_classify2} +\alias{sits_classify2} +\title{Classify a sits tibble using machine learning models} +\usage{ +sits_classify2(data.tb = NULL, ml_model = NULL, + dist_method = sits_distances_from_data2(start_from = "2000-09-01", interval + = "12 month")) +} +\arguments{ +\item{data.tb}{a SITS tibble time series} + +\item{ml_model}{a model trained by \code{\link[sits]{sits_train}}} + +\item{dist_method}{method to compute distances (e.g., sits_TWDTW_distances)} + +\item{interval}{the period between two classifications} + +\item{...}{other parameters to be passed to the distance function} +} +\value{ +data.tb a SITS tibble with the predicted labels for each input segment +} +\description{ +Returns a sits table with the results of the ML classifier. +} +\author{ +Gilberto Camara, \email{gilberto.camara@inpe.br} +} diff --git a/man/sits_distances.Rd b/man/sits_distances.Rd index baf6fcea7..a60cb6f67 100644 --- a/man/sits_distances.Rd +++ b/man/sits_distances.Rd @@ -4,7 +4,9 @@ \alias{sits_distances} \title{Calculate a set of distance measures for satellite image time series} \usage{ -sits_distances(data.tb, patterns.tb, dist_method = sits_distances_from_data()) +sits_distances(data.tb, patterns.tb, + dist_method = sits_distances_from_data2(start_from = "2000-09-01", interval + = "12 month")) } \arguments{ \item{data.tb}{SITS tibble time series} diff --git a/man/sits_distances_from_data2.Rd b/man/sits_distances_from_data2.Rd new file mode 100644 index 000000000..bd4701bb9 --- /dev/null +++ b/man/sits_distances_from_data2.Rd @@ -0,0 +1,33 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/sits_distances.R +\name{sits_distances_from_data2} +\alias{sits_distances_from_data2} +\title{Use time series values from a sits tibble as distances for training patterns} +\usage{ +sits_distances_from_data2(data.tb = NULL, fun = NULL, start_from, interval) +} +\arguments{ +\item{data.tb}{a SITS tibble with original data} + +\item{fun}{a function to be called over all data input. It must takes one argument as input.} + +\item{start_from}{start date to break segments} + +\item{interval}{an interval to define the lengths of breaked segments} +} +\value{ +distances.tb a tibble where columns have the reference label and the time series values as distances +} +\description{ +This function allows using a set of labelled time series as +input to the machine learning models. Instead of first estimating a set +of idealised patterns and then computing distances from these patterns, +the attributes used to train the model are the series themselves. +This function then extracts the time series from a SITS tibble and +"spreads" them in time to produce a tibble with distances. +} +\author{ +Rolf Simoes, \email{rolf.simoes@inpe.br} + +Gilberto Camara, \email{gilberto.camara@inpe.br} +} diff --git a/man/sits_formula_linear.Rd b/man/sits_formula_linear.Rd index df159707c..64567a649 100644 --- a/man/sits_formula_linear.Rd +++ b/man/sits_formula_linear.Rd @@ -4,7 +4,7 @@ \alias{sits_formula_linear} \title{Train SITS classifiction models} \usage{ -sits_formula_linear(predictors_index = -2:0) +sits_formula_linear(predictors_index = -4:0) } \arguments{ \item{predictors_index}{the index of the valid columns whose names are used to compose formula (default: NULL)} diff --git a/man/sits_formula_logref.Rd b/man/sits_formula_logref.Rd index 8778eb62f..0cd2234a5 100644 --- a/man/sits_formula_logref.Rd +++ b/man/sits_formula_logref.Rd @@ -4,7 +4,7 @@ \alias{sits_formula_logref} \title{Train SITS classifiction models} \usage{ -sits_formula_logref(predictors_index = -2:0) +sits_formula_logref(predictors_index = -4:0) } \arguments{ \item{predictors_index}{the index of the valid columns whose names are used to compose formula (default: NULL)} diff --git a/man/sits_formula_smooth.Rd b/man/sits_formula_smooth.Rd index b7df44b1b..5e2b75afd 100644 --- a/man/sits_formula_smooth.Rd +++ b/man/sits_formula_smooth.Rd @@ -4,7 +4,7 @@ \alias{sits_formula_smooth} \title{Train SITS classifiction models} \usage{ -sits_formula_smooth(predictors_index = -2:0) +sits_formula_smooth(predictors_index = -4:0) } \arguments{ \item{predictors_index}{the index of the valid columns whose names are used to compose formula (default: NULL)} diff --git a/man/sits_fromlatlong.Rd b/man/sits_fromLatLong.Rd similarity index 100% rename from man/sits_fromlatlong.Rd rename to man/sits_fromLatLong.Rd diff --git a/man/sits_fromtable.Rd b/man/sits_fromTable.Rd similarity index 100% rename from man/sits_fromtable.Rd rename to man/sits_fromTable.Rd diff --git a/man/sits_patt_dendgam.Rd b/man/sits_patt_dendgam.Rd deleted file mode 100644 index c62743936..000000000 --- a/man/sits_patt_dendgam.Rd +++ /dev/null @@ -1,34 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/sits_dendrogram.R -\name{sits_patt_dendgam} -\alias{sits_patt_dendgam} -\title{Create time series patterns for classification} -\usage{ -sits_patt_dendgam(data.tb = NULL, first_cluster_cleaner = 0.027, - cluster_a_labels = c("Forest", "Cerrado", "Pasture"), - second_cluster_cleaner = 0.035, k_cluster_a = 8, k_cluster_b = 6) -} -\arguments{ -\item{data.tb}{a SITS tibble time series with an alignment column} - -\item{first_cluster_cleaner}{first_cluster_cleaner} - -\item{cluster_a_labels}{cluster_a_labels} - -\item{second_cluster_cleaner}{second_cluster_cleaner} - -\item{k_cluster_a}{k_cluster_a} - -\item{k_cluster_b}{k_cluster_b} -} -\value{ -result result -} -\description{ -This function ... -} -\author{ -Rolf Simoes, \email{rolf.simoes@inpe.br} - -Michelle Picoli, \email{mipicoli@gmail.com} -} diff --git a/man/sits_no_patterns.Rd b/man/sits_patterns_from_data.Rd similarity index 93% rename from man/sits_no_patterns.Rd rename to man/sits_patterns_from_data.Rd index 3719bcaf0..4e19b462e 100644 --- a/man/sits_no_patterns.Rd +++ b/man/sits_patterns_from_data.Rd @@ -1,7 +1,6 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/sits_patterns.R -\name{sits_no_patterns} -\alias{sits_no_patterns} +\name{sits_patterns_from_data} \alias{sits_patterns_from_data} \title{Do not create patterns for classification} \usage{ diff --git a/tests/testthat.R b/tests/testthat.R index 3608427be..af9a55873 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -1,4 +1,4 @@ -library(testthat) -library(sits) - -test_check("sits") +library(testthat) +library(sits) + +test_check("sits")