首页 > 解决方案 > 在 R 中使用 ggplot2 在图中添加注释

问题描述

我有一个 df,其中包含有关从 2020 年 4 月 11 日到 2021 年 7 月 1 日(YYYY-MM-DD)每天死于某种疾病的滚动平均值的信息。

head(df)
        DATE  DEATHS_RA
1 2020-04-11   1.666667
2 2020-04-12   2.166667
3 2020-04-13   2.333333
4 2020-04-14   2.500000
5 2020-04-15   2.666667
6 2020-04-16   2.833333

有了这段代码,我得到了这个基本图表。

try1 <- ggplot(df) +
  aes(x = DATE, y = DEATHS_RA) +
  geom_line(size = 1, colour = "#871709") +
  theme_minimal()+
  labs(x="",y="")

在此处输入图像描述

但我想知道是否可以添加如下图所示的注释(我从互联网上提取的)。 在此处输入图像描述

我尝试使用我在不同教程中寻找的以下代码,ggplot2但结果与上图中的相同,就好像 R 无法识别我在geom_label.

try1+
geom_label(label="Look at this!", x=2021-05-01,y=10,
    hjust = 0, 
    vjust = 0.5, 
    lineheight = 0.8,
    colour = "#555555", 
    fill = "white", 
    label.size = NA, 
    size = 6
  )

标签: rggplot2

解决方案


DATE的 is of class Date,这使得线图成为可能。因此,如果要注释,还需要将其作为类输入Date

df = structure(list(DATE = structure(c(18363, 18364, 18365, 18366, 
18367, 18368), class = "Date"), DEATHS_RA = c(1.666667, 2.166667, 
2.333333, 2.5, 2.666667, 2.833333)), row.names = c("1", "2", 
"3", "4", "5", "6"), class = "data.frame")

我们创建一个注释数据框来包含您的标签,稍后会很有用:

ann = data.frame(DATE = as.Date("2020-04-12"),
DEATHS_RA=2.16,label = "Look at this!")

它看起来像这样:

try1+
geom_label(data = ann,aes(label=label))

在此处输入图像描述

要使用箭头,我们需要ggrepel:

library(ggrepel)
try1+
geom_label_repel(data = ann,aes(label=label),box.padding = 5)

在此处输入图像描述


推荐阅读