R

circlize优雅的绘制多重注释弦图

2022-05-13  本文已影响0人  R语言数据分析指南

欢迎关注R语言数据分析指南

本节来介绍如何使用circlize包绘制圈图并添加外圈进行多重注释,下面通过一个小案例进行展示

安装并加载R包

package.list=c("tidyverse","circlize")

for (package in package.list) {
  if (!require(package,character.only=T, quietly=T)) {
    install.packages(package)
    library(package, character.only=T)
  }
}

加载数据

df <- read_tsv("data.xls") %>% column_to_rownames(var="id") %>% as.matrix()

数据拆分

mat1 <- df[1:4,1:4]
mat2 <- df[1:4,5:8]
mat3 <- df[5:8,5:8]
mat4 <- df[5:8,9:12]

数据可视化

绘制基础图

set.seed(123)
par(bg = "white")

chordDiagram(df, annotationTrack = c("grid","axis"), directional = 1, transparency = 0,
             preAllocateTracks = list( track.height = uh(4,"mm"), track.margin = c(uh(4, "mm"), 0) ))
image.png

创建轨道

circos.track(track.index = 2, panel.fun = function(x, y) {
  sector.index = get.cell.meta.data("sector.index")
  xlim = get.cell.meta.data("xlim")
  ylim = get.cell.meta.data("ylim")
  circos.text(mean(xlim), mean(ylim), 
              sector.index, col = "white", cex = 0.6, niceFacing = TRUE)})

添加外圈

highlight.sector(rownames(mat1), track.index = 1, col = "#FF8C00", text = "Chitwan", 
                       cex = 0.8, text.col = "white", niceFacing = TRUE)

highlight.sector(colnames(mat1),track.index = 1,
                 col = "#1E90FF", text = "Bardia", cex = 0.8, text.col = "white", niceFacing = TRUE)

highlight.sector(colnames(mat2),track.index = 1, col = "#90EE90", text = "Khaptad",
                 cex = 0.8, text.col = "white", niceFacing = TRUE)

highlight.sector(colnames(mat4),track.index = 1,col = "#E41A1C",text = "Suklaphata",
                 cex = 0.8, text.col = "white", niceFacing = TRUE)

circos.clear()

数据获取

本节内容到此结束,本节内容到此结束,喜欢的小伙伴欢迎分享转发,评论区留言交流可获取数据

上一篇 下一篇

猜你喜欢

热点阅读