Skip to content

Conversation

@teunbrand
Copy link
Collaborator

This PR aims to fix #5485.

Briefly, ulevels() was always dropping NAs, leading to data being mapped to non-existing PANELs and generating invalid scale_ids. By including NAs, we prevent these invalid scale_ids.

stat_summary_2d() was also making use of ulevels() where NAs should be dropped. Therefore, ulevels() gets an na.last argument that is propagated to sort() so we can pick when to drop NA and when not.

Reprex from issue:

devtools::load_all("~/packages/ggplot2")
#> ℹ Loading ggplot2
library(palmerpenguins)

penguins |>
  transform(sex = as.character(sex)) |>
  ggplot() +
  geom_point(aes(x = body_mass_g, y = flipper_length_mm)) +
  facet_wrap(~sex, drop = FALSE)
#> Warning: Removed 2 rows containing missing values or values outside the scale range
#> (`geom_point()`).

Created on 2024-04-18 with reprex v2.1.0

Copy link
Member

@thomasp85 thomasp85 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@teunbrand teunbrand merged commit c5a9c68 into tidyverse:main Apr 29, 2024
@teunbrand teunbrand deleted the facet_character_drop branch April 29, 2024 09:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: where facet variable is character & drop = F

2 participants