R: Create a Grob Representing a Dendrogram

dendrogramGrob {latticeExtra} | R Documentation

## Create a Grob Representing a Dendrogram

### Description

This function creates a grob (a grid graphics object) that can be manipulated as such. In particular, it can be used as a legend in a lattice display like `levelplot` to form heatmaps.

### Usage

    dendrogramGrob(x, ord = order.dendrogram(x),
                   side = c("right", "top"),
                   add = list(), size = 5, size.add = 1,
                   type = c("rectangle", "triangle"),
                   ...)

### Arguments

`x` | An object of class `"dendrogram"`. See `dendrogram` for details
`ord` | A vector of integer indices giving the order in which the terminal leaves are to be plotted. If this is not the same as `order.dendrogram(x)`, then the leaves may not cluster together and branches of the dendrogram may intersect.
`side` | Intended position of the dendrogram when added in a heatmap. Currently allowed positions are `"right"` and `"top"`.
`add` | Additional annotation. Currently, it is only possible to add one or more rows of rectangles at the base of the dendrogram. See details below.
`size` | Total height of the dendrogram in `"lines"` (see `unit`)
`size.add` | Size of each additional row, also in `"lines"`
`type` | Whether a child node is joined to its parent directly with a straight line (`"triangle"`) or as a “stair” with two lines (`"rectangle"`)
`...` | Extra arguments. Currently ignored.

### Details

The `add` argument can be used for additional annotation at the base of the dendrogram. It should be a list with one component for each row, with names specifying the type of annotation and components specifying the contents. Currently, the only supported name is `"rect"` (which can be repeated), producing rectangles. The components in such a case is a list of graphical parameters, possibly vectorized, that are passed on to `gpar`.

### Value

An object of class `"grob"`

### Author(s)

Deepayan Sarkar deepayan.sarkar@r-project.org

### See Also

`heatmap`, `levelplot`

### Examples

    data(mtcars)
    x  <- t(as.matrix(scale(mtcars)))
    dd.row <- as.dendrogram(hclust(dist(x)))
    row.ord <- order.dendrogram(dd.row)

    dd.col <- as.dendrogram(hclust(dist(t(x))))
    col.ord <- order.dendrogram(dd.col)

    library(lattice)

    levelplot(x[row.ord, col.ord],
              aspect = "fill",
              scales = list(x = list(rot = 90)),
              colorkey = list(space = "left"),
              legend =
              list(right =
                   list(fun = dendrogramGrob,
                        args =
                        list(x = dd.col, ord = col.ord,
                             side = "right",
                             size = 10)),
                   top =
                   list(fun = dendrogramGrob,
                        args =
                        list(x = dd.row,
                             side = "top",
                             type = "triangle"))))

    ## Version with unsorted rows.

    ## For illustration, MPG ploted again at foot of dendrogram

    mpg <- x["mpg", col.ord]
    mpg.col <- level.colors(mpg, at = do.breaks(range(mpg), 10),
                            col.regions = terrain.colors)

    levelplot(x[, col.ord],
              aspect = "iso",
              scales = list(x = list(rot = 90)),
              colorkey = FALSE,
              legend =
              list(right =
                   list(fun = dendrogramGrob,
                        args =
                        list(x = dd.col, ord = col.ord,
                             side = "right",
                             add = list(rect = list(fill = mpg.col)),
                             size = 10)),
                   top =
                   list(fun = dendrogramGrob,
                        args =
                        list(x = dd.row, ord = sort(row.ord),
                             side = "top", size = 10,
                             type = "triangle"))))

[Package latticeExtra version 0.6-28 Index]