ggarrange:使绘图(不包括标题、轴标题、轴标签)大小相同
ggarrange: Make plots (excluding titles, axis titles, axis labels) the same size
我正在尝试用个别情节和 ggarrange
重现 facet_grid
的风格。使用 ggarrange
函数的高度和宽度参数可以让我将所有绘图设置为相同大小,但这包括标题、轴标题等。有没有办法使绘图本身大小相同(其他试验和错误宽度相对高度和宽度)?
例子
library(ggplot2)
library(ggpubr)
df <- data.frame(x=runif(100), y=runif(100))
p1 <- ggplot(df) + geom_point(aes(x=x, y=y)) + theme(axis.title = element_text(size=100))
p2 <- p1 + xlab(NULL)
p3 <- p1 + ylab(NULL)
p4 <- p1 + xlab(NULL) + ylab(NULL)
p <- ggarrange(p2, p4, p1, p3, nrow=2, ncol=2)
print(p)
这就形成了下面的图,其中右上角的图看起来比其他图大(尽管包括轴标题它们都是相同的大小)。
这样的事情似乎更接近预期的结果:
p_fixed <- ggarrange(p2, p4, p1, p3, nrow=2, ncol=2,
heights = c(1, 1.3, 1, 1.3),
widths=c(1.1, 1, 1.1, 1))
或者,我这样做的原因是每个图表上的色标需要不同,所以如果有办法使用 facet_grid
来做到这一点,那也会有所帮助。一个更普遍的问题可能是用单独的地块复制 facet_grid
布局的最佳方法是什么。
用 patchwork
试试这个解决方案。在列表中设置你的图并使用 wrap_plots()
函数包装成一个组合图:
library(ggplot2)
library(ggpubr)
library(patchwork)
#Data
df <- data.frame(x=runif(100), y=runif(100))
#Plots
p1 <- ggplot(df) + geom_point(aes(x=x, y=y)) + theme(axis.title = element_text(size=100))
p2 <- p1 + xlab(NULL)
p3 <- p1 + ylab(NULL)
p4 <- p1 + xlab(NULL) + ylab(NULL)
#List
List <- list(p2,p4,p1,p3)
#Plot
Plot <- wrap_plots(List,ncol = 2,nrow = 2)
将调整输出以保持相同的尺寸:
我正在尝试用个别情节和 ggarrange
重现 facet_grid
的风格。使用 ggarrange
函数的高度和宽度参数可以让我将所有绘图设置为相同大小,但这包括标题、轴标题等。有没有办法使绘图本身大小相同(其他试验和错误宽度相对高度和宽度)?
例子
library(ggplot2)
library(ggpubr)
df <- data.frame(x=runif(100), y=runif(100))
p1 <- ggplot(df) + geom_point(aes(x=x, y=y)) + theme(axis.title = element_text(size=100))
p2 <- p1 + xlab(NULL)
p3 <- p1 + ylab(NULL)
p4 <- p1 + xlab(NULL) + ylab(NULL)
p <- ggarrange(p2, p4, p1, p3, nrow=2, ncol=2)
print(p)
这就形成了下面的图,其中右上角的图看起来比其他图大(尽管包括轴标题它们都是相同的大小)。
这样的事情似乎更接近预期的结果:
p_fixed <- ggarrange(p2, p4, p1, p3, nrow=2, ncol=2,
heights = c(1, 1.3, 1, 1.3),
widths=c(1.1, 1, 1.1, 1))
或者,我这样做的原因是每个图表上的色标需要不同,所以如果有办法使用 facet_grid
来做到这一点,那也会有所帮助。一个更普遍的问题可能是用单独的地块复制 facet_grid
布局的最佳方法是什么。
用 patchwork
试试这个解决方案。在列表中设置你的图并使用 wrap_plots()
函数包装成一个组合图:
library(ggplot2)
library(ggpubr)
library(patchwork)
#Data
df <- data.frame(x=runif(100), y=runif(100))
#Plots
p1 <- ggplot(df) + geom_point(aes(x=x, y=y)) + theme(axis.title = element_text(size=100))
p2 <- p1 + xlab(NULL)
p3 <- p1 + ylab(NULL)
p4 <- p1 + xlab(NULL) + ylab(NULL)
#List
List <- list(p2,p4,p1,p3)
#Plot
Plot <- wrap_plots(List,ncol = 2,nrow = 2)
将调整输出以保持相同的尺寸: