R语言绘制单倍型热图
001、 将vcf数据转换为绘图格式,每个基因型转换为单个数值-1~2。
vcftools --vcf file.vcf --chr 1 --from-bp 40000 --to-bp 60000--012 --out chr12_region
002、绘图:
dat <- read.table("chr12_region.012") ## 绘图数据 colnames(dat) <- c("samples", paste0("v", 1:(ncol(dat) -1))) ## 修改列名 rownames(dat) <- NULL
library(tidyr) dat2 <- pivot_longer(dat, ## 宽格式转换为长格式数据,指定第一列为samples cols = -samples, names_to = "columns", values_to = "values" ) genotype_colors <- c("-1" = "#E5F5E0", "0"="#FFFFFF", "1"="#6baed6", "2"="#c6dbef") ## 对四种基因型值定义颜色 dat3 <- dat2 %>% mutate( samples = factor(samples, levels = dat$samples), values = factor(as.character(values), levels = names(genotype_colors)) ##: 设置绘图顺序 ) library(ggplot2) ggplot(dat3, aes(x = columns, y = samples, fill = values)) + ## 绘图 geom_tile(color = "gray", size = 0.1) + scale_fill_manual( values = genotype_colors )
。
reference:
01、https://mp.weixin.qq.com/s/2qOCNV9ogWJh904QubPMVw