如何解决将基本 ggplots 与 ggarrange (R) 中的多面 ggplots 对齐
我已经创建了许多 ggplots 图,我想用 ggpubr 包的 ggarrange 函数来组织它们。 当我尝试将基本 ggplots 与分面 ggplots 结合时遇到了一个问题:我无法再对齐它们了。
这是我的问题的可重现示例:
#Creating some data
df2 <- data.frame(supp=rep(c("VC","OJ"),each=3),dose=rep(c("0.5","1","2"),2),len=c(6.8,15,33,4.2,10,29.5))
head(df2)
#normal ggplot #1
p1<-ggplot(data=df2,aes(x=dose,y=len,group=supp)) +
geom_line()+
geom_point()
#normal ggplot #2 with a different y axis
p2<- ggplot(data=df2,y=10*len,group=supp)) +
geom_line()+
geom_point()
#faceted plot
p3<-p2+
facet_wrap(. ~ supp)
当我结合两个基本的 ggplots 并强制与 y 轴垂直对齐时,它就像一个魅力!
ggarrange(p1,p2,nrow=2,align="v")
但是当我将基本图与分面图结合起来时,对齐不起作用。
ggarrange(p1,p3,align="v")
我收到以下警告:
警告信息:除非轴 参数设置。不对齐地放置图形。
你能帮我解决这个问题吗?我已经看到了其他可能的想法来解决这个问题,但我真的很想坚持使用 ggpubr!
非常感谢
解决方法
您可以填充 y 轴以在 ggarrange 中对其进行调整。您可以在 y 轴周围填充边距,这将使两个数字对齐(虽然有点笨拙)。
df2 <- data.frame(supp=rep(c("VC","OJ"),each=3),dose=rep(c("0.5","1","2"),2),len=c(6.8,15,33,4.2,10,29.5))
#normal ggplot #1
p1<-ggplot(data=df2,aes(x=dose,y=len,group=supp)) +
geom_line()+
geom_point() +
theme(axis.title.y = element_text(margin = margin(t = 0,r = 0,b = 0,l = 5)))
#normal ggplot #2 with a different y axis
p2<- ggplot(data=df2,y=10*len,group=supp)) +
geom_line()+
geom_point()
p3<-p2+
facet_wrap(. ~ supp)
ggarrange(p1,p3,nrow=2)
,
这是一个使用 patchwork 包的解决方案。假设我们已经按照原始帖子中的描述设置了图 p1
和 p3
。然后,通过一些拼凑魔法,我们将这些情节结合起来。 /
运算符表示 p1 应高于 p3。
library(patchwork)
p1 / p3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。