R: Draw links between points or/and intervals

circos.link {circlize} | R Documentation

## Draw links between points or/and intervals

### Description

Draw links between points or/and intervals

### Usage

    circos.link(sector.index1, point1, sector.index2, point2,
        rou = get_most_inside_radius(),
        rou1 = rou, rou2 = rou, h = NULL, h.ratio = 0.5, w = 1, h2 = h, w2 = w,
        col = "black", lwd = par("lwd"), lty = par("lty"), border = col,
        directional = 0, arr.length = ifelse(arr.type == "big.arrow", 0.02, 0.4),
        arr.width = arr.length/2, arr.type = "triangle", arr.lty = lty,
        arr.lwd = lwd, arr.col = col)

### Arguments

`sector.index1` | Index for the first sector where one link end locates
`point1` | A single value or a numeric vector of length 2. If it is a 2-elements vector, then the link would be a belt/ribbon.
`sector.index2` | Index for the other sector where the other link end locates
`point2` | A single value or a numeric vector of length 2. If it is a 2-elements vector, then the link would be a belt/ribbon.
`rou` | The position of the the link ends (if `rou1` and `rou2` are not set). It is the percentage of the radius of the unit circle. By default its value is the position of bottom margin of the most inner track.
`rou1` | The position of end 1 of the link.
`rou2` | The position of end 2 of the link.
`h` | Height of the link, measured as percent to the radius to the unit circle. By default it is automatically infered.
`h.ratio` | systematically change the link height. The value is between 0 and 1.
`w` | Since the link is a Bezier curve, it controls the shape of Bezier curve.
`h2` | Height of the bottom edge of the link if it is a ribbon.
`w2` | Shape of the bottom edge of the link if it is a ribbon.
`col` | Color of the link. If the link is a ribbon, then it is the filled color for the ribbon.
`lwd` | Line (or border) width
`lty` | Line (or border) style
`border` | If the link is a ribbon, then it is the color for the ribbon border.
`directional` | 0 for no direction, 1 for direction from `point1` to `point2`, -1 for direction from `point2` to `point1`. 2 for two directional. The direction is important when arrow heads are added.
`arr.width` | Width of the arrows, pass to `Arrowhead`.
`arr.type` | Type of the arrows, pass to `Arrowhead`. Default value is `triangle`. There is an additional option `big.arrow`.
`arr.length` | Length of the arrows, measured in 'cm', pass to `Arrowhead`. If `arr.type` is set to `big.arrow`, the value is percent to the radius of the unit circle.
`arr.col` | Color of the arrows, pass to `Arrowhead`.
`arr.lwd` | Line width of arrows, pass to `Arrowhead`.
`arr.lty` | Line type of arrows, pass to `Arrowhead`.

### Details

Links are implemented as quadratic Bezier curves (https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Rational_B.C3.A9zier_curves ).

Drawing links does not create any track. So you can think it is independent of the tracks.

By default you only need to set `sector.index1`, `point1`, `sector.index2` and `point2`. The links would look nice.

Please refer to the vignette for detailed explanation.

### References

Gu, Z. (2014) circlize implements and enhances circular visualization in R. Bioinformatics.

### See Also

http://jokergoo.github.io/circlize_book/book/graphics.html#links

### Examples

    factors = letters[1:8]
    circos.par(points.overflow.warning = FALSE)
    circos.initialize(factors = factors, xlim = c(0, 10))
    circos.track(factors = factors, ylim = c(0, 1), bg.col = "grey",
        bg.border = NA, track.height = 0.05)
    circos.link("a", 5, "c", 5, border = 1)
    circos.link("b", 5, "d", c(4, 6), border = 1)
    circos.link("a", c(2, 3), "f", c(4, 6), border = 1)
    circos.link("e", c(2, 3), "g", 5, border = 1)
    circos.clear()

    circos.par(points.overflow.warning = FALSE)
    circos.initialize(factors = factors, xlim = c(0, 10))
    circos.track(factors = factors, ylim = c(0, 1), bg.col = "grey",
        bg.border = NA, track.height = 0.05)
    circos.link("a", 5, "b", 5, directional = 1, arr.length = 0.2)
    circos.link("c", c(3, 7), "d", c(3, 7), directional = 1,
        arr.col = "white", arr.length = 0.2)
    circos.link("e", c(4, 6), "f", c(4, 6), directional = 1,
        arr.type = "big.arrow", arr.length = 0.04)
    circos.clear()

[Package circlize version 0.4.5 Index]