ggplot2使用patchwork包高質(zhì)量拼圖

安裝所需要的R包

BiocManager::install("patchwork")
BiocManager::install("cowplot")

加載所需的R包,并將默認主題設(shè)置為theme_bw(),并將圖例放在圖的頂部

library(ggplot2)
library(cowplot)
library(patchwork)
theme_set(
  theme_bw() +
    theme(legend.position = "top")
  )

創(chuàng)建一些基本圖像:

library("ggplot2")
my3cols <- c("#E7B800", "#2E9FDF", "#FC4E07")
ToothGrowth$dose <- as.factor(ToothGrowth$dose)

p <- ggplot(ToothGrowth, aes(x = dose, y = len))
bxp <- p + geom_boxplot(aes(color = dose)) +
  scale_color_manual(values = my3cols)

dp <- p + geom_dotplot(aes(color = dose, fill = dose), 
                       binaxis='y', stackdir='center') +
  scale_color_manual(values = my3cols) + 
  scale_fill_manual(values = my3cols)

lp <- ggplot(economics, aes(x = date, y = psavert)) + 
  geom_line(color = "#E46726") 

dens <- ggplot(iris, aes(Sepal.Length)) +
  geom_density(aes(color = Species)) +
  scale_color_manual(values = my3cols)

patchwork包水平拼接

bxp + dens
bxp | dens
1.png

垂直布局
可以通過向plot_layout()來指定布局,可以定義網(wǎng)格的尺寸以及要分配給不同行和列的空間

bxp + dens + plot_layout(ncol = 1)
2.png

指定每個圖的尺寸

bxp + dens + plot_layout(ncol = 1, heights = c(1, 3))
bxp + dens + plot_layout(ncol = 2, width = c(1, 2))
3.png

4.png

增加圖片之間的空間

bxp + plot_spacer() + dens
5.png

嵌套布局
您可以通過將部分圖用括號括起來來制作嵌套圖版面

lp + {
  dens + {
    bxp +
    dp +
    plot_layout(ncol = 1)
  }
} +
  plot_layout(ncol = 1)
6.png

高級功能

bxp + dp - lp + plot_layout(ncol = 1)
7.png

patchwork同時提供|和/分別用于水平和垂直布局

(bxp | lp | dp) / dens
8.png

可以使用&或 * 向所有子圖添加元素,而不必單獨修改所有圖。兩者的不同之處 * 僅在于將影響當(dāng)前嵌套級別上的圖:

(bxp + (dp + dens) + lp + plot_layout(ncol = 1)) * theme_gray()
9.png

而&將遞歸到嵌套級別:

(bxp + (dp + dens) + lp + plot_layout(ncol = 1)) & theme_gray()
10.png

添加標記

patchwork <- (bxp + (dp + dens) + 
lp + plot_layout(ncol = 1)) & theme_gray()
patchwork + plot_annotation(tag_levels = 'A')
11.png
library("cowplot")
plot_grid(bxp, dp, dens , 
          labels = c("A", "B", "C"),
          ncol = 2, nrow = 2)
12.png

合并相同圖例(guides = 'collect')

p1 <- ggplot(mtcars) + 
  geom_point(aes(mpg, disp)) + 
  ggtitle('Plot 1')

p2 <- ggplot(mtcars) + 
  geom_boxplot(aes(gear, disp, group = gear)) + 
  ggtitle('Plot 2')

p3 <- ggplot(mtcars) + 
  geom_point(aes(hp, wt, colour = mpg)) + 
  ggtitle('Plot 3')

p4 <- ggplot(mtcars) + 
  geom_bar(aes(gear)) + 
  facet_wrap(~cyl) + 
  ggtitle('Plot 4')
p1a <- ggplot(mtcars) + 
  geom_point(aes(mpg, disp, colour = mpg, size = wt)) + 
  ggtitle('Plot 1a')
p1a | (p2 / p3)
R1.png
(p1a | (p2 / p3)) + plot_layout(guides = 'collect')
R.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容