上一篇文章:【群体结构】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
}
成品图如下: