弦图

作者

[编辑] 郑虎;

[审核] .

复杂的数据关系交互作用以和弦图的形式表现出来。

环境配置

  • 系统: Cross-platform (Linux/MacOS/Windows)

  • 编程语言: R

  • 依赖包: circlize; ggplotify

# 安装包
if (!requireNamespace("circlize", quietly = TRUE)) {
  install.packages("circlize")
}
if (!requireNamespace("ggplotify", quietly = TRUE)) {
  install.packages("ggplotify")
}

# 加载包
library(circlize)
library(ggplotify)

数据准备

基因与通路或基因本体相互作用的数据框架或矩阵。

# 加载数据
data <- read.table("files/Hiplot/020-chord-data.txt", header = T)

# 整理数据格式
row.names(data) <- data[, 1]
data <- data[, -1]
data <- as.matrix(data)

# 查看数据
head(data)
   E1 E2 E3 E4 E5
S1  4 16 12 18 11
S2  7 11  2 15 10
S3  9  2 17 16 11
S4 14  9 12  3 17
S5  1  1  7  1 12
S6 10 18  9 13  9

可视化

# 弦图
Palette <- c("#E64B35FF","#4DBBD5FF","#00A087FF","#3C5488FF","#F39B7FFF",
             "#8491B4FF","#91D1C2FF","#DC0000FF","#7E6148FF","#B09C85FF")
grid.col <- c(Palette, Palette, Palette[1:5])
p <- as.ggplot(function() {
  chordDiagram(
    data, grid.col = grid.col, grid.border = NULL, transparency = 0.5,
    row.col = NULL, column.col = NULL,  order = NULL,
    directional = 0, # 1, -1, 0, 2
    direction.type = "diffHeight", # diffHeight and arrows
    diffHeight = convert_height(2, "mm"), reduce = 1e-5, xmax = NULL, 
    self.link = 2, symmetric = FALSE, keep.diagonal = FALSE, 
    preAllocateTracks = NULL,
    annotationTrack = c("name", "grid", "axis"),
    annotationTrackHeight = convert_height(c(3, 3), "mm"),
    link.border = NA, link.lwd = par("lwd"), link.lty = par("lty"), 
    link.sort = FALSE, link.decreasing = TRUE, link.largest.ontop = FALSE,
    link.visible = T, link.rank = NULL, link.overlap = FALSE,
    scale = F, group = NULL, big.gap = 10, small.gap = 1
    )
  })

p
图 1: 弦图