將羣體的遺傳圖譜構建完成之後,我們得到的是一個excel文件,一堆數據,那麼在做工作彙報或者發表文章的時候,我們必須要將數據進行可視化,最傳統的方法當然是使用mapchart,我一直也是使用mapchart,其將遺傳圖譜可視化的效果圖如下:
作爲一個極度老牌的可視化軟件,mapchart的弊端現在已經很明顯了。在十幾年前,一個羣體的分子標記還很少,往往很普遍的情況是隻有幾百個SSR標記,而現在,隨着測序行業的發展,隨着SNP標記的普及,分子標記也越來越多,當分子標記多起來之後,mapchart的可視化結果就會很難看,很擁擠,很密集,甚至我用自己的2378個標記可視化時,出現了頁面篇幅容納不下這麼多標記的情況,在無法使用mapchart可視化遺傳圖譜的情況下,我尋找到了另一種可視化遺傳圖譜的方法,它既能展示出每個標記在遺傳圖譜上的位置,同時還能用熱圖的形式展示出標記在遺傳圖譜上的密度。
我使用的是一個叫“LinkageMapView”的R包,此包既能在windows下使用,也同時支持linux和Mac。需要的輸入文件格式如下:
文件分三列,第一行是header,三列分別爲Group、Position、Locus。group代表的是遺傳圖譜上的連鎖羣,position指的是遺傳圖譜上每個標記的遺傳距離,locus指的是標記的名字。
以我的數據爲例,我的輸入數據是玉米的遺傳圖譜,共有10個連鎖羣,代碼如下:
library(LinkageMapView)
a <- read.csv("C:\\Users\\Shenshen Wu\\Desktop\\linkage.csv")
maxpos <- floor(max(a$Position[a$Group == "LG01" | a$Group == "LG02" | a$Group == "LG03" | a$Group == "LG04" | a$Group == "LG05" | a$Group == "LG06" | a$Group == "LG07" | a$Group == "LG08" | a$Group == "LG09" | a$Group == "LG10"]))
at.axis <- seq(0, maxpos)
axlab <- vector()
for (lab in 0:maxpos) {
if (!lab %% 10) {
axlab <- c(axlab, lab)
}
else {
axlab <- c(axlab, NA)
}
}outfile = file.path("C:\\Users\\Shenshen Wu\\Desktop", "LinkageMap.pdf")
lmv.linkage.plot(a,outfile,mapthese=c("LG01","LG02","LG03","LG04","LG05","LG06","LG07","LG08","LG09","LG10"),denmap=TRUE, cex.axis = 1, at.axis = at.axis, labels.axis = axlab)
最後的可視化結果如下: