文章首发于公众号 生信窗 。

 

  从别的公众号看到一个这样的图;因为只有图片,有人问怎么画的。

 

 

#此代码因为有很多数据微调的地方,在你电脑上不一样显示正常,跟每个人的电脑设备有关系,
#代码可以直接用,需要调一些参数,这段代码有很多可以优化的地方。
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"))

  

 

 

  最终图形还是能基本完成。所以如果仅仅为了画一个图可能不是很难,但是代码写的比较死,同样的代码你可能画出来不是这样的,写一个可以扩展的代码实际上有很多要考虑的东西。

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/shengxinchuang/p/14542673.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!