簡體   English   中英

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)

輸出將被調整以保持相同的尺寸:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM