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))
我想使用 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 参数按预期工作:
通过使用这个残酷的技巧,您可以让它发挥作用。只需将 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))