geom_text 在所有分面上写入所有数据

8
我使用了 ggplot 和 facet_grid,希望在每个面板上指示每个面板中观察到的数量。我遵循了许多网站提供的示例,但当我让它写任何内容时,它会将所有四个观察数字都写在所有四个图形的顶部。
以下是 geom_text 层命令: geom_text(data=ldata, aes(x=xpos, y=ypos, label=lab, size=1), group=NULL, hjust=0, parse=FALSE)
而 ldata 是一个数据框,列出了每个图中的坐标 (xpos, ypos) 和观察数 (lab)。它在图上以正确的位置打印数字,但所有四个数字都写在所有四个图形的顶部。我无法弄清楚我做错了什么。
1个回答

11

你差不多做到了。只需要在你的ldata数据框中再添加一列,这是你将要提供给facet_grid的内容。(我将Ypos更改为Inf)

请注意下面ldatasplitter列的作用以及它在facet_grid中的使用。

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


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

这将产生:

在此输入图像描述


1
太好了,就是这样。我参考的例子没有提到这一点。谢谢你,Ram! - Joseph Kreke
是的,谢谢。这意味着您已经“接受”了答案,并显示问题已被回答。 - Ram Narasimhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接