ggplot2 - annotate - 更改文本注释的背景颜色

And*_*ein 10 r annotate background-color ggplot2

我想更改注释文本的背景颜色,使其为绿色并覆盖其背后的任何内容(如下例中的水平线).我怎么做?

ggplot() + 
  geom_hline(yintercept=0) + 
  annotate("text",x=0,y=0,label="Here is a line")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Mar*_*zer 18

尝试geom_label改为:

ggplot() + 
  geom_hline(yintercept = 0) + 
  labs(x = "", y = "") +
  geom_label(aes(x = 0, y = 0, label = "Here is a line"), fill = "green")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 对于使用 geom_label 的任何人,请注意它为每一行绘制时的性能影响。https://github.com/tidyverse/ggplot2/issues/2266。当我所有的计划都停止时,我艰难地发现了这一点 (3认同)
  • 注意在`geom_hline`之后必须提到`geom_label`,否则该行将在标签上可见 (2认同)
  • 请注意,在``annotate(geom ="label",x = 0,y = 0,color ="red",fill ="green")``中,``color``参数将适用于文本和围绕它的盒子线(据我所知). (2认同)

mac*_*mac 10

建立在这个答案的基础上,但避免使用,geom_label()以便标签只绘制一次,而不是对每一行绘制的数据绘制一次(如本评论中正确指出的那样):

您仍然可以使用annotate(),这是一次性的注释是首选的方法,但使用label,而不是text作为geom

同样,您可以提供geom="segment"画线等...

ggplot() + 
  geom_hline(yintercept=0) + 
  annotate(geom="label",x=0,y=0,label="Here is a line", fill="green")
Run Code Online (Sandbox Code Playgroud)

阴谋

  • 我想补充这个好答案,``label.size = NA`` 删除那些黑色填充边框:``annotate(geom="label",x=0,y=0,label="Here is a line “,label.size = NA,填充=“绿色”)``。感谢:/sf/answers/3176325491/ (6认同)