geom_label 无法处理文本透明度

geom_label unable to handle text transparency

我想使用 geom_label 在矩形内绘制一些文本来绘制数据。我找不到如何为我的文本添加透明度 (alpha)。事实上,透明度似乎只适用于填充颜色:

ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars), alpha=cyl))+ geom_label(fill="blue")
ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars), alpha=cyl)) + geom_text()

当我改用 geom_text 时,alpha 参数按预期工作:

你知道在使用 geom_label 时让标签内的文本也透明的方法吗? 谢谢,

通过使用这个残酷的技巧,您可以让它发挥作用。只需将 label 移到 geom_text 内, 并为 geom_label 创建一个空的长字符串,但这几乎不是 "reproducible" 解决方案。

library(ggplot2)
ggplot(mtcars, aes(wt, mpg, alpha=cyl)) + 
  geom_label(label="                               ", fill="blue") + 
  geom_text(aes(label = rownames(mtcars)))

@agenis 编辑:我们可以首先计算每个标签的空格长度,以便我们使框适应文本

ggplot(mtcars %>% mutate(blank_label = strrep(" ", nchar(rownames(.))*2)), aes(wt, mpg, alpha=cyl)) + 
  geom_label(aes(label=blank_label), fill="blue") + 
  geom_text(aes(label = rownames(mtcars)))

*2是因为我找不到定宽字符的字体)

这不是真正的答案,但解决了我遇到的一个类似问题:我的标签隐藏了数据点,但标签背景的透明度对我不起作用,所以我终于找到了一个解决方法:使用函数 scales::alpha 改变颜色美感:

ggplot(mtcars) +
  aes(wt, mpg, label = rownames(mtcars)) +
  geom_point() +
  geom_label(alpha = .5, color = alpha('black', .5))