geom_text 和方面不工作

geom_text and facets not working

数据文件太大 dput 但我希望有人能够识别我的错误。故事是这样的:我使用 ggplot 和以下代码制作了以下小倍数图。一切正常。

ggplot(sm.df, aes(year, N, group = 1)) + geom_line(aes(colour = top10)) + 
facet_wrap( ~ shortTitle, ncol=7) +
theme_bw() +
theme(panel.grid.major = element_blank(), 
panel.grid.minor = element_blank(), 
axis.text.x = element_text(angle=45, hjust=1, size =8)) + 
scale_x_discrete(breaks=seq(1989, 2020, 8)) + 
ylim(0, 150)

现在,我想用整体 N 注释每个方面。我创建了一个向量,其中包含 x 位置、y 位置和要绘制的实际值。所以,基本上,每张图上的所有内容都将位于相同的 X 和 Y 位置,并带有不同的标签。

'data.frame':   78 obs. of  3 variables:
 $ x1     : num  12.5 12.5 12.5 12.5 12.5 12.5 12.5 12.5 12.5 12.5 ...
 $ y1     : num  130 130 130 130 130 130 130 130 130 130 ...
 $ N.label: int  1650 1456 1348 1216 1086 1035 985 940 888 826 ...

但是,当我将 geom_text(data = x.df, aes(x = x1, y = y1, label = N.label), inheret.aes=FALSE) 添加到图中时,似乎每个标签都在每个面上重新打印。显然我做错了什么。

我已经详细介绍了如何注释多面图,但我遗漏了这个问题。如果您有任何想法,我们将不胜感激 - 生成一些数据不是很简单,但我想如果需要的话我会的。

This 回答一个非常相似的问题应该有所帮助。需要有一个标识符来标识要在哪个面上打印哪个标签。在您的情况下,您应该为此目的使用 shortTitle

这是一个修改示例,使用 mtcars 并根据齿轮数进行分面和标记

library(ggplot2)

xpos <- c(10,10,10) 
ypos <- c(Inf,Inf,Inf)
lab <- c(378,2,50)
gears <- c(3:5)
ldata <- data.frame(xpos, ypos, lab, gears)


ggplot(mtcars) + geom_bar(aes(x=cyl)) + facet_wrap(~gears, ncol=2) + 
  geom_text(data=ldata, aes(x=xpos, y=ypos, 
                            label=lab, size=1), 
            vjust=2, parse=FALSE)

尝试将 shortTitle 添加到您的标签列表中。看起来这可能就是您所需要的。如果您提供数据框的子样本,这将有助于确定。