smartAlign2 {ComplexHeatmap} | R Documentation

## Adjust positions of rectanglar shapes

### Description

Adjust positions of rectanglar shapes

### Usage

    smartAlign2(start, end, range, range_fixed = TRUE)

### Arguments

`start` | position which corresponds to the start (bottom or left) of the rectangle-shapes.
`end` | position which corresponds to the end (top or right) of the rectanglar shapes.
`range` | data ranges (the minimal and maximal values)
`range_fixed` | Whether the range is fixed for `range` when adjust the positions?

### Details

This is an improved version of the `smartAlign`.

It adjusts the positions of the rectangular shapes to make them do not overlap

### Examples

    require(circlize)
    make_plot = function(pos1, pos2, range) {
        oxpd = par("xpd")
        par(xpd = NA)
        plot(NULL, xlim = c(0, 4), ylim = range, ann = FALSE)
        col = rand_color(nrow(pos1), transparency = 0.5)
        rect(0.5, pos1[, 1], 1.5, pos1[, 2], col = col)
        rect(2.5, pos2[, 1], 3.5, pos2[, 2], col = col)
        segments(1.5, rowMeans(pos1), 2.5, rowMeans(pos2))
        par(xpd = oxpd)
    }

    range = c(0, 10)
    pos1 = rbind(c(1, 2), c(5, 7))
    make_plot(pos1, smartAlign2(pos1, range = range), range)

    range = c(0, 10)
    pos1 = rbind(c(-0.5, 2), c(5, 7))
    make_plot(pos1, smartAlign2(pos1, range = range), range)

    pos1 = rbind(c(-1, 2), c(3, 4), c(5, 6), c(7, 11))
    pos1 = pos1 + runif(length(pos1), max = 0.3, min = -0.3)
    omfrow = par("mfrow")
    par(mfrow = c(3, 3))
    for(i in 1:9) {
        ind = sample(4, 4)
        make_plot(pos1[ind, ], smartAlign2(pos1[ind, ], range = range), range)
    }
    par(mfrow = omfrow)

    pos1 = rbind(c(3, 6), c(4, 7))
    make_plot(pos1, smartAlign2(pos1, range = range), range)

    pos1 = rbind(c(1, 8), c(3, 10))
    make_plot(pos1, smartAlign2(pos1, range = range), range)
    make_plot(pos1, smartAlign2(pos1, range = range, range_fixed = FALSE), range)

[Package ComplexHeatmap version 2.2.0 Index]