tidyverse / ggplot2

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

Feature Request: nudge_x and nudge_y as a true aesthetic #5445

Open lhami opened 1 year ago

lhami commented 1 year ago

Sometimes I want more granular control over the position of specific text labels for geom_text and geom_text_repel, and I may want that to depend on some other aspect of the data (overlapping points, points that are above a certain threshold, specific problematic points that I know by name from previous versions, etc) using mutate().

Since nudge_x and nudge_y can take vectors that are the same length as the data, it seems already acknowledged that people may want to sometimes have a different nudge value for each point, which could easily be a column of nudge values in the data frame or a function thereof, so I'm not sure why it works differently from other aesthetics which can be specified in aes() with a column name quosure or outside of aes() for all points.

Could we make nudge_x and nudge_y work like the x and y aesthetics themselves?

teunbrand commented 1 year ago

Some time ago there was some relevant discussion in #3026 and a PR implementing this was posted in #3030. At the time, it was decided against making nudge_x and nudge_y proper aesthetics, because it was too niche for the geom_text()/position_nudge() pairing. The alternative proposed solution, but never implemented, was to make position adjustments have required aesthetics that can be interpreted.