tidyverse / ggplot2

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

Copy angle heuristic for more guides. #5957

Closed teunbrand closed 1 month ago

teunbrand commented 3 months ago

This PR aims to fix #4594.

Briefly it copies the heuristic from guide_axis(angle) to the following guides: guide_colourbar(), guide_coloursteps() and guide_bins(). Note that angle heuristic is applied in GuideLegend$override_elements() even though GuideLegend does not use the heuristic (per https://github.com/tidyverse/ggplot2/issues/4594#issuecomment-1857460496). While not applied in GuideLegend, it is inherited by and used in child guides.

Some examples. Note that for labels placed close to the edge (1st example '6000'), the label may escape the allocated space, but there is no easy fix for this at the moment.

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

p <- ggplot(msleep, aes(brainwt, sleep_total, colour = bodywt)) +
  geom_point(na.rm = TRUE)

p + guides(colour = guide_colourbar(angle = 45))

p + guides(colour = guide_coloursteps(angle = 45))

p + guides(colour = guide_bins(angle = 45))

Created on 2024-06-25 with reprex v2.1.0