tidyverse / ggplot2

An implementation of the Grammar of Graphics in R
https://ggplot2.tidyverse.org
Other
6.39k stars 2k forks source link

Length check for `after_scale()` aesthetics #5901

Closed teunbrand closed 1 month ago

teunbrand commented 1 month ago

I acknowledge that this is user-error, but the error message could be a little bit more informative here:

library(ggplot2)

ggplot(mpg[15:16, ], aes(displ, hwy)) +
  geom_point(
    aes(colour = after_scale(c("red", "green", "blue")))
  )
#> Error in `geom_point()`:
#> ! Problem while setting up geom aesthetics.
#> ℹ Error occurred in the 1st layer.
#> Caused by error in `data.frame()`:
#> ! arguments imply differing number of rows: 3, 2

Created on 2024-05-22 with reprex v2.1.0

In particular, it could inform for which aesthetics the length was incorrect, to give a hint as to what to fix. Moreover, I think this needn't be an error, but just a warning that applying these modifications failed.

teunbrand commented 1 month ago

Same holds for after_stat():

library(ggplot2)

ggplot(mpg[15:16, ], aes(displ, hwy)) +
  geom_point(aes(
    colour = after_stat(c("A", "B", "C"))
  ))
#> Error in `geom_point()`:
#> ! Problem while mapping stat to aesthetics.
#> ℹ Error occurred in the 1st layer.
#> Caused by error in `data.frame()`:
#> ! arguments imply differing number of rows: 3, 2

Created on 2024-05-22 with reprex v2.1.0