geom_label无法处理文本透明度

时间:2019-03-20 10:08:14

标签: r ggplot2 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参数按预期工作:

enter image description here 您知道一种使用geom_label时使标签内文本也透明的方法吗? 谢谢,

1 个答案:

答案 0 :(得分:2)

通过使用这种残酷的技巧,您可以使其发挥作用。只需将label移到geom_text内, 并为geom_label输入一个空的长字符串,但这几乎不是“可重现”的解决方案。

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

enter image description here

@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是因为我无法获得具有固定宽度字符的字体”)