使用grid.arrange排列的标签绘图

3
我使用grid.arrange将多个图形附加到一个页面上。
是否有一种方法可以使用“(a)”,“(b)”等标签对每个图进行标记?
我尝试使用geom_text,但它似乎与我的图形不兼容...

my plots

如您所见,geom_text与我的图例符号有一些奇怪的交互作用。

我将使用mtcars数据展示一个示例,说明我想要实现的内容。我发现替代geom_text的方法是“annotate”,它不会与我的图例符号产生交互作用。然而,仅标记一个面板并不容易...

q1=ggplot(mtcars, aes(x=mpg, y=wt)) + 
geom_line() +
geom_point()+
facet_grid(~cyl)+
annotate(geom="text", x=15, y=12, label="(a)",size=8,family="serif")

q2=ggplot(mtcars, aes(x=mpg, y=wt,)) + 
geom_line() +
geom_point()+
facet_grid(~cyl)+
annotate(geom="text", x=15, y=12, label="(b)",size=8,family="serif")


geom_text(x=15, y=5,size=8, label="(b)")

gt1 <- ggplotGrob(q1)
gt2 <- ggplotGrob(q2)


grid.arrange(gt1,gt2, ncol=1)

mtcars example

因此,我的问题是,是否有办法标记使用grid.arrange排列的图形,以便每个图形中的第一个面板都带有a、b、c等标签?

是的,你可以使用 cowplot。我在我的文章 这里 中记录了一系列处理排列图的包。 - Roman Luštrik
2个回答

4

您可以使用ggpubr软件包中的ggarrange函数,并通过参数labels为每个图设置标签:

library(ggplot2)
library(ggpubr)
q1=ggplot(mtcars, aes(x=mpg, y=wt)) + 
  geom_line() +
  geom_point()+
  facet_grid(~cyl)+
  annotate(geom="text", x=15, y=12, label="(a)",size=8,family="serif")

q2=ggplot(mtcars, aes(x=mpg, y=wt,)) + 
  geom_line() +
  geom_point()+
  facet_grid(~cyl)+
  annotate(geom="text", x=15, y=12, label="(b)",size=8,family="serif")                                                         

ggarrange(q1,q2, ncol = 1, labels = c("a)","b)"))

这是您正在寻找的吗?

在此输入图片描述


2
如果您设置inherit.aes=FALSE,就可以防止其干扰:
ggplot(mtcars, aes(x=mpg, y=wt,col=factor(cyl))) + 
geom_line() +
geom_point()+
geom_text(inherit.aes=FALSE,aes(x=15,y=12,label="(a)"),
size=8,family="serif")+
facet_grid(~cyl)

在此输入图片描述

如果您只想标记第一个方面(希望我理解正确),我认为最简单的方法是指定一个数据框,例如,如果我们只想要第一个方面中的某些内容,

#place it in the first
lvl_data = data.frame(
x=15,y=12,label="(a)",
cyl=levels(factor(mtcars$cyl))[1]
)

ggplot(mtcars, aes(x=mpg, y=wt,col=factor(cyl))) + 
    geom_line() +
    geom_point()+
    geom_text(data=lvl_data,inherit.aes=FALSE,
aes(x=x,y=y,label=label),size=8,family="serif")+
    facet_grid(~cyl)

enter image description here


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