双y轴如何合并图例_如何对图表批量组合、对齐、画中画、合并图例、自动化加标签。。。...
生活随笔
收集整理的這篇文章主要介紹了
双y轴如何合并图例_如何对图表批量组合、对齐、画中画、合并图例、自动化加标签。。。...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于圖表的組合排版,在之前的微信文章中介紹過很多常規的方法,比如《繪制復雜組合圖表的獨家秘笈分享》、《如何用Graphpad Prism繪制超復雜組合圖?》、《如何用Origin完成圖表排版?》等。可是,有小伙伴就問了,正如小項羽所言,“劍一人敵,不足學,學萬人敵”,那么有沒有批量自動化拼圖的方法?既然是批處理,就免不了需要寫腳本,這里推薦兩個專職拼圖的R包:cowplot和patchwork,二者在很多地方都很相似,下面我們就一起比較、學習下如何使用這兩個R包實現圖表的批量組合、嵌套、對齊、畫中畫、自動化加標簽、圖例合并等操作。#先使用ggplot2繪制4個范例圖表,數據為R自帶的mtcars數據集;
library(ggplot2)
head(mtcars)p1?p1p2?"skyblue")
p2
p3???theme(axis.text.x = element_text(size = 10, angle = 60, vjust = 0.5))
p3
p4?"skyblue") + facet_wrap(~cyl)
p4#載入patchwork包;library(patchwork)#載入cowplot包;library(cowplot)
(p2?| p3 )/ (p1 | plot_spacer())cowplot:#“手工”嵌套;bottom_row?bottom_rowplot_grid(p1, bottom_row, ncol = 2)
((p2?/ p3 + plot_layout(guides = 'auto')) | p1) + plot_layout(guides = 'collect')默認guides = 'auto',當guides = 'collect'時合并圖例,當guides = 'keep'時強制將圖例置于原圖旁。cowplot:#對于cowplot,需先繪制無圖例的組合圖;p3a?"none")
plot2?plot2
#提取圖例;
legend?#將圖例組合進來;
plot_grid(plot2, legend, rel_widths = c(3, 0.5))#同樣的方法,可以將圖例加到底部;legend_b?"bottom"))
plot_grid(plot2, legend_b, nrow = 2,rel_heights = c(3, 0.5))
library(ggplot2)
head(mtcars)p1?p1p2?"skyblue")
p2
p3???theme(axis.text.x = element_text(size = 10, angle = 60, vjust = 0.5))
p3
p4?"skyblue") + facet_wrap(~cyl)
p4#載入patchwork包;library(patchwork)#載入cowplot包;library(cowplot)
整合多個圖表?
patchwork:#使用“+”操作符組合圖表;p?p#patch可以自動添加圖表標簽;p+plot_annotation(tag_levels = 'A',tag_suffix='.')#tag_levels:'a' 小寫字母, 'A' 大寫字母, '1' 數字, 'i' 小寫羅馬數字, 'I' 大寫羅馬數字;#tag_prefix和tag_suffix設置序號的前后綴字符 ;cowplot:#使用plot_grid()函數組合圖表;plot_grid(p1, p2, p3, p4)#cowplot也可自動添加編號標簽;plot_grid(p1, p2, p3, p4,labels = "AUTO")#調整標簽的字體大小(默認14)、樣式、顏色等;plot_grid(p1, p2, p3, p4,labels = c('A.', 'B.','C.', 'D.'),label_size?= 12,label_fontfamily?= "serif",label_fontface?= "plain",label_colour?= "black")通過比較組合效果可以發現,默認情況下,二者會保持拼圖結果為正方形;patchwork有自動對齊圖形區域的功能,而cowplot的組合效果更緊湊。指定排列順序
patchwork:#cowplot主要使用nrow 和 ncol兩個參數確定排列方式,并“逐行”填充;plot_grid(p1, NULL, p2,p3, ncol = 2,align = "hv")cowplot:#cowplot主要使用nrow 和 ncol兩個參數確定排列方式:plot_grid(p1, NULL, p2,p3,labels = "AUTO", ncol = 2)設置拼圖比例
patchwork:#設置寬高比例;pp?pp?+ plot_layout(widths = c(3, 1), heights = c(3,1))cowplot:
#設置寬高比例;類似的使用rel_widths 和 rel_heights 設置圖表的相對大小;plot_grid(p2, p3, p1, NULL, rel_widths = c(1.5, 1),rel_heights=c(2,1))嵌套拼圖
patchwork:patchwork提供了兩個操作符來直接實現不同圖表的嵌套拼接。#|:將這些圖橫向排列,/:將圖表豎向堆疊(豎排優先級高于橫排);p1?| (p2 / p3)(p2?| p3 )/ (p1 | plot_spacer())cowplot:#“手工”嵌套;bottom_row?bottom_rowplot_grid(p1, bottom_row, ncol = 2)
指定對齊方式
patchwork:#拼圖時自動對齊;p1?+ p2 + p3 + p4#Tips:獲取維度信息;p3_dims?p1_aligned?p3p1_aligned#注意p1_aligned無法和其他圖表組合;cowplot:#使用plot_grid()函數的align參數使網格線和坐標軸對齊;#可組合使用:align = "vh"` 或 `align = "hv"plot_grid(p1, p3, ncol = 2, align = "h")#垂直對齊失敗;plot_grid(p1, p3, nrow = 2, align = "v")#坐標軸范圍不一致時,可以對齊坐標軸;#組合關系:"t" (top), "r" (right), "b" (bottom), and "l" (left);plot_grid(p1, p2, p3, p4, nrow = 2, align = "v", axis = "tlbr")合并圖例
patchwork:#如果圖例顏色、樣式不同,會同時保留;p1?+ p2 + p3 + p4 +plot_layout(guides = 'collect')(p2?/ p3 + plot_layout(guides = 'collect')) | p1((p2?/ p3 + plot_layout(guides = 'auto')) | p1) + plot_layout(guides = 'collect')默認guides = 'auto',當guides = 'collect'時合并圖例,當guides = 'keep'時強制將圖例置于原圖旁。cowplot:#對于cowplot,需先繪制無圖例的組合圖;p3a?"none")
plot2?plot2
#提取圖例;
legend?#將圖例組合進來;
plot_grid(plot2, legend, rel_widths = c(3, 0.5))#同樣的方法,可以將圖例加到底部;legend_b?"bottom"))
plot_grid(plot2, legend_b, nrow = 2,rel_heights = c(3, 0.5))
畫中畫效果
patchwork:#inset_element()指定相對位置插入圖形;#align_to ='panel' (默認), 'plot', 'full';p1?+ inset_element(p2, left = 0.6, bottom = 0.6, right = 1, top = 1,align_to?= 'panel', ignore_tag = TRUE)+theme_cowplot(10)#這里使cowplot的theme_cowplot()主題,字體為10號;cowplot:#先應用主題;p2a?#使用draw_plot()函數在指定的位置添加圖形;ggdraw(p1) + draw_plot(p2a, x=0.58, y=0.58, width =0.4, height =0.4)#可以加上標簽;ggdraw(p1 +theme_half_open(14)) + draw_plot(p2a, x=0.58, y=0.58, width =0.4, height =0.4) +draw_plot_label(c("A", ""),c(0, 0.45),c(1, 0.95),size = 15)通過對這兩個R包的拼圖方法和效果比較,我可能更喜歡patchwork的一些,操作簡單更容易上手,好啦,今天的內容就分享到這里啦~實用科研工具推薦? ? ??
詳實生信軟件教程分享
前沿創新組學文章解讀
獨家生信視頻教程發布
總結
以上是生活随笔為你收集整理的双y轴如何合并图例_如何对图表批量组合、对齐、画中画、合并图例、自动化加标签。。。...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea保存快捷键_IntelliJ I
- 下一篇: html网页该插件不受支持,该插件不受支