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
添加到您的标签列表中。看起来这可能就是您所需要的。如果您提供数据框的子样本,这将有助于确定。
数据文件太大 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
添加到您的标签列表中。看起来这可能就是您所需要的。如果您提供数据框的子样本,这将有助于确定。