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