1引言
跟着着大佬们的脚步,不断学习进步。环形图已经有好些包和软件了,比如顾大佬的 circlize,还有一个Rcircos 包。其实自己也想学习一下这些图形开发的具体思路。我们可以自己尝试和模仿去画出类似的图形,进而提升自己对于一些高级绘图产生过程的理解,也可以向很厉害的人学习到很多有用的思维和技能。总之,学习进步的过程就是不断模仿和实践。
然后自己也尝试了一下绘制这些圈圈的过程,下面是一部分开始的工作,当然还有很多问题。环形图最重要的就是 直角坐标系到极坐标 的转换,掌握这个后续一些东西就好方便很多。
2学习过程
画个背景:l
ibrary(grid)
library(tidyverse)
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)
arcSectorGrob 绘制扇区:
grid.draw(arcSectorGrob(start = 0,end = 90,r0 = 0.5,r1 = 0.8))
X 坐标轴放在底部位置:
grid.draw(arcSectorGrob(start = 120,end = 270,r0 = 0.7,r1 = 1,
sector.gp = gpar(fill = "orange"),
arcxAxisGrob.params = list(pos = "bottom")))
y 轴放置在右边:
grid.draw(arcSectorGrob(start = 270,end = 360,r0 = 0.3,r1 = 0.5,
sector.gp = gpar(fill = "purple"),
arcyAxisGrob.params = list(pos = "right")))
添加散点:
grid.draw(arcPointGrob(x = rnorm(50),y = rnorm(50),
start = 0,end = 90,r0 = 0.5,r1 = 0.8))
添加折线:
grid.draw(arcLinesGrob(x = 1:50,y = rnorm(50),
start = 120,end = 270,r0 = 0.7,r1 = 1,
lines.gp = gpar(lwd = 2,col = "blue")))
当然可以写一些更多的图形元素进来,这是需要时间的,总之学习的目的达到了。
3结尾
路漫漫其修远兮,吾将上下而求索。
欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群 (微信交流群需收取 20 元入群费用,一旦交费,拒不退还!(防止骗子和便于管理)) 。QQ 群可免费加入, 记得进群按格式修改备注哦。
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/359995.html