正版厦门网站设计公司,电竞竞猜网站 建设,泰州专业制作网站,中国十大电商公司排名01写在前面 最近画了几张热图#xff0c;准备拿AI拼一拼#xff08;没错我就是那个不正经的生信人#xff09;#xff0c;无奈图片太大#xff0c;AI读进去就卡的动不了#xff0c;被迫只能用R语言拼图#xff0c;不过patchwork用起来是真香#xff0c;基本上你在R中可…01写在前面最近画了几张热图准备拿AI拼一拼没错我就是那个不正经的生信人无奈图片太大AI读进去就卡的动不了被迫只能用R语言拼图不过patchwork用起来是真香基本上你在R中可以完成数据分析到排出文章Figure的所有操作大家可以感受一下。02教学视频大家可以先做一做R语言基础小测验看看自己是否需要跟我们5.5h入门R语言的课程。先上教程视频B站同步播出https://www.bilibili.com/video/BV1miNVeWEkw完整视频回放和答疑服务可见5.5h入门R语言03Patchwork假如我有这么四张图if(!require(patchwork))install.packages(patchwork) ## 载入需要的程辑包patchwork library(ggplot2) p1 - ggplot(mtcars) geom_point(aes(mpg, disp)) ggtitle(Plot 1) p1p2 - ggplot(mtcars) geom_boxplot(aes(gear, disp, group gear)) ggtitle(Plot 2) p2p3 - ggplot(mtcars) geom_point(aes(hp, wt, colour mpg)) ggtitle(Plot 3) p3p4 - ggplot(mtcars) geom_bar(aes(gear)) facet_wrap(~cyl) ggtitle(Plot 4) p4最基本的排版用法p1p2#要加载patchwork不然会显示数值相加的错误p1 p2 labs(subtitle This will appear in the last plot)#加上副标题p1p2p3p4#默认情况下patchwork会让图片尽量的方正一些所以四张图自然会以2*2的形式呈现p1 p2 p3 p4 plot_layout(nrow 3, byrow FALSE)#设置将图片摆成三行p1 p2 p3 p4 plot_layout(ncol 3)#设置将图片摆成三列#如果你觉得加号设置行列的形式不够灵活你想把某些特定的图片放在一列或一行 p1|p2#放在一行p1/p2#放在一列p1|(p2/p3)#组合拳加入标题与文字注释#添加标题 (p1 | (p2 / p3)) plot_annotation(title 组合拳加标题)#加标题p1 p2 p3 plot_annotation(title The surprising truth about mtcars, theme theme(plot.title element_text(size 18))) theme(text element_text(mono))#调整标题的大小与风格#添加文字注释的方式有很多 p1 p2 p3 plot_annotation(tag_levels I)#比如可以一键式加上Fig legend###下面两个是我猜的真的有这种功能哈哈哈 p1 p2 p3 plot_annotation(tag_levels A)#用字母式的Fig legendp1 p2 p3 plot_annotation(tag_levels A) theme(plot.tag element_text(size 8))#大小也是可以调整的p1 p2 p3 plot_annotation(tag_levels A) theme(plot.tag element_text(size 18))#大小也是可以调整的p1 p2 p3 plot_annotation(tag_levels 1)#用数字式的Fig legend#可以组合式的添加Fig legend并且可以拥有前缀 p1 p2 p3 plot_annotation(tag_levels c(A, 1), tag_prefix Fig. , tag_sep ., tag_suffix :)#感受一下title、subtitle、caption有何不同 p1 p2 plot_annotation( title The surprising truth about mtcars, subtitle These 3 plots will reveal yet-untold secrets about our beloved>一些进阶布局的方法#加入空图 p1 plot_spacer() p2 plot_spacer() p3 plot_spacer()(p1 plot_spacer() p2) / (plot_spacer() p3 plot_spacer())#在上面的组合拳中加空图p1 p2 p3 p4 plot_layout(widths c(2, 1))#图片的不均等布局左右之间按2布局p1 p2 p3 p4 plot_layout(widths c(2, 1), heights unit(c(5, 1), c(cm, null)))#同理还可以上下之间按比例布局#如果你有更复杂的需求你可以自定义布局的样式记住layout要写成四方的样子空的地方用#替代 layout - ##BBBB AACCDD ##CCDD p1 p2 p3 p4 plot_layout(design layout)#如果你觉得上面的AABB有些混乱你不能理解那么你可以这样指定 layout - A#B #C# D#E wrap_plots(D p1, C p2, B p3, design layout)#布局还可以用这种局部的方式指定这种方法的好处是图片可以堆叠在同一位置重叠 layout - c( area(t 2, l 1, b 5, r 4), area(t 1, l 3, b 3, r 5) ) p1 p2 plot_layout(design layout)#与两张图片部分区域重叠相类似你还可以将一张图片插入到另一张图片中 p1 inset_element(p2, left 0.6, bottom 0.6, right 1, top 1)p1 inset_element(p2, left 0, bottom 0.6, right 0.4, top 1, align_to full)p1 inset_element( p2, left 0.5, bottom 0.5, right unit(1, npc) - unit(1, cm), top unit(1, npc) - unit(1, cm) )#插入一个图注这种需求还是挺常见的 p3 inset_element(p1, left 0.5, bottom 0, right 1, top 0.5, on_top FALSE, align_to full)#接下来这个操作有点神奇可以将图里的图注提取出来展示在大图的右侧 p1 p2 p3 p4 #不提取p1 p2 p3 p4 plot_layout(guides collect)#提取图注#细节一点你还可以指定布局中每个元素是否需要提取图注 ((p2 / p3 plot_layout(guides auto)) | p1) plot_layout(guides collect)#如果你不满足于仅将图注展示在大图右侧你想给图注一个单独的空间 p1 p2 p3 guide_area() plot_layout(guides collect)看的出来patchwork的功能还是很强大的最大的优点是不用忍受AI的卡顿。当然了该用AI的时候还是用AIPatchwork有时候操作起来也不是很方面。