圈圈补充

1引言

分享一些七七八八写的东西。想的多了,有些事情可能就不会那么顺利了。先写一些基础的简单环形图形元素,方便调用,写个循环就能画一些复杂的东西了。

2七七八八

newpage <- function(){
  grid.newpage()
  pushViewport(viewport(width = 0.9,height = 0.9,
                        xscale = c(-1,1),yscale = c(-1,1),
                        default.units = "snpc"))
  grid.circle(r = 0.5,gp = gpar(fill = "grey90",col = NA))
  grid.segments(x0 = 0.5,x1 = 0.5,y0 = 0,y1 = 1)
  grid.segments(x0 = 0,x1 = 1,y0 = 0.5,y1 = 0.5)
}

newpage()
图片

arcRectGrob 画一些矩形, clock.wise 设置绘制的方向是顺时针还是逆时针,每个 arcGrob 都有这个参数:

newpage()
grid.draw(arcSectorGrob(start = 0,end = 90,r0 = 0.5,r1 = 0.8))

grid.draw(arcRectGrob(xmin = c(1,10,20),xmax = c(9,15,35),
                      ymin = c(1,5,10),ymax = c(2,8,15),
                      start = 0,end = 90,r0 = 0.5,r1 = 0.8))

grid.draw(arcSectorGrob(start = 0,end = 90,r0 = 0.5,r1 = 0.8,
                        clock.wise = T))

grid.draw(arcRectGrob(xmin = c(1,10,20),xmax = c(9,15,35),
                      ymin = c(1,5,10),ymax = c(2,8,15),
                      clock.wise = T,
                      start = 0,end = 90,r0 = 0.5,r1 = 0.8))
图片

arcSegmentsGrob 画一些线段:

newpage()
grid.draw(arcSectorGrob(start = 30,end = 150,r0 = 0.5,r1 = 0.8))

grid.draw(arcSegmentsGrob(xmin = c(1,1,3),xmax = c(5,10,3),
                          ymin = c(1,3,1),ymax = c(1,3,5),
                          start = 30,end = 150,
                          r0 = 0.6,r1 = 0.8))

grid.draw(arcSectorGrob(start = 30,end = 150,r0 = 0.5,r1 = 0.8,
                        clock.wise = T))

grid.draw(arcSegmentsGrob(xmin = c(1,1,3),xmax = c(5,10,3),
                          ymin = c(1,3,1),ymax = c(1,3,5),
                          start = 30,end = 150,
                          clock.wise = T,
                          r0 = 0.6,r1 = 0.8))
图片

arcColGrob 画一些条形图:

newpage()
grid.draw(arcSectorGrob(start = 30,end = 150,r0 = 0.5,r1 = 0.8))

grid.draw(arcColGrob(x = 1:20,y = rnorm(20),
                     start = 30,end = 150,r0 = 0.5,r1 = 0.8,
                     col.gp = gpar(fill = circlize::rand_color(20))))

grid.draw(arcSectorGrob(start = 30,end = 150,r0 = 0.5,r1 = 0.8,
                        clock.wise = T))

grid.draw(arcColGrob(x = 1:20,y = rnorm(20),
                     start = 30,end = 150,r0 = 0.5,r1 = 0.8,
                     col.gp = gpar(fill = circlize::rand_color(20)),
                     clock.wise = T))
图片

arcHistGrob 画直方图:

newpage()
grid.draw(arcSectorGrob(start = 30,end = 150,r0 = 0.5,r1 = 0.8))
grid.draw(arcHistGrob(x = rnorm(1000),hist.gp = gpar(fill = "orange"),
                      bins = 50,
                      start = 30,end = 150,r0 = 0.5,r1 = 0.8))

grid.draw(arcSectorGrob(start = 30,end = 150,r0 = 0.5,r1 = 0.8,clock.wise = T))
grid.draw(arcHistGrob(x = rnorm(1000),hist.gp = gpar(fill = "orange"),
                      start = 30,end = 150,r0 = 0.5,r1 = 0.8,
                      clock.wise = T))
图片

arcDensityGrob 这个则是密度图:

newpage()
grid.draw(arcSectorGrob(start = 30,end = 150,r0 = 0.5,r1 = 0.8))
grid.draw(arcDensityGrob(x = mtcars$mpg,
                         start = 30,end = 150,r0 = 0.5,r1 = 0.8))

grid.draw(arcSectorGrob(start = 30,end = 150,r0 = 0.5,r1 = 0.8,clock.wise = T))
grid.draw(arcDensityGrob(x = mtcars$mpg,
                         start = 30,end = 150,r0 = 0.5,r1 = 0.8,
                         clock.wise = T,polygon.gp = gpar(fill = "orange")))

arcLinksGrob 绘制圆形间两点的连线,这个想了挺久时间的,也看了 github 上面一些包的代码,水平有限,也不是很能看懂,好在自己摸出来了:

newpage()
grid.draw(arcSectorGrob(start = 30,end = 330,r0 = 0.7,r1 = 0.9))
grid.draw(arcLinksGrob(start = 70,end = 150,
                       curve.arrow = arrow(type = "closed",
                                           length = unit(0.3,"cm")),r = 0.7))
grid.draw(arcLinksGrob(start = 30,end = 330,
                       curve.arrow = arrow(type = "closed",
                                           length = unit(0.3,"cm")),r = 0.7))
grid.draw(arcLinksGrob(start = 60,end = 200,r = 0.7,bezierCurve.gp = gpar(lwd = 2,col = "red")))
图片

带状连接以及那个箭头有点意思:

grid.draw(arcLinksGrob(start = c(30,30),end = c(90,120),r = 0.7))

grid.draw(arcLinksGrob(start = c(180,190),end = c(270,290),r = 0.7,
                       start.arrow = T,end.arrow = T))
图片

3结尾

路漫漫其修远兮,吾将上下而求索。


欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群 (微信交流群需收取 20 元入群费用,一旦交费,拒不退还!(防止骗子和便于管理)) 。QQ 群可免费加入, 记得进群按格式修改备注哦。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/360875.html

(0)
联系我们
联系我们
分享本页
返回顶部