将注释(标签)相对于默认位置向右移动。

编程语言 2026-07-07

下面给出一个示例:

library(patchwork)

p1 <- ggplot(iris, aes(x=Sepal.Length, y=Petal.Length)) + geom_point()
p2 <- ggplot(iris, aes(x=Sepal.Length, y=Petal.Length)) + geom_point()

tags = list(c('A','B'))

p1 + p2 +
  plot_annotation(tag_levels = tags)
  # + theme(plot.tag.position = c(0, 1))  # really identical to "topleft"?

如何将标签“B”(第二个图的标签)向右移动?

我尝试修改 plot.tag.locationplot.tag.position,但这些参数似乎并非相对于“topleft”,并且也会影响标签“A”。

tag = element_text(hjust=2) 不会改变任何东西,
尽管 tag = element_text(vjust=2) 确实起作用。

tag = element_text(margin = margin(l=12)) 只是为所有标签的左侧添加边距,但我想移动注释(标签),同时不在各个面板(绘图)之间增加额外的间距。

解决方案

我们可以使用 theme(plot.tag.position = c(0.05, 0.975))

library(patchwork)
library(ggplot2)

p1 <- ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point() 
p2 <- ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point()


p1 + (p2 + theme(plot.tag.position = c(0.05, 0.975))) + 
  plot_annotation(tag_levels = list(c('A', 'B')))

如果你希望两个标签都更靠近绘图:

p1 + p2 + plot_annotation(tag_levels = list(c('A', 'B'))) &
  theme(plot.tag.position = c(0.05, 1))

创建于2026-07-03,使用 reprex v2.1.1

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章