数据文件是大到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)
添加到绘图中时,似乎每个标签上的每个标签都被重新打印。显然我做错了什么。
我已经倾注了如何注释多面图,但我错过了这个问题。如果您有任何想法会非常感激 - 产生一些数据并不是非常简单,但我想如果我需要,我会这样做。
答案 0 :(得分:3)
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
添加到标签列表中。看起来这可能就是你所需要的。如果您提供数据框的子样本,这将有助于确保。