You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R绘制大肠杆菌基因组Circos图,多轨道对比不同菌株突变

用R的circlize包绘制菌株突变对比Circos图

1. 环境准备

  • 安装并加载核心R包circlize(目前R中最常用的Circos图实现工具):
install.packages("circlize")
library(circlize)

2. 数据准备

需要整理成包含以下必填字段的数据框:

  • chromosome:染色体/Contig编号(细菌通常为单个染色体,多质粒样本可按分子类型区分)
  • position:突变位点的基因组坐标
  • strain:菌株名称(用于区分不同环形轨道)
  • mutation_type:突变类型(如SNV、Indel,用于点的颜色区分)

示例模拟数据:

mut_data <- data.frame(
  chromosome = rep("Chromosome 1", 50),
  position = sample(1:1000000, 50),
  strain = sample(c("Strain A", "Strain B", "Strain C"), 50, replace = TRUE),
  mutation_type = sample(c("SNV", "Indel"), 50, replace = TRUE)
)

3. 基础Circos图绘制(匹配目标示例风格)

目标示例核心是环形展示多菌株的突变分布,以下代码实现对应效果:

# 清空原有Circos布局,避免冲突
circos.clear()
# 设置全局参数:环形间隙、轨道高度
circos.par(gap.degree = 5, track.height = 0.15)

# 初始化环形:以染色体为分组,定义基因组坐标范围
circos.initialize(factors = mut_data$chromosome, xlim = c(0, max(mut_data$position)))

# 遍历每个菌株,绘制独立突变轨道
strains <- unique(mut_data$strain)
for(s in strains){
  strain_subset <- mut_data[mut_data$strain == s, ]
  # 定义突变类型颜色映射
  col_map <- c("SNV" = "#E64B35", "Indel" = "#3182BD")
  
  # 创建菌株轨道:添加轨道标签和坐标轴
  circos.trackPlotRegion(ylim = c(0, 1), bg.border = NA, track.height = 0.1,
                         panel.fun = function(x, y) {
                           # 添加基因组位置坐标轴
                           circos.axis(h = "top", labels.cex = 0.6, labels.niceFacing = TRUE)
                           # 添加菌株名称标签
                           circos.text(CELL_META$xcenter, CELL_META$ylim[2] + 0.1, 
                                       s, cex = 0.8, adj = c(0.5, 0))
                         })
  # 绘制突变位点散点
  circos.trackPoints(strain_subset$position, rep(0.5, nrow(strain_subset)), 
                     col = col_map[strain_subset$mutation_type], pch = 16, cex = 0.8)
}

# 添加图例说明突变类型
legend("bottomright", legend = names(col_map), col = col_map, pch = 16, cex = 0.8)

4. 进阶优化(贴近示例细节)

  • 若需展示突变密度(替代散点),用直方图轨道:
circos.trackHist(strain_subset$position, bin.size = 10000, col = "#3182BD", border = NA)
  • 优化坐标轴可读性:增加主刻度间隔,让标签自动调整方向
circos.axis(h = "top", major.at = seq(0, max(mut_data$position), by = 200000), 
            labels.cex = 0.6, labels.niceFacing = TRUE)
  • 调整轨道布局:修改track.height缩小轨道高度,或调整gap.degree增大菌株间间隙

5. 关键注意事项

  • 多染色体/Contig样本:需为每个分子单独定义xlim,比如用split函数拆分数据后初始化
  • 数据量过大时:减小cex参数避免点重叠,或使用密度图替代散点
  • 配色选择:优先使用专业配色方案(如RColorBrewer),提升图表可读性

内容的提问来源于stack exchange,提问作者mel099

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:52:34