# Using Treemaps

Treemaps display data using the relative areas of nested rectangles. See http://en.wikipedia.org/wiki/Treemapping for more information.

## Contents

- By itself
- With data
- Custom colors and labels
- Another example
- Nested treemaps

## By itself

You can call treemap by itself and it will run with fake data.

    cla
    treemap;

## With data

Here's how you pass in your own data.

    cla
    data = rand(1,20);
    treemap(data);

## Custom colors and labels

You can capture the rectangles and use plotRectangles to display them with your own colors and labels.

    n = 15;
    data = rand(1,n);

    colors = (jet(n)+1)/2;

    % Add labels
    labels = {};
    for i = 1:n
        labels{i} = sprintf('%2.1f%%',100*data(i)/sum(data));
    end

    cla
    rectangles = treemap(data);
    plotRectangles(rectangles,labels,colors)

## Another example

    data = ...
        {'Alaska',571951;
        'Texas'	261797;
        'California',155959;
        'Montana',145552;
        'New Mexico',121356;
        'Arizona',113635;
        'Nevada',109826;
        'Colorado',103718;
        'Oregon',95997};

    colors = ones(10,3);
    rectangles = treemap([data{:,2}]);
    labels = data(:,1);
    cla
    plotRectangles(rectangles,labels,colors)
    outline(rectangles)
    axis([-0.01 1.01 -0.01 1.01])
    title('The Ten Biggest U.S. States')

## Nested treemaps

You can plot treemaps within treemaps

    m = 12;
    n = 20;
    data = rand(m,n);

    % Lay out the column totals
    level1 = sum(data);

    cla reset
    r = treemap(level1);

    % Lay out each column within that column's rectangle from the overall
    % layout
    for j = 1:n
        colors = (3*repmat(rand(1,3),m,1) + rand(m,3))/4;
        rNew = treemap(data(:,j),r(3,j),r(4,j));
        rNew(1,:) = rNew(1,:) + r(1,j);
        rNew(2,:) = rNew(2,:) + r(2,j);
        plotRectangles(rNew,[],colors)
    end

    outline(r)
    axis([-0.01 1.01 -0.01 1.01])