![](/img/trans.png)
[英]Increase space between axis.title and axis.text in ggplot2 (version >= 0.9.0)
[英]Adjust spacing between subplots of panel figure (ggplot) in case of different axis.title/text properties
當某些圖包含軸標題/標簽而其他圖不包含時,我想使用cowplot
package 調整面板中對齊的圖之間的間距。
例子
讓我們創建三個圖:
library(tidyverse)
library(cowplot)
set.seed(123)
df <- data.frame(x = rnorm(n = 100),
y = rnorm(n = 100))
plot <- ggplot(data = df, aes(x, y)) + geom_point()
plot_grid(plot, plot, plot, nrow = 1, align = "vh")
這些情節完美地對齊,但經常。 我有一個場景,我想創建一個“更干凈”的面板圖。 一種方法是刪除第二個和第三個圖的 y 軸的標題/文本。
像這樣:
plot2 <- plot + theme(axis.title.y = element_blank(),
axis.text.y = element_blank())
plot_grid(plot, plot2, plot2, nrow = 1, align = "vh")
同樣,完美對齊,但第一個和第二個 plot(以及第二個和第三個圖)之間的間距非常大。 我想減少間距以創建更緊湊的 plot,同時軸保持完全相同的尺寸。
預期 output
這可能與cowplot
嗎? 還是有其他方法可以做到這一點?
參考github 上的這篇文章, plot_grid()
默認不添加任何空格,並使用 plot 的邊距。 要刪除 plot 區域之外的空間,可以使用them(plot.margin=...)
來刪除。
話雖如此......這不是這里發生的事情! 打印plot
或plot2
將產生沒有邊距的 plot。 看來問題在於在plot_grid()
中使用了align=
參數。 我不知道為什么,但是將其設置為默認值( align="none"
)以外的任何值都會導致繪圖周圍出現額外的空白。 很奇怪...不用說,刪除該論點可以解決您的問題:
plot_grid(plot, plot2, plot2, nrow = 1, align="vh")
plot_grid(plot, plot2, plot2, nrow = 1, align="none")
將根據您的圖形設備添加任何更多空間,因為您獲得的實際 plot 取決於該設備的大小和分辨率。
這是使用patchwork
的 package 的解決方案
library(tidyverse)
set.seed(123)
df <- data.frame(x = rnorm(n = 100),
y = rnorm(n = 100))
plot1 <- ggplot(data = df, aes(x, y)) + geom_point()
plot2 <- plot1 + theme(axis.title.y = element_blank(),
axis.text.y = element_blank())
# install.packages("patchwork", dependencies = TRUE)
library(patchwork)
plot1 + plot2 + plot2 +
plot_layout(ncol = 3)
由代表 package (v0.3.0) 於 2020 年 7 月 24 日創建
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.