好的,试图从你的例子中理解。看起来您拥有的人口是 15 个人口,每个人口有 3-13 个样本。
table(rownames(x))
# No0906S No0908S No0909S No0910S No0912S No0913S No1007S
# 10 8 6 3 3 7 6
# No1103S No1114S No1202S No1206S No1208S No304 No305
# 4 13 9 6 9 13 7
# No306
# 6
当你运行时haplotype(x)
,你会(不出所料)得到 15 个单倍型,代表从群体到单倍型的 1:1 映射。我们可以创建一个表格来显示种群和单倍型之间的关系
ind.hap<-with(
stack(setNames(attr(h, "index"), rownames(h))),
table(hap=ind, pop=rownames(x)[values])
)
ind.hap[1:10, 1:9] #print just a chunk
# pop
# hap No0906S No0908S No0909S No0910S No0912S No0913S No1007S No1103S No1114S
# I 0 0 0 0 0 0 0 0 0
# II 0 0 0 0 0 0 6 0 0
# III 0 0 0 0 0 0 0 4 0
# IV 10 0 0 0 0 0 0 0 0
# IX 0 0 0 0 0 0 0 0 0
# V 0 0 6 0 0 0 0 0 0
# VI 0 0 0 0 0 0 0 0 0
# VII 0 0 0 0 0 7 0 0 0
# VIII 0 0 0 0 0 0 0 0 13
# X 0 0 0 0 0 0 0 0 0
我们可以在绘图期间使用此表在每个节点处绘制图片字符。
plot(net, size=attr(net, "freq"), scale.ratio = 2, cex = 0.8, pie=ind.hap)
legend(50,50, colnames(ind.hap), col=rainbow(ncol(ind.hap)), pch=20)
为了更好地展示饼图,我们可以为每个样本分配不正确的总体
wrong.pop<-rep(letters[1:5], each=22)
ind.hap2<-with(
stack(setNames(attr(h, "index"), rownames(h))),
table(hap=ind, pop=wrong.pop[values])
)
plot(net, size=attr(net, "freq"), scale.ratio = 2, cex = 0.8, pie=ind.hap2)
legend(50,50, colnames(ind.hap2), col=rainbow(ncol(ind.hap2)), pch=20)
在这里,您可以看到我们在每个单倍型上都有更多的多样性,因为我们错误地用人工名称标记了种群,因此它们不会很好地聚集在一起。