Skip to content

Drop plot_env from ggplot2 objects? #3994

Open
@clauswilke

Description

@clauswilke

This comment #3619 (comment) prompted me to look into plot_env, and as far as I can see it's stored and handed around just so it can be eventually given to the function combine_vars(), which then doesn't use it:

ggplot2/R/facet-.r

Lines 544 to 587 in e9b9946

combine_vars <- function(data, env = emptyenv(), vars = NULL, drop = TRUE) {
possible_columns <- unique(unlist(lapply(data, names)))
if (length(vars) == 0) return(new_data_frame())
# For each layer, compute the facet values
values <- compact(lapply(data, eval_facets, facets = vars, possible_columns = possible_columns))
# Form the base data.frame which contains all combinations of faceting
# variables that appear in the data
has_all <- unlist(lapply(values, length)) == length(vars)
if (!any(has_all)) {
missing <- lapply(values, function(x) setdiff(names(vars), names(x)))
missing_txt <- vapply(missing, var_list, character(1))
name <- c("Plot", paste0("Layer ", seq_len(length(data) - 1)))
abort(glue(
"At least one layer must contain all faceting variables: {var_list(names(vars))}.\n",
glue_collapse(glue("* {name} is missing {missing_txt}"), "\n", last = "\n")
))
}
base <- unique(rbind_dfs(values[has_all]))
if (!drop) {
base <- unique_combs(base)
}
# Systematically add on missing combinations
for (value in values[!has_all]) {
if (empty(value)) next;
old <- base[setdiff(names(base), names(value))]
new <- unique(value[intersect(names(base), names(value))])
if (drop) {
new <- unique_combs(new)
}
base <- unique(rbind(base, df.grid(old, new)))
}
if (empty(base)) {
abort("Faceting variables must have at least one value")
}
base
}

Is this a hold-over from the times before tidy eval? Can we remove this/or assign NULL here?
plot_env = environment

It is already marked as deprecated in the documentation:

#' @param environment DEPRECATED. Used prior to tidy evaluation.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions