From 8e00de3d5fe5e4de45398b323a69eae49b56cf41 Mon Sep 17 00:00:00 2001 From: Teun van den Brand Date: Fri, 23 Feb 2024 10:24:14 +0100 Subject: [PATCH 1/2] facets always use unordered factors --- R/facet-grid-.R | 4 ++-- R/facet-wrap.R | 4 ++-- R/utilities.R | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/R/facet-grid-.R b/R/facet-grid-.R index 839c9ba839..89877fc055 100644 --- a/R/facet-grid-.R +++ b/R/facet-grid-.R @@ -323,9 +323,9 @@ FacetGrid <- ggproto("FacetGrid", Facet, # Special case of no faceting data$PANEL <- NO_PANEL } else { - facet_vals[] <- lapply(facet_vals[], as.factor) + facet_vals[] <- lapply(facet_vals[], as_unordered_factor) facet_vals[] <- lapply(facet_vals[], addNA, ifany = TRUE) - layout[] <- lapply(layout[], as.factor) + layout[] <- lapply(layout[], as_unordered_factor) keys <- join_keys(facet_vals, layout, by = vars) diff --git a/R/facet-wrap.R b/R/facet-wrap.R index 9aa488179f..1c522d6fe8 100644 --- a/R/facet-wrap.R +++ b/R/facet-wrap.R @@ -226,8 +226,8 @@ FacetWrap <- ggproto("FacetWrap", Facet, } facet_vals <- eval_facets(vars, data, params$.possible_columns) - facet_vals[] <- lapply(facet_vals[], as.factor) - layout[] <- lapply(layout[], as.factor) + facet_vals[] <- lapply(facet_vals[], as_unordered_factor) + layout[] <- lapply(layout[], as_unordered_factor) missing_facets <- setdiff(names(vars), names(facet_vals)) if (length(missing_facets) > 0) { diff --git a/R/utilities.R b/R/utilities.R index 83037d475c..9f9133a0b5 100644 --- a/R/utilities.R +++ b/R/utilities.R @@ -811,3 +811,9 @@ deprecate_warn0 <- function(..., user_env = NULL) { user_env <- user_env %||% getOption("ggplot2_plot_env") %||% caller_env(2) lifecycle::deprecate_warn(..., user_env = user_env) } + +as_unordered_factor <- function(x) { + x <- as.factor(x) + class(x) <- setdiff(class(x), "ordered") + x +} From 292b221cba1cc8947efe57104ab9b02250a826a5 Mon Sep 17 00:00:00 2001 From: Teun van den Brand Date: Fri, 23 Feb 2024 11:30:16 +0100 Subject: [PATCH 2/2] add news bullet --- NEWS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NEWS.md b/NEWS.md index e6f6dca449..8e1775e861 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # ggplot2 (development version) +* When facets coerce the faceting variables to factors, the 'ordered' class + is dropped (@teunbrand, #5666). + # ggplot2 3.5.0 This is a minor release that turned out quite beefy. It is focused on