BioF3 FigCode · SCI 绘图代码集
基因组环形图(Circos Plot)
分类:基因组 | 依赖包:circlize
解决的生物学问题
不同染色体上的多组学特征如何同时呈现?拷贝数变化与表达异常是否在空间上对应?
应用场景
- 泛癌基因组特征汇总
- CNV + SV + 突变联合展示
- 癌症基因组学论文 Figure 1
- Multi-omics 整合可视化
输入数据格式
BED 风格数据框:chr, start, end, value(每个轨道一份)
关键参数
- ideogram(species)(指定物种)
- circos.par 调间距和起始角度
- track.height 轨道高度
- circos.clear() 防 panel 残留
快速开始
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 --- 标注的段落是示例数据生成代码。替换为自己的数据时,保持列名一致即可:
- 输入格式:BED 风格数据框:chr, start, end, value(每个轨道一份)
- 使用
read.csv()/readRDS()读取本地文件
延伸阅读
- 相关教程:基因组环形图 完整流程
- 出现 bug?欢迎在 FigCode 页面 点击对应卡片,在评论区留言。