连接线的高度控制

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

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