[英]How to create a common title in X and Y axis in an arrange of plots using `ggdraw` and `plot_grid()` in R?
I have an arrange of plots for which I would like to create a common X-axe title and a common Y-axe title.我有一组图,我想为其创建一个常见的 X 轴标题和一个常见的 Y 轴标题。 As an example:
举个例子:
library(ggplot2)
library(cowplot)
library(ggpubr)z
theme_set(theme_cowplot())
df <- data.frame(x = 1:12, y = (1:12)^2)
df$grp = c('Some', 'Things', 'In a legend')
p <- ggplot(df, aes(x, y, color=grp)) + geom_point()
leg <- get_legend(p)
leg <- as_ggplot(leg)
p = p + theme(legend.position = "none")
plot_grid(
p, p, leg,
p, p, leg,
ncol = 3, rel_widths=c(2,2,1)
)
After some reading, I found as an option the use of ggdraw
.经过一番阅读,我发现可以选择使用
ggdraw
。 However, I don't know how it works well, and I don't figure out how to get what I want (one Y
in the y-axis and one X
in the x-axis).但是,我不知道它是如何工作的,也不知道如何得到我想要的(y 轴上的一个
Y
和 x 轴上的一个X
)。 Below is what I tried:以下是我尝试过的:
df <- data.frame(x = 1:12, y = (1:12)^2)
df$grp = c('Some', 'Things', 'In a legend')
p <- ggplot(df, aes(x, y, color=grp)) + geom_point()
leg <- get_legend(p)
leg <- as_ggplot(leg)
p = p + theme(legend.position = "none",axis.title.x =element_blank(),axis.title.y =element_blank()) # I remove x and y titles for the plots
P <-plot_grid(
p, p, leg,
p, p, leg,
ncol = 3, rel_widths=c(2,2,1)
)
P
ggdraw
, I created an arrange of plots with one x-axis title in my desired position.ggdraw
,我在我想要的 position 中创建了一系列带有一个 x 轴标题的图。 However, I don't know how to get the same for the y-axe.P1 <- ggdraw(add_sub(P , "X", vpadding=grid::unit(0.8,"lines"), # With `0.8` I add some space in the X margin.
y=2, x=1, vjust=1, # With `y` and `x` I can indicate the coordinates for my desired text
angle=0) # With this I can change the orientation of the text
)
P1
Does anyone know how to create a common x and y-axis using ggdraw
or with another function?有谁知道如何使用
ggdraw
或另一个 function 创建一个通用的 x 和 y 轴?
I think you just need to play around with the margins before add_sub
:我认为您只需要在
add_sub
之前使用边距:
P <-plot_grid(
p, p, leg,
p, p, leg,
ncol = 3, rel_widths=c(2,2,1)
) + theme(plot.margin = margin(30, 30, -50, 50))
P <- add_sub(P, "x axis text", hjust = 1)
P <- add_sub(P, "y axis text", -0.05, 5, angle = 90)
ggdraw(P)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.