【发布时间】:2020-05-25 14:28:37
【问题描述】:
我使用来自cowplot 包的plot_grid 安排了16 个地块(4x4)。我想对齐排列的最后一列,以使所有图例垂直对称。我已经阅读了this,但我没有得到我想要的东西。我不知道为什么它不起作用。
arrange <- plot_grid(P.ADelay.5m,P.ADelay.15m,P.ADelay.25m,P.ADelay.35m + theme(legend.justification = c(0,1)),
P.SW.5m,P.SW.15m,P.SW.25m,P.SW.35m + theme(legend.justification = c(0,1)),
P.Method.5m,P.Method.15m,P.Method.25m,P.Method.35m + theme(legend.justification = c(0,1)),
P.Period.5m,P.Period.15m,P.Period.25m,P.Period.35m + theme(legend.justification = c(0,1)),
P.Statistic.5m,P.Statistic.15m,P.Statistic.25m,P.Statistic.35m + theme(legend.justification = c(0,1)),
ncol=4, nrow = 5, align = "v" )
arrange
我分享了这个假的例子,我在其中遵循了相同的程序:
library(ggplot2)
library(cowplot)
library(ggpubr)
theme_set(theme_cowplot())
df1 <- data.frame(x = 1:12, y = (1:12)^2)
df1$grp = c('A', 'B', 'C')
df2 <- data.frame(x = 1:12, y = (1:12)^2)
df2$Statistic = c('none', 'Mean')
df3 <- data.frame(x = 1:12, y = (1:12)^2)
df3$Methodology = c('FFFFFF', 'GGGGGGGGG', 'HH','IIIII')
df4 <- data.frame(x = 1:12, y = (1:12)^2)
df4$Depth = c('15m', '1000m')
p1.a <- ggplot(df1, aes(x, y, color=grp)) + geom_point() + theme(legend.position = "none")
p1.b <- ggplot(df1, aes(x, y, color=grp)) + geom_point()
p2.a <- ggplot(df2, aes(x, y, color=Statistic)) + geom_point() + theme(legend.position = "none")
p2.b <- ggplot(df2, aes(x, y, color=Statistic)) + geom_point()
p3.a <- ggplot(df3, aes(x, y, color=Methodology)) + geom_point() + theme(legend.position = "none")
p3.b <- ggplot(df3, aes(x, y, color=Methodology)) + geom_point()
p4.a <- ggplot(df4, aes(x, y, color=Depth)) + geom_point() + theme(legend.position = "none")
p4.b <- ggplot(df4, aes(x, y, color=Depth)) + geom_point()
plot_grid(
p1.a, p1.a, p1.a, p1.b + theme(legend.justification = c(0,1)),
p2.a, p2.a, p2.a, p2.b + theme(legend.justification = c(0,1)),
p3.a, p3.a, p3.a, p3.b + theme(legend.justification = c(0,1)),
p4.a, p4.a, p4.a, p4.b + theme(legend.justification = c(0,1)),
ncol = 4,align = "hv"
)
我收到消息“警告消息:除非设置了轴参数,否则图形无法垂直对齐。放置未对齐的图形。”
如何对齐图例?
【问题讨论】:
-
您的
plot_grid()电话中可能需要axis = 'lr'或axis = 'tblr' -
你是对的,使用
axis = 'lr'或axis = 'tblr'我得到了要对齐的图例。但是,列之间的空间急剧增加!如果不是一回事,那就是另一回事了!!如果我删除了align="hv"中的v,那么图例就会失去对齐。如果我删除axis = 'lr'或axis = 'tblr',我也会失去对齐。然而,正如我已经告诉过你的,如果我保持axis = 'lr'/axis = 'tblr'和align="hv",我得到的对齐是很少见的。你知道为什么吗?这只是为了知道它。我现在要试试你的其他建议。