ggplot2 icon indicating copy to clipboard operation
ggplot2 copied to clipboard

Improve behaviour when `labeller()` does not find a match in lookup table

Open stragu opened this issue 4 years ago • 0 comments

Currently, ggplot2::labeller() silently labels the facets with "NA" if the user supplies unnamed character vectors.

library(ggplot2)
ggplot(ToothGrowth, aes(y = len)) + 
  geom_boxplot() +
  facet_wrap(vars(supp), labeller = labeller(supp = c("orange juice yum", "vitamin C yuck")))

If there is a typo in the name (or if there just isn't a new label defined in the vector), the same thing happens: "NA" is given as a title.

library(ggplot2)
ggplot(ToothGrowth, aes(y = len)) + 
  geom_boxplot() +
  facet_wrap(vars(supp), labeller = labeller(supp = c("OJ" = "orange juice yum", "vC" = "vitamin C yuck")))

I am not sure what would be most appropriate, but I would have expected to get something like this:

Warning: labeller() could not match one or more of the original labels. The facets were titled "NA".
ℹ: did you forget to provide a named character vector, or are some labels missing from the lookup table?

The function allows using lookup tables that include superfluous data, which is probably good for flexibility, but I think that naming a facet with "NA" should throw a warning, or at least a message, when the is not enough data.

Or should the default behaviour change to using the original label if no match is found, allowing the use of partial lookup tables? I can see people wanting to only cherry pick a couple of labels to replace.

Using:

  • ggplot2 3.3.5
  • R 4.1.1

stragu avatar Aug 31 '21 07:08 stragu