PlotTreemap {DescTools}R Documentation

Create a Treemap


Creates a treemap where rectangular regions of different size, color, and groupings visualize the elements.


PlotTreemap(x, grp = NULL, labels = NULL, cex = 1, text.col = "black",
            col = rainbow(length(x)), labels.grp = NULL, cex.grp = 3,
            text.col.grp = "black", border.grp = "grey50",
            lwd.grp = 5, main = "")



a vector storing the values to be used to calculate the areas of rectangles.


a vector specifying the group (i.e. country, sector, etc.) to which each element belongs.


a vector specifying the labels.


the character extension for the area labels. Default is 1.


the text color of the area labels. Default is "black".


a vector storing the values to be used to calculate the color of rectangles.


a character vector specifying the labels for the groups.


the character extension for the group labels. Default is 3.


the text color of the group labels. Default is "black".


the border color for the group rectangles. Default is "grey50". Set this to NA if no special border is desired.


the linewidth of the group borders. Default is 5.


a title for the plot.


A treemap is a two-dimensional visualization for quickly analyzing large, hierarchical data sets. Treemaps are unique among visualizations because they provide users with the ability to see both a high level overview of data as well as fine-grained details. Users can find outliers, notice trends, and perform comparisons using treemaps. Each data element contained in a treemap is represented with a rectangle, or a cell. Treemap cell arrangement, size, and color are each mapped to an attribute of that element. Treemap cells can be grouped by common attributes. Within a group, larger cells are placed towards the bottom left, and smaller cells are placed at the top right.


returns a list with groupwise organized midpoints in x and y for the rectangles within a group and for the groups themselves.


Andri Signorell <>, strongly based on code from Jeff Enos

See Also

PlotCirc, mosaicplot, barplot


N <- 20
area <- rlnorm(N)

PlotTreemap(x=sort(area, decreasing=TRUE), labels=letters[1:20], col=Pal("RedToBlack", 20))

grp <- sample(x=1:3, size=20, replace=TRUE, prob=c(0.2,0.3,0.5))

z <- Sort(data.frame(area=area, grp=grp), c("grp","area"), decreasing=c(FALSE,TRUE))
z$col <- SetAlpha(c("steelblue","green","yellow")[z$grp],
                  unlist(lapply(split(z$area, z$grp),
                  function(...) LinScale(..., newlow=0.1, newhigh=0.6))))

PlotTreemap(x=z$area, grp=z$grp, labels=letters[1:20], col=z$col)

b <- PlotTreemap(x=z$area, grp=z$grp, labels=letters[1:20], labels.grp=NA,
                 col=z$col, main="Treemap")

# the function returns the midpoints of the areas
# extract the group midpoints from b
mid <-, lapply(lapply(b, "[", 1), data.frame))

# and draw some visible text
BoxedText( x=mid$grp.x, y=mid$grp.y, labels=LETTERS[1:3], cex=3, border=NA,
  col=SetAlpha("white",0.7) )

[Package DescTools version 0.99.51 Index]