ggplot2 icon indicating copy to clipboard operation
ggplot2 copied to clipboard

key height gets stretched when using multiline key-labels or large font size in the legend

Open mluerig opened this issue 5 years ago • 3 comments

see this issue: https://github.com/wilkelab/cowplot/issues/152 (reprex included)

the key height gets stretched when using multiline key-labels OR bigger text size in the legend. this is not affected my manipulations of the key height in theme() or guides() - is this intended behavior?


The reprex from https://github.com/wilkelab/cowplot/issues/152#issuecomment-565463269:

require(ggplot2)
#> Loading required package: ggplot2

set.seed(15)

df <- data.frame(x=1:50, y=rnorm(50, 10, 2), var=rep(c("A","B","C","D","E"),10))
labs = c("A oneline","B oneline","C oneline", "D\ntwolines","E\ntwolines")
cols = c('#e41a1c','#377eb8','#4daf4a','#984ea3','#ff7f00')


ggplot(df) + 
  geom_ribbon(aes(x=x, ymin=y-1, ymax=y+1, fill=var), alpha=0.3) +
  geom_line(aes(x=x, y=y, colour=var), alpha=0.3, size=2) +
  scale_fill_manual(values=cols, labels = labs) +
  theme(legend.position="bottom",
        legend.title = element_blank(),
        legend.text = element_text(size = 14)) +
  guides(fill=guide_legend(ncol=3, byrow=TRUE))

mluerig avatar Dec 14 '19 10:12 mluerig

The same happens if you increase margins around the text labels in the legend.

gfspiteri avatar Jun 12 '20 21:06 gfspiteri

This is deliberate, though I can understand why it may be undesirable... We may consider adding a switch in the guide to control this...

thomasp85 avatar Apr 20 '21 07:04 thomasp85

+1 for switch in the guide. From what I've tried, the current behavior here is ggplot silently overrides legend.key.height or the y component legend.key.size if either theme requests a fill legend key whose height is shorter than the text but does honor these settings if you to make the key larger than the text is tall. Makes me wonder if the problem is maybe the key drawing doesn't know whether it's getting a default height that's ok to stretch or if it's blindly overriding a user specification.

There are some workarounds based on replacing ggplot's legend drawing in the Stackoverflow question on this.

twest820 avatar Nov 22 '21 16:11 twest820