JavaScript
google.load('visualization', '1', {packages: ['controls']});
google.setOnLoadCallback(drawVisualization);
function drawVisualization() {
// Create and populate the data table.
var data = google.visualization.arrayToDataTable([
['Location', 'Parent', 'Market trade volume (size)', 'Market increase/decrease (color)'],
['Global', null, 0, 0],
['America', 'Global', 0, 0],
['Europe', 'Global', 0, 0],
['Asia', 'Global', 0, 0],
['Australia', 'Global', 0, 0],
['Africa', 'Global', 0, 0],
['Brazil', 'America', 11, 10],
['USA', 'America', 52, 31],
['Mexico', 'America', 24, 12],
['Canada', 'America', 16, -23],
['France', 'Europe', 42, -11],
['Germany', 'Europe', 31, -2],
['Sweden', 'Europe', 22, -13],
['Italy', 'Europe', 17, 4],
['UK', 'Europe', 21, -5],
['China', 'Asia', 36, 4],
['Japan', 'Asia', 20, -12],
['India', 'Asia', 40, 63],
['Laos', 'Asia', 4, 34],
['Mongolia', 'Asia', 1, -5],
['Israel', 'Asia', 12, 24],
['Iran', 'Asia', 18, 13],
['Pakistan', 'Asia', 11, -52],
['Egypt', 'Africa', 21, 0],
['S. Africa', 'Africa', 30, 43],
['Sudan', 'Africa', 12, 2],
['Congo', 'Africa', 10, 12],
['Zair', 'Africa', 8, 10],
['AZ', 'USA', 10, 41],
['MA', 'USA', 23, 33],
['NY', 'USA', 40, 19]
]);
function setNodeValues(dt, row) {
var childRows = dt.getFilteredRows([{
column: 1,
value: dt.getValue(row, 0)}]);
if (childRows.length > 0) {
// this is a parent, recurse down, and set value when w
var vals = [];
var colors = [];
var tmp;
for (var i = 0; i < childRows.length; i++) {
tmp = setNodeValues(dt, childRows[i]);
vals.push(tmp.val);
colors.push(tmp.color);
}
...