将来自 DataFrame 的附加标签添加到具有现有标签的 facet_grid

Add additional labels from a DataFrame to a facet_grid with existing label

我有一组数据需要添加到标签级别。一个在分面网格内的单个图表上,一个来自一个小数据框,每个图表都有条目。

在下面的示例中,您会看到我可以毫无问题地添加到单个图表,但是当我尝试从 df 添加时,出现错误 - Error in FUN(X[[i]], ...) : object 'wt' not found

准备:

library(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_line()
p <- p + facet_grid(. ~ cyl)

ann_text <- data.frame(mpg = 30,wt = 5,lab = "Text",
                       cyl = factor(8,levels = c("4","6","8")))

dfl <- data.frame(name = c('Jim',"Bob", "Sue"), r = c(-0.2, 0.5, -0.4))

单标签:

p + geom_text(data = ann_text,label = "Text") 

多个标签:

p + geom_text(data = ann_text,label = "Text") + 
  geom_text(data = dfl, mpg = 30,wt = 5, aes(label = r))

我正在使用的方法是尝试重新创建我在 SO 和其他地方找到的其他示例,但我似乎遗漏了一些东西。

它在您的第二个代码中不起作用,因为在第二个 geom_text 中,您的 mpgwt 不在 aes() 中。此外,这两个变量在您的 dfl.

中不存在

如果您希望更好地控制 r 变量的标签,您可以在 dfl 中创建额外的列,指定 xy 的位置标签,并在 geom_text(aes()).

中使用这些变量

请注意,我修改了第二个 geom_text 中的 y 位置以避免“0,2”与“文本”重叠。

library(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_line()
p <- p + facet_grid(. ~ cyl)

ann_text <- data.frame(mpg = 30,wt = 5,lab = "Text",
                       cyl = factor(8,levels = c("4","6","8")))

dfl <- data.frame(name = c('Jim',"Bob", "Sue"), r = c(-0.2, 0.5, -0.4))

p + geom_text(data = ann_text,label = "Text") + 
  geom_text(data = dfl, aes(30, 4, label = r), check_overlap = T)

reprex package (v2.0.1)

于 2022-05-06 创建