Learn R Programming

circlize (version 0.4.1)

circos.link: 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

Run this code
# NOT RUN {
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()

# }

Run the code above in your browser using DataLab