画一些圈圈

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

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