1引言
讲一下 arcLinksGrob/arcLinks2Grob 绘制连接线关于曲线高度的控制。
2安装
# install.packages("devtools")
devtools::install_github("junjunlab/ggcirclize")
# or
remotes::install_github("junjunlab/ggcirclize")
3讲解
这两个函数里都有个 curve.height 的参数来设置曲线的高度:
newpage()
grid.draw(arcLinks2Grob(start = 30,end = 60,
curve.height = 1,
r0 = 1,r1 = 1,r = 1))
grid.draw(arcLinks2Grob(start = 30,end = 60,
curve.height = 0.5,
r0 = 1,r1 = 1,r = 1))
如果高度都相同的话,可能图会有点拥挤:
load("mer.rda")
newpage()
for (i in 1:nrow(mer)) {
tmp <- mer[i,]
grid.draw(arcLinks2Grob(start = c(tmp$start0,tmp$end0),
end = c(tmp$start1,tmp$end1),
bezierPolygon.gp = gpar(col = "black",fill = tmp$fill),
curve.height = 1,
r0 = 1,r1 = 1,r = 1))
}
我们可以让距离近的曲线高度低一点,远的的高一点,以这样的比例来绘制,你可以使用 get_height 函数来获取合适的高度值,这样看着就会稀疏一些:
newpage()
for (i in 1:nrow(mer)) {
tmp <- mer[i,]
h <- get_height(start = min(tmp$start0,tmp$end0),
end = max(tmp$start1,tmp$end1),
r0 = 0,r1 = 1)
grid.draw(arcLinks2Grob(start = c(tmp$start0,tmp$end0),
end = c(tmp$start1,tmp$end1),
bezierPolygon.gp = gpar(col = "black",fill = tmp$fill),
curve.height = h,
r0 = 1,r1 = 1,r = 1))
}
你也可以指定高度的范围,比如 0.6-1:
newpage()
for (i in 1:nrow(mer)) {
tmp <- mer[i,]
h <- get_height(start = min(tmp$start0,tmp$end0),
end = max(tmp$start1,tmp$end1),
r0 = 0.6,r1 = 1)
grid.draw(arcLinks2Grob(start = c(tmp$start0,tmp$end0),
end = c(tmp$start1,tmp$end1),
bezierPolygon.gp = gpar(col = "black",fill = tmp$fill),
curve.height = h,
r0 = 1,r1 = 1,r = 1))
}
如果你想保证每个曲线的高度一样高,也就是以中间为一个圆为顶点,这样中间就会空出一个圆的空间,使用 get_fixedHeight 函数获取相应的高度:
newpage()
for (i in 1:nrow(mer)) {
tmp <- mer[i,]
h <- get_fixedHeight(start = min(tmp$start0,tmp$end0),
end = max(tmp$start1,tmp$end1),
r0 = 0,r1 = 1,height = 0.5)
grid.draw(arcLinks2Grob(start = c(tmp$start0,tmp$end0),
end = c(tmp$start1,tmp$end1),
bezierPolygon.gp = gpar(col = "black",fill = tmp$fill),
curve.height = h,
r0 = 1,r1 = 1,r = 1))
}
arcLinks2Grob 有 r0,r1 的参数,你可以设置不同连接起点和终点的高度:
newpage()
for (i in 1:nrow(mer)) {
tmp <- mer[i,]
h <- get_height(start = min(tmp$start0,tmp$end0),
end = max(tmp$start1,tmp$end1),
r0 = 0.6,r1 = 1)
grid.draw(arcLinks2Grob(start = c(tmp$start0,tmp$end0),
end = c(tmp$start1,tmp$end1),
bezierPolygon.gp = gpar(col = "black",fill = tmp$fill),
curve.height = h,
end.arrow = T,
r0 = 0.8,r1 = 1,r = 1))
}
4结尾
路漫漫其修远兮,吾将上下而求索。
欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群 (微信交流群需收取 20 元入群费用,一旦交费,拒不退还!(防止骗子和便于管理)) 。QQ 群可免费加入, 记得进群按格式修改备注哦。
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/385067.html