我想将样本大小值与绘图上的点相关联.我可以geom_text用来定位点附近的数字,但这很麻烦.将它们沿着图的外边缘排列会更加清晰.
例如,我有:
df=data.frame(y=c("cat1","cat2","cat3"),x=c(12,10,14),n=c(5,15,20))
ggplot(df,aes(x=x,y=y,label=n))+geom_point()+geom_text(size=8,hjust=-0.5)
Run Code Online (Sandbox Code Playgroud)
这产生了这个情节:

我更喜欢这样的东西:

我知道我可以创建第二个图并使用grid.arrange(这篇文章),但确定textGrobs与y轴对齐的间距会很繁琐.有更简单的方法吗?谢谢!
我正在使用ggplot2和animation包制作一个动画情节.动画的每一帧都包含一个包含两位信息的地图,我想将其用作标题/标签.
在我看来,有两种方法可以做到这一点.
geom_text使其没有标题边距,然后用于在图上添加"标题"作为文本注释. 第一种方法并不理想,因为我需要为每个帧使用相同的绘图限制,我从以lat/long测量的地图范围中获得这些.确定标签所需的额外高度会导致丑陋的单位混合.因此,添加第二个标题在语义上对我来说似乎更明智,但在玩完之后annotation_custom,我似乎无法弄明白.
这是我所追求的模型,展示了两个"标题",每个标题都有不同的对齐方式,以确保它们在重复的帧中保持不变.我打开了情节边框来帮助想象这个位置.在最终的情节中,这将被删除.

谢谢你的帮助!
编辑
感谢Baptiste的签名发布.我不得不使用稍微不同的参数来(a)获得正确的定位和(b)对两个标题使用相同的字体.这是一个例子:
require(gtable)
require(ggplot2)
## Create the basic plot
df <- data.frame(x=1:10, y=1:10)
gg <- ggplot(df, aes(x,y)) + geom_point() + labs(title="Left") +
theme(plot.title=element_text(hjust=0))
## Get the title style from the original plot
g <- ggplotGrob(gg)
title_style <- g$grobs[[8]]$gp
## Add the second title and plot
g2 <- gtable_add_grob(g, textGrob("Right", x=1, hjust=1, gp=title_style),
t=2, l=4, b=2, r=4, name="right-title")
grid.draw(g2)
Run Code Online (Sandbox Code Playgroud)
这是结果:

我从下表中绘制了一个图表。
BoatPhs fit se lower upper
1 Before 3.685875 0.3287521 3.038621 4.333130
2 After0-20NTA 3.317189 0.6254079 2.085872 4.548506
3 After0-20TAA 5.579384 0.5696270 4.457890 6.700878
4 After0-20TAP 3.932360 0.4304098 3.084960 4.779760
5 After20-40NTA 4.522714 0.7771793 2.992586 6.052842
6 After20-40TAA 4.505207 0.5500699 3.422217 5.588196
7 After20-40TAP 3.602183 0.3880538 2.838174 4.366192
8 ApproachNTA 4.039599 0.5688482 2.919638 5.159560
9 ApproachTAA 4.421112 0.5176408 3.401969 5.440255
10 ApproachTAP 4.497809 0.3978328 3.714547 5.281071
Run Code Online (Sandbox Code Playgroud)
船相是 x 轴,拟合绘制在 y 轴上。目前,我的轴刻度为 Before、ApproachNTA、ApproachTAA、ApproachTAP、After0-20NTA 等。
我最初将这些标签旋转了 90 度,以便更好地查看它们,但不喜欢它的外观。我目前已重命名标签(使用下面的代码),以便现在在轴刻度上显示的是 x 轴上的“在 NTA TAA …