更改文本注释的背景颜色以增加对比度和可见性

Posted

技术标签:

【中文标题】更改文本注释的背景颜色以增加对比度和可见性【英文标题】:Changing background color for a text annotation to increase contrast and visibility 【发布时间】:2017-01-28 21:27:11 【问题描述】:

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

ggplot() + 
  geom_hline(yintercept=0) + 
  annotate("text",x=0,y=0,label="Here is a line")

【问题讨论】:

你可以使用annotate("rect",xmin=?,xmax=?, ymin=?, ymax=?, fill="yellow"),你应该在“文本注释”之前使用这一行,但是geom_label更干净 【参考方案1】:

改用geom_label

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

【讨论】:

注意geom_label 必须在geom_hline 之后提及,否则该行将在标签上可见 请注意,在annotate(geom = "label", x = 0, y =0, color = "red", fill = "green") 中,color 参数将适用于文本及其周围的框线(据我所知)。 对于使用 geom_label 的任何人,请注意性能损失,因为它为每一行绘制。 github.com/tidyverse/ggplot2/issues/2266。当我所有的阴谋都停止时,我才发现这一点很困难【参考方案2】:

以this answer 为基础,但避免使用geom_label(),以便标签只绘制一次,而不是为每一行绘制的数据绘制一次(正如this comment 中正确指出的那样):

您仍然可以使用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")

【讨论】:

我想补充一下label.size = NA 删除那些黑色填充边框的好答案:annotate(geom="label",x=0,y=0,label="Here is a line",label.size=NA,fill="green")。感谢:***.com/a/45376078/9455395

以上是关于更改文本注释的背景颜色以增加对比度和可见性的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 PDF 背景颜色?

更改一个堆叠条的字体颜色

如何在 mac 终端中更改文本颜色和背景?

背景感知文本颜色

如何在iOS 7上更改状态栏背景颜色和文本颜色? Warif Akhand Rishi

在 Android 上更改 ListView 项目的背景颜色