BioF3 FigCode · SCI 绘图代码集

基因组环形图(Circos Plot)

导出日期:2026年6月27日

分类:基因组 | 依赖包:circlize

解决的生物学问题

不同染色体上的多组学特征如何同时呈现?拷贝数变化与表达异常是否在空间上对应?

应用场景

输入数据格式

BED 风格数据框:chr, start, end, value(每个轨道一份)

关键参数

快速开始

1. 直接在线运行

打开 FigCode 在线绘图,点击本工具卡片的"在线绘图"按钮即可用内置示例数据出图,零环境配置。

2. 本地复现

下载脚本和示例数据,本地 RStudio 运行:

# 下载
curl -O https://<your-site>/figcode/scripts/circos.R
curl -O https://<your-site>/figcode/data/circos.csv

3. 安装依赖

# CRAN 包
install.packages(c("circlize"))

# Bioconductor 包(如需)
# BiocManager::install(c())

完整代码

library(circlize)

# --- Demo: 22 染色体 + 2 个数据轨道 ---
set.seed(42)

# Track 1: CNV (随机拷贝数得分)
cnv <- do.call(rbind, lapply(1:22, function(i) {
  n <- 30
  data.frame(
    chr   = paste0("chr", i),
    start = seq(1, 1e8, length.out = n),
    end   = seq(1, 1e8, length.out = n) + 1e6,
    value = cumsum(rnorm(n, 0, 0.3))
  )
}))

# Track 2: 突变频率
mut <- do.call(rbind, lapply(1:22, function(i) {
  n <- sample(5:20, 1)
  data.frame(
    chr   = paste0("chr", i),
    start = sort(sample(1:1e8, n)),
    end   = sort(sample(1:1e8, n)) + 1e5,
    value = abs(rnorm(n, 5, 2))
  )
}))

# --- Plot ---
circos.clear()
circos.par("track.height" = 0.12, "gap.degree" = 1)
circos.initializeWithIdeogram(species = "hg19", chromosome.index = paste0("chr", 1:22))

# Track 1: CNV as line
circos.genomicTrackPlotRegion(cnv, panel.fun = function(region, value, ...) {
  circos.genomicLines(region, value, type = "l", col = "#dc2626", lwd = 1.2)
}, track.height = 0.12)

# Track 2: mutation as point
circos.genomicTrackPlotRegion(mut, panel.fun = function(region, value, ...) {
  circos.genomicPoints(region, value, pch = 16, cex = 0.4, col = "#2563eb")
}, track.height = 0.12)

title("Circos — CNV (red) + Mutation Frequency (blue)")
circos.clear()

替换为自己的数据

脚本中以 # --- Demo data --- 标注的段落是示例数据生成代码。替换为自己的数据时,保持列名一致即可:

延伸阅读