日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

双y轴如何合并图例_如何对图表批量组合、对齐、画中画、合并图例、自动化加标签。。。...

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 双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)

整合多個圖表?

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轴如何合并图例_如何对图表批量组合、对齐、画中画、合并图例、自动化加标签。。。...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。