文章首發於公衆號 生信窗 。優化
從別的公衆號看到一個這樣的圖;由於只有圖片,有人問怎麼畫的。blog
#此代碼由於有不少數據微調的地方,在你電腦上不同顯示正常,跟每一個人的電腦設備有關係, #代碼能夠直接用,須要調一些參數,這段代碼有不少能夠優化的地方。 rm(list=ls()) library(grid) if(T){ grid.newpage() vp1<-viewport(unit(0.5,"npc"),unit(0.5,"npc"),0.9,0.9,name = "vp1") vp2<-viewport(unit(0.5,"npc"),unit(0.5,"npc"),0.7,0.7,name = "vp2") vp3<-viewport(unit(0.6,"npc"),unit(0.11,"npc"),0.5,0.5,name = "vp3") vp4<-viewport(unit(0.65,"npc"),unit(0.30,"npc"),0.3,0.3,name = "vp4") vp5<-viewport(unit(0.5,"npc"),unit(0.5,"npc"),0.1,0.1,name = "vp5") vp6<-viewport(unit(0.5,"npc"),unit(0.5,"npc"),0.1,0.1,name = "vp6") pushViewport(vpStack(vp1,vp2,vp3,vp4,vp5,vp6)) #current.vpTree() } upViewport(n = 5)#vp1 grid.circle(0.5,0.5,r=0.5,gp = gpar(fill="#D9D9D9",col="#D9D9D9")) downViewport(name = "vp2")#vp2 grid.circle(0.6,0.11,r=0.25,gp = gpar(fill="#FFFF33",col="#FFFF33")) downViewport(name = "vp3")#vp3 grid.circle(0.65,0.3,r=0.2,gp = gpar(fill="#08519C",col="#08519C")) downViewport(name = "vp4")#vp4 grid.circle(0.6,0.28,r=0.4,gp = gpar(fill="#FCCDE5",col="#FCCDE5")) downViewport(name = "vp5")#vp5 grid.circle(0.5,0.5,r=1.5,gp = gpar(fill="#FC8D62",col="#FB8072")) downViewport(name = "vp6")#vp6 grid.circle(0.5,0.5,r=5,gp = gpar(fill="#000000",col="#000000"))
最終圖形仍是能基本完成。因此若是僅僅爲了畫一個圖可能不是很難,可是代碼寫的比較死,一樣的代碼你可能畫出來不是這樣的,寫一個能夠擴展的代碼實際上有不少要考慮的東西。圖片