如何在karyoploteR中根据自定义染色体区带名称为其着色?
karyoploteR自定义基因组区带着色问题解决
核心问题:数据框格式不符合要求
你的代码中,基因组、染色体区带表和颜色对照表的创建方式不符合R语法规范,导致karyoploteR无法正确解析数据,这是着色失败的主要原因。
1. 修正自定义基因组格式
custom.genome需包含chr(染色体名)、start(起始位置)、end(终止位置)三列,每列对应向量形式:
custom.genome <- data.frame( chr = c("g1", "g2", "g3"), start = c(1, 1, 1), end = c(2000, 1500, 5000), stringsAsFactors = FALSE )
2. 修正自定义染色体区带表格式
custom.cytobands必须包含chr、start、end、name(区带名)、gieStain(染色标记)五列,字符值需加引号,空白标记用"blank"或NA:
custom.cytobands <- data.frame( chr = c("g1", "g1", "g2", "g3"), start = c(25, 1500, 756, 4522), end = c(700, 1756, 1156, 4852), name = c("kap1", "lys3", "kap1", "lys3"), gieStain = c("blank", "blank", "blank", "blank"), stringsAsFactors = FALSE )
3. 修正颜色对照表格式
color.table需明确两列:name(区带名)和color(对应颜色),字符值必须加引号:
color.table <- data.frame( name = c("kap1", "lys3"), color = c("red", "blue"), stringsAsFactors = FALSE )
正确绘图流程
初始化绘图对象时必须指定自定义基因组和区带表,再调用kpAddCytobands传入正确的颜色对照表:
library(karyoploteR) # 加载修正后的自定义数据(上述代码) # 初始化绘图对象 kp <- plotKaryotype(genome = custom.genome, cytobands = custom.cytobands) # 按自定义颜色添加区带 kpAddCytobands(kp, color.table = color.table)
备选着色方式
如果想用getCytobandColors逻辑,可手动匹配区带与颜色后传入:
# 从颜色表匹配区带对应颜色 band.colors <- color.table$color[match(custom.cytobands$name, color.table$name)] # 用匹配后的颜色向量绘图 kpAddCytobands(kp, colors = band.colors)
内容的提问来源于stack exchange,提问作者Tyler Ruddenfort
相关产品推荐
相关产品推荐

