R语言绘制structure图

  • 输入文件准备
  • R语言代码

上一篇文章:【群体结构】CLUMPP软件使用

前面讲到利用CLUMPP合并多个K值的结果,这边主要叙述R语言绘制structure图。

代码相对简单,我主要利用R语言的低级函数rect()完成。

输入文件准备

  • 包含四列,第1列名字(也可以去掉),第2-4列为K的成分比例。

R语言代码

导入文件名为plot.clumpp.txt,格式如上。通过循环每一行,将不同的列的值进行绘制方块,达到效果。

plotData<-read.table("plot.clumpp.txt",header=T)
plot(c(0,241),c(0,1),axes=F,xlab="",ylab="",type="n")
col1<-c('blue','green','red')
for(i in 1:241){
	#利用累加数值来改变y轴绘图的位置,来达到堆积的效果
    rect(i-1,plotData[i,2],i,0,col=col1[1],border=NA)		
    rect(i-1,plotData[i,2]+plotData[i,3],i,plotData[i,2],col=col1[2],border=NA)
    rect(i-1,1,i,plotData[i,2]+plotData[i,3],col=col1[3],border=NA)
    # K值较大,需要增加rect,这边适用于K=3
}

成品图如下:

更多推荐

【群体结构】structure结构图绘制