This page lists the objects exposed by the Google Visualization API, and the standard methods exposed by all visualizations.
Note: The Google Visualization API namespace is google.visualization.*
A Note on Arrays
Some browsers don't properly handle trailing commas in JavaScript arrays, so don't use them. Empty values in the middle of an array are fine. So, for example:
data = ['a','b','c', ,]; // BAD
data = ['a','b','c']; // OK
data = ['a','b', ,'d']; // Also OK. The third value is undefined.
Represents a two-dimensional, mutable table of values. To make a read-only copy
of a DataTable (optionally filtered to show specific values, rows,
or columns), create a DataView.
Each column is assigned a data type, plus several optional properties including an ID, label, and pattern string.
In addition, you can assign custom properties (name/value pairs) to any cell, row, column, or the entire table. Some visualizations support specific custom properties; for example the Table visualization supports a cell property called 'style', which lets you assign an inline CSS style string to the rendered table cell. A visualization should describe in its documentation any custom properties that it supports.
See also: QueryResponse.getDataTable
The DataTable class has two constructors:
google.visualization.DataTable() // Create an empty DataTable instance google.visualization.DataTable(data, version) // Create a populated DataTable instance
DataTable()Creates
an empty DataTable instance. Use JavaScript to populate the DataTable as
shown in the following example, which creates and populates a two column, three
row
DataTable in JavaScript. You might use this on a page hosting a visualization
to create the data for that visualization.
var data = new google.visualization.DataTable();
data.addColumn('string', 'Task');
data.addColumn('number', 'Hours per Day');
data.addRows([
['Work', 11],
['Eat', 2],
['Commute', 2],
['Watch TV', 2],
['Sleep', {v:7, f:'7.000'}]
]);
DataTable(data, version)Creates a DataTable populated with the data that you pass in. You
can see an example of this below.
Parameters
DataTable.toJSON() on a populated table,
or a JavaScript object containing data used to initialize the table. The
structure of the JavaScript literal object is described here.Details
The DataTable object is used to hold the data passed into a visualization.
A DataTable is a basic two-dimensional table. All data in each column
must have the same data type. Each column has a descriptor that includes its data
type, a label for that column (which might be displayed by a visualization), and
an ID, which can be used to refer to a specific column (as an alternative to using
column indexes). The DataTable object also supports a map of arbitrary
properties assigned to a specific value, a row, a column, or the whole DataTable.
Visualizations can use these to support additional features; for example, the Table
visualization uses custom properties to let you assign arbitrary class names
or styles to individual cells.
Each cell in the table holds a value. Cells can have a null value, or a value of the type specified by its column. Cells optionally can take a "formatted" version of the data; this is a string version of the data, formatted for display by a visualization. A visualization can (but is not required to) use the formatted version for display, but will always use the data itself for any sorting or calculations that it makes (such as determining where on a graph to place a point). An example might be assigning the values "low" "medium", and "high" as formatted values to numeric cell values of 1, 2, and 3.
To add data rows after calling the constructor, you can call either addRow() for
a single row, or addRows() for multiple
rows. You can add columns as well by calling the addColumn() methods.
There are removal methods for rows and columns as well, but rather than removing
rows or columns, consider creating a DataView that is a selective
view of the DataTable.
If you change values in a DataTable after it is passed into a visualization's draw() method,
the changes will not immediately change the chart. You must call draw() again
to reflect any changes.
The following example demonstrates
instantiating and populating a DataTable with a literal string, with
the same data as shown in the JavaScript example above:
var dt = new google.visualization.DataTable(
{
cols: [{id: 'task', label: 'Task', type: 'string'},
{id: 'hours', label: 'Hours per Day', type: 'number'}],
rows: [{c:[{v: 'Work'}, {v: 11}]},
{c:[{v: 'Eat'}, {v: 2}]},
{c:[{v: 'Commute'}, {v: 2}]},
{c:[{v: 'Watch TV'}, {v:2}]},
{c:[{v: 'Sleep'}, {v:7, f:'7.000'}]}
]
},
0.6
)
You can create a DataTable either by calling the constructor without
parameters and then adding values by calling the addColumn()/addRows() methods
listed below, or by passing in a populated JavaScript literal object to initialize
it. Both methods are described below. Which one should you use?
addColumn(), addRow(),
and addRows() is very readable code. This method
is useful when you'll be entering code by hand. It is slower than using object
literal notation (described next), but in smaller tables (say, 1,000 cells)
you probably won't notice much difference.DataTable object using object-literal notation
is considerably faster in large tables. However, it can be a tricky syntax
to get right; use this if you can generate the object literal syntax in code,
which reduces possibility of errors.
| Method | Return Value | Description |
|---|---|---|
addColumn(type
[,label [,id]]) |
Number | Adds a new column to the data table, and returns the index of the
new column. All the cells of the new column are assigned a
See also: getColumnId getColumnLabel getColumnType insertColumn |
| Number | Adds a new row to the data table, and returns the index of the new row.
Examples:
data.addRow(); // Add an empty row
data.addRow(['Hermione', new Date(1999,0,1)]); // Add a row with a string and a date value.
// Add a row with two cells, the second with a formatted value.
data.addRow(['Hermione', {v: new Date(1999,0,1),
f: 'January First, Nineteen ninety-nine'}]);
data.addRow(['Col1Val', null, 'Col3Val']); // Second column is undefined.
data.addRow(['Col1Val', , 'Col3Val']); // Same as previous.
|
|
addRows(numOrArray) |
Number | Adds new rows to the data table, and returns the index of the last added row. You can call this method to create new empty rows, or with data used to populate the rows, as described below.
Example: data.addRows([['Ivan', new Date(1977,2,28)], ['Igor', new Date(1962,7,5)], ['Felix', new Date(1983,11,17)], ['Bob', null]]); // No date set for Bob. See also: insertRows |
clone() |
DataTable | Returns a clone of the data table. The result is a deep copy of the data table except for the cell properties, row properties, table properties and column properties, which are shallow copies; this means that non-primitive properties are copied by reference, but primitive properties are copied by value. |
getColumnId(columnIndex) |
String | Returns the identifier of a given column specified by the column index
in the underlying table. For data tables that are retrieved by queries, the column identifier is set by the data source, and can be used to refer to columns when using the query language. See also: Query.setQuery |
getColumnLabel(columnIndex) |
String | Returns the label of a given column specified by the column index in
the underlying table. The column label is typically displayed as part of the visualization. For example the column label can be displayed as a column header in a table, or as the legend label in a pie chart. For data tables that are retrieved by queries, the column label is set by the data source, or by the label clause of the query
language. See also: setColumnLabel |
getColumnPattern(columnIndex) |
String | Returns the formatting pattern used to format the values of the specified column.
For data tables that are retrieved by queries, The column pattern is
set by the data source, or by the |
getColumnProperties(columnIndex) |
Object | Returns a map of all properties for the specified column. Note that
the properties object is returned by reference, so changing values in
the retrieved object changes them in the
|
getColumnProperty(columnIndex,
name) |
Auto | Returns the value of a named property, or
See also: setColumnProperty setColumnProperties |
getColumnRange(columnIndex) |
Object | Returns the minimal and maximal values of values in a specified column.
The returned object has properties |
getColumnType(columnIndex) |
String | Returns the type of a given column specified by the column index.
The returned column type can be one of the following: |
getDistinctValues(columnIndex) |
Array of objects | Returns the unique values in a certain column, in ascending order.
The type of the returned objects is the same as that returned by the
|
getFilteredRows(filters) |
Array of numbers | Returns the row indexes for rows that match all of the given filters.
The indexes are returned in ascending order. The output of this method
can be used as input to
Example: |
getFormattedValue(rowIndex,
columnIndex) |
String | Returns the formatted value of the cell at the given row and column indexes.
For more on formatting column values see the query language reference. See also: setFormatedValue |
getNumberOfColumns() |
Number | Returns the number of columns in the table. |
getNumberOfRows() |
Number | Returns the number of rows in the table. |
getProperties(rowIndex,
columnIndex) |
Object | Returns a map of all the properties for the specified cell. Note that
the properties object is returned by reference, so changing values in
the retrieved object changes them in the
|
getProperty(rowIndex, columnIndex,
name) |
Auto | Returns the value of a named property, or
See also: setCell setProperties setProperty |
getRowProperties(rowIndex) |
Object | Returns a map of all properties for the specified row. Note that the
properties object is returned by reference, so changing values in the
retrieved object changes them in the
|
getRowProperty(rowIndex,
name) |
Auto | Returns the value of a named property, or
See also: setRowProperty setRowProperties |
getSortedRows(sortColumns) |
Array of numbers | Returns a sorted version of the table without modifying the order
of the underlying data. To permanently sort the underlying data, call
The returned value is an array of numbers, each number is an index of
a Note that the sorting is guaranteed to be stable: this means that if
you sort on equal values of two rows, the same sort will return the rows
in the same order every time. Example: To iterate on rows ordered by the third column, use:
var rowInds = data.getSortedRows([{column: 2}]);
for (var i = 0; i < rowInds.length; i++) {
var v = data.getValue(rowInds[i], 2);
}
|
getTableProperties |
Object | Returns a map of all properties for the table. |
getTableProperty(name) |
Auto | Returns the value of a named property, or
See also: setTableProperties setTableProperty |
getValue(rowIndex, columnIndex) |
Object | Returns the value of the cell at the given row and column indexes.
The type of the returned value depends on the column type (see getColumnType):
|
insertColumn(columnIndex,
type [,label [,id]]) |
None | Inserts a new column to the data table, at the specifid index. All existing columns at or after the specified index are shifted to a higher index.
See also: addColumn |
insertRows(rowIndex, numberOrArray) |
None | Insert the specified number of rows at the specified row index.
See also: addRows |
removeColumn(columnIndex) |
None | Removes the column at the specified index.
See also: removeColumns |
removeColumns(columnIndex,
numberOfColumns) |
None | Removes the specified number of columns starting from the column at the specified index.
See also: removeColumn |
removeRow(rowIndex) |
None | Removes the row at the specified index.
See also: removeRows |
removeRows(rowIndex, numberOfRows) |
None | Removes the specified number of rows starting from the row at the specified index.
See also: removeRow |
setCell(rowIndex, columnIndex [,
value [, formattedValue [, properties]]]) |
None | Sets the value, formatted value, and/or properties, of a cell.
See also: setValue(), setFormattedValue(), setProperty(), setProperties(). |
setColumnLabel(columnIndex,
label) |
None | Sets the label of a column.
See also: getColumnLabel |
setColumnProperty(columnIndex,
name, value) |
None | Sets a single column property. Some visualizations support row, column, or cell properties to modify their display or behavior; see the visualization documentation to see what properties are supported.
See also: setColumnProperties getColumnProperty |
setColumnProperties(columnIndex,
properties) |
None | Sets multiple column properties. Some visualizations support row, column, or cell properties to modify their display or behavior; see the visualization documentation to see what properties are supported.
See also: setColumnProperty getColumnProperty |
setFormattedValue(rowIndex,
columnIndex, formattedValue) |
None | Sets the formatted value of a cell.
See also: getFormattedValue |
setProperty(rowIndex, columnIndex,
name, value) |
None | Sets a cell property. Some visualizations support row, column, or cell properties to modify their display or behavior; see the visualization documentation to see what properties are supported.
See also: setCell setProperties getProperty |
setProperties(rowIndex, columnIndex,
properties) |
None | Sets multiple cell properties. Some visualizations support row, column, or cell properties to modify their display or behavior; see the visualization documentation to see what properties are supported.
See also: setCell setProperty getProperty |
setRowProperty(rowIndex,
name, value) |
None | Sets a row property. Some visualizations support row, column, or cell properties to modify their display or behavior; see the visualization documentation to see what properties are supported.
See also: setRowProperties getRowProperty |
setRowProperties(rowIndex,
properties) |
None | Sets multiple row properties. Some visualizations support row, column, or cell properties to modify their display or behavior; see the visualization documentation to see what properties are supported.
See also: setRowProperty getRowProperty |
setTableProperty(name,
value) |
None | Sets a single table property. Some visualizations support table, row, column, or cell properties to modify their display or behavior; see the visualization documentation to see what properties are supported.
See also: setTableProperties getTableProperty |
setTableProperties(properties) |
None | Sets multiple table table. Some visualizations support table, row, column, or cell properties to modify their display or behavior; see the visualization documentation to see what properties are supported.
See also: setTableProperty getTableProperty |
setValue(rowIndex, columnIndex,
value) |
None | Sets the value of a cell. In addition to overwriting any existing cell value, this method will also clear out any formatted value and properties for the cell.
See also: setCell, setFormattedValue, setProperty, setProperties |
sort(sortColumns) |
None | Sorts the rows, according to the specified sort columns. The DataTable is
modified by this method. See getSortedRows() for
a description of the sorting details. This method does not return the sorted
data.See also: getSortedRows Example: To sort by the third column and then by the second column, use: data.sort([{column: 2}, {column: 1}]); |
toJSON() |
String | Returns a JSON representation of the DataTable that can be passed into
the DataTable constructor. |
You can initialize a DataTable by passing a JavaScript
string literal object into the data parameter. We'll call this object
the data object.
You can code this object by hand, according to the description below, or you can
use a helper Python library if you know how
to use Python, and your site can use it. However, if you want to construct the
object by hand, this section will describe the syntax.
First, let's show an example of a simple JavaScript object describing a table with three rows and three columns (String, Number, and Date types):
{
cols: [{id: 'A', label: 'NEW A', type: 'string'},
{id: 'B', label: 'B-label', type: 'number'},
{id: 'C', label: 'C-label', type: 'date'}
],
rows: [{c:[{v: 'a'}, {v: 1.0, f: 'One'}, {v: new Date(2008, 1, 28, 0, 31, 26), f: '2/28/08 12:31 AM'}]},
{c:[{v: 'b'}, {v: 2.0, f: 'Two'}, {v: new Date(2008, 2, 30, 0, 31, 26), f: '3/30/08 12:31 AM'}]},
{c:[{v: 'c'}, {v: 3.0, f: 'Three'}, {v: new Date(2008, 3, 30, 0, 31, 26), f: '4/30/08 12:31 AM'}]}
],
p: {foo: 'hello', bar: 'world!'}
}
Now let's describe the syntax:
The data object consists of two required top-level properties, cols and rows,
and an optional p property that is a map of arbitrary values.
Note: All property names and string constants shown
are case-sensitive. Also, properties described as taking a string value should
have their value enclosed in quotation marks. For example, if you wish to specify
the type property as being number, it would be expressed like this: type:
'number' but the value itself, as numeric, would be expressed like this: v:
42
cols property
cols is an array of objects describing the ID and type of each column.
Each property is an object with the following properties (case-sensitive):
type [Required] Data type of the data in the column.
Supports the following string values (examples include the v: property, described
later):
v:'true'v:7 , v:3.14, v:-55v:'hello'v:new Date(2008, 0, 15)v:new Date(2008, 0, 15, 14, 30, 45)v:[8, 15, 0], v: [6, 12, 1, 144]id [Optional] String ID of the column. Must be unique
in the table. Use basic alphanumeric characters, so the host page does not
require fancy escapes to access the column in JavaScript. Be careful not
to choose a JavaScript keyword. Example: id:'col_1'label [Optional] String value that some visualizations
display for this column. Example: label:'Height'pattern [Optional] String pattern that was used by
a data source to format numeric, date, or time column values. This is for
reference only; you probably won't need to read the pattern, and it isn't
required to exist. The Google Visualization client does not use this value
(it reads the cell's formatted value). If the DataTable has
come from a data source in response to a query with a format clause,
the pattern you specified in that clause will probably be returned in this
value. The recommended pattern standards are the ICU DecimalFormat and SimpleDateFormat.p [Optional] An object that is a map of custom values
applied to the cell. These values can be of any JavaScript type. If your
visualization supports any cell-level properties, it will describe them;
otherwise, this property will be ignored. Example: p:{style:
'border: 1px solid green;'}.cols Example
cols: [{id: 'A', label: 'NEW A', type: 'string'},
{id: 'B', label: 'B-label', type: 'number'},
{id: 'C', label: 'C-label', type: 'date'}]
The rows property holds an array of row objects.
Each row object has one required property called c, which is an array
of cells in that row. It also has an optional p property that defines
a map of arbitrary custom values to assign to the whole row. If your visualization
supports any row-level properties it will describe them; otherwise, this property
will be ignored.
Each cell in the table is described by an object with the following properties:
v [Optional] The cell value. The data type should
match the column data type. If null, the whole object should be empty and
have neither v nor f properties.f [Optional] A string version of the v value,
formatted for display. The values should match, so if you specify Date(2008,
0, 1) for v, you should specify "January 1, 2008" or
some such string for this property. This value is not checked against the v value.
The visualization will not use this value for calculation, only as a label
for display. If omitted, a string version of v will be used.p [Optional] An object that is a map of custom values
applied to the cell. These values can be of any JavaScript type. If your
visualization supports any cell-level properties, it will describe them;
otherwise, this property will be ignored. Example: p:{style:
'border: 1px solid green;'}.Cells in the row array should be in the same order as their column descriptions
in cols. To indicate a null cell, you can specify null,
leave a blank for a cell in an array, or omit trailing array members. So, to indicate
a row with null for the first two cells, you could specify [ , , {cell_val}] or [null,
null, {cell_val}].
Here is a sample table object with three columns, filled with three rows of data:
{
cols: [{id: 'A', label: 'NEW A', type: 'string'},
{id: 'B', label: 'B-label', type: 'number'},
{id: 'C', label: 'C-label', type: 'date'}
],
rows: [{c:[{v: 'a'}, {v: 1.0, f: 'One'}, {v: new Date(2008, 1, 28, 0, 31, 26), f: '2/28/08 12:31 AM'}]},
{c:[{v: 'b'}, {v: 2.0, f: 'Two'}, {v: new Date(2008, 2, 30, 0, 31, 26), f: '3/30/08 12:31 AM'}]},
{c:[{v: 'c'}, {v: 3.0, f: 'Three'}, {v: new Date(2008, 3, 30, 0, 31, 26), f: '4/30/08 12:31 AM'}]}
]
}
p property
The p property is a map of custom values applied to the whole DataTable.
These values can be of any JavaScript type. If your visualization supports any
datatable-level properties, it will describe them; otherwise, this property will
be ignored. Example: p:{className: 'myDataTable'}.
A read-only view of an underlying DataTable. A DataView allows
selection of only a subset of the columns and/or rows. It also allows reordering
columns/rows, and duplicating columns/rows.
A view is a live window on the underlying DataTable, not a static
snapshot of data. However, you still should must be careful when changing the structure of
the table itself, as described here:
DataView from the DataTable to
pick up these changes.draw() on
any visualizations after this change to have the new row set rendered). Note
that if your view has filtered out rows by calling one of the setRows()
or hideRows() methods, and you add or remove rows from the underlying
table, the behavior is unexpected; you must create a new DataView to
reflect the new table.DataView (but you must call draw() on
any visualizations after this change to have the new cell values rendered).It is also possible to create a DataView from another DataView.
Note that whenever an underlying table or view is mentioned, it refers
to the level immediately below this level. In other words, it refers to the data
object used to construct this DataView.
DataView also supports calculated columns; these are columns whose
value is calculated on the fly using a function that you supply. So, for example,
you can include a column that is a sum of two preceding columns, or a column that
calculates and shows the calendar quarter of a date from another column. See setColumns() for
more details.
When you modify a DataView by hiding or showing rows or columns,
the visualization will not be affected until you call draw() on the
visualization again.
You can combine DataView.getFilteredRows() with DataView.setRows() to
create a DataView with an interesting subset of data, as shown here:
var data = new google.visualization.DataTable();
data.addColumn('string', 'Employee Name');
data.addColumn('date', 'Start Date');
data.addRows(6);
data.setCell(0, 0, 'Mike');
data.setCell(0, 1, new Date(2008, 1, 28));
data.setCell(1, 0, 'Bob');
data.setCell(1, 1, new Date(2007, 5, 1));
data.setCell(2, 0, 'Alice');
data.setCell(2, 1, new Date(2006, 7, 16));
data.setCell(3, 0, 'Frank');
data.setCell(3, 1, new Date(2007, 11, 28));
data.setCell(4, 0, 'Floyd');
data.setCell(4, 1, new Date(2005, 3, 13));
data.setCell(5, 0, 'Fritz');
data.setCell(5, 1, new Date(2007, 9, 2));
// Create a view that shows everyone hired since 2007.
var view = new google.visualization.DataView(data);
view.setRows(view.getFilteredRows([{column: 1, minValue: new Date(2007, 0, 1)}]));
var table = new google.visualization.Table(document.getElementById('test_dataview'));
table.draw(view, {sortColumn: 1});
Parameters
dataDataTable or DataView used to initialize the
view. By default, the view contains all the columns and rows in the underlying
data table or view, in the original order. To hide or show rows or columns
in this view, call the appropriate set...() or hide...() methods. See also:
setColumns(), hideColumns(), setRows(), hideRows().
This constructor creates a DataView object initialized from a JSON
string. It helps you recreate the DataView that you serialized using DataView.toJSON().
You must pass in the DataTable that was used to create the original DataView on
which you called DataView.toJSON().
Syntax
google.visualization.DataView.fromJSON(data, viewAsJson)
DataTable object that you used to create the DataView,
on which you called DataView.toJSON(). If this table is any different
from the original table, you will get unpredictable results.DataView.toJSON().
| Method | Return Value | Description |
|---|---|---|
See descriptions in DataTable. |
Same as the equivalent DataTable methods, except that row/column
indexes refer to the index in the view and not in the underlying table/view. |
|
toJSON() |
string | Returns a string representation of this DataView. This
string does not contain the actual data; it only contains the DataView-specific
settings such as visible rows and columns.
You can store this string and pass it to the static DataView.fromJSON() constructor to
recreate this view. This won't include generated
columns. |
getTableColumnIndex(viewColumnIndex) |
Number | Returns the index in the underlying table (or view) of a given column
specified by its index in this view. Example: If |
getTableRowIndex(viewRowIndex) |
Number | Returns the index in the underlying table (or view) of a given row
specified by its index in this view. Example: If |
getViewColumnIndex(tableColumnIndex) |
Number | Returns the index in this view that maps to a given column specified
by its index in the underlying table (or view). If more than one such
index exists, returns the first (smallest) one. If no such index exists
(the specified column is not in the view), returns -1. Example: If |
getViewColumns() |
Array of numbers | Returns the columns in this view, in order. That is, if you call |
getViewRowIndex(tableRowIndex) |
Number | Returns the index in this view that maps to a given row specified
by its index in the underlying table (or view). If more than one such
index exists, returns the first (smallest) one. If no such index exists
(the specified row is not in the view), returns -1. Example: If |
getViewRows() |
Array of numbers | Returns the rows in this view, in order. That is, if you call |
hideColumns(columnIndexes) |
none | Hides the specified columns from the current view. Example: If you have a table with 10 columns, and you
call |
hideRows(min, max) |
None | Hides all rows with indexes that lie between min and max (inclusive)
from the current view. This is a convenience syntax for |
hideRows(rowIndexes) |
None | Hides the specified rows from the current view. Example: If you have a table with 10 rows, and you
call |
setColumns(columnIndexes) |
None | Specifies which columns are visible in this view. Any columns not specified will be hidden. This is an array of column indexes in the underlying table/view, or calculated columns. If you don't call this method, the default is to show all columns. The array can also contain duplicates, to show the same column multiple times. Columns will be shown in the order specified.
Examples:
view.setColumns([3, 4, 3, 2]); //Causes column 3 to appear twice in the view,
//and hide columns 0 and 1 (as well as any columns
//past 4).
// Column 1 is a value in centimeters, and the third column is
// a generated column that converts this into inches.
view.setColumns([0,1,{calc:myFunc, type:'number', label:'Height in Inches'}]);
function myFunc(dataTable, rowNum){
return Math.floor(dataTable.getValue(rowNum, 1) / 2.54);
} |
setRows(min, max) |
None | Sets the rows in this view to be all indexes (in the underlying table/view)
that lie between min and max (inclusive). This is a convenience syntax
for |
setRows(rowIndexes) |
None | Sets the visible rows in this view, based on index numbers from
the underlying table/view. Example: To create a view with rows three and zero
of an underlying table/view: |
The google.visualization.data namespace holds a variety of static methods to perform
SQL-like operations on DataTable objects, for example joining them or grouping
by column value.
The google.visualization.data namespace exposes the following methods:
| Method | Description |
|---|---|
google.visualization.data.group |
Performs a SQL GROUP BY action to return a table grouped by values in specified columns. |
google.visualization.data.join |
Joins two data tables on one or more key columns. |
Takes a populated DataTable object and performs a SQL-like GROUP BY operation,
returning a table with rows grouped by the specified column values. Note that this
does not modify the input DataTable.
The returned table includes one row for each combination of values in the specified key columns. Each row includes the key columns, plus one column with an aggregated column value over all rows that match the key combination (for example, a sum or count of all values in the specified column).
The google.visualization.data namespace includes several useful aggregation
values (for example, sum and count),
but you can define your own (for example, standardDeviation or secondHighest).
Instructions on how to define your own aggregator are given after the method
description.
Syntax
google.visualization.data.group(dt, keys, columns)
DataTable. This will not be modified by calling group().DataTable to group by. If an object,
it will include a function that can modify the specified column (for example,
add 1 to the value in that column). The object must have the following properties:
DataTable.DataTable.[0], [0,2], [0,{column:1,
modifier:myPlusOneFunc, type:'number'},2]Return Value
A DataTable with one column for each column listed in keys and one column
for each column listed in columns. The table is sorted by key rows, from
left to right.
Example
// This call will group the table by column 0 values.
// It will also show column 3, which will be a sum of
// values in that column for that row group.
var result = google.visualization.data.group(
dt,
[0],
[{'column': 3, 'aggregation': google.visualization.data.sum, 'type': 'number'}]
);
*Input table*
1 'john' 'doe' 10
1 'jane' 'doe' 100
3 'jill' 'jones' 50
3 'jack' 'jones' 75
5 'al' 'weisenheimer' 500
*Output table*
1 110
3 125
5 500
The API provides the following modifier functions that you can pass into the keys.modifier parameter to customize grouping behavior.
| Function | Input Array Type | Return Type | Description |
|---|---|---|---|
google.visualization.data.month |
Date | number | Given a date, it will return the zero-based month value (0, 1, 2, and so on). |
The API provides the following aggregation functions that you can pass into the columns.aggregation parameter array.
| Function | Input Array Type | Return Type | Description |
|---|---|---|---|
google.visualization.data.avg |
number, string, Date | number | The average value of the array passed in. |
google.visualization.data.count |
any type | number | The count of rows in the group. Null and duplicate values are counted. |
google.visualization.data.max |
number, string, Date | number, string, Date | The maximum value in the array. For strings, this is the first item in an lexicographically sorted list; for Date values, it is the latest date. Nulls are ignored. |
google.visualization.data.min |
number, string, Date | number, string, Date | The minimum value in the array. For strings, this is the last item in an lexicographically sorted list; for Date values, it is the earliest date. Nulls are ignored. |
google.visualization.data.sum |
number, string, Date | number | The sum of all values in the array. |
You can create a modifier function to perform a simple transformation on
key values before the group() function groups your rows. This function
takes a single cell value, performs an action on it (for example, adds 1 to the
value), and returns it. The input and return types need not be the same type, but
the caller must know the input and output types. Here's an example of
a function that accepts a date and returns the quarter:
// Input type: Date
// Return type: number (1-4)
function getQuarter(someDate) {
return Math.floor(someDate.getMonth()/3) + 1;
}
You can create an aggregation function that accepts a set of column values in a row group and returns a single number: for example, returning a count or average of values. Here is an implementation of the provided count aggregation function, which returns a count of how many rows are in the row group:
// Input type: Array of any type
// Return type: number
function count(values) {
return values.length;
}
This method joins two data tables (DataTable or DataView objects)
into a single results table, similar to a SQL JOIN statement. You specify one or
more column pairs (key columns)
between the two tables, and the output table includes the rows according to a join
method that you specify: only rows where both keys match; all rows from one table;
or all rows from both tables, whether or not the keys match. The results table
includes only the key columns, plus any additional columns that you specify. Note
that dt2 cannot have duplicate keys, but dt1 can. The term "key" means
the combination of all key column values, not a specific key column value; so if
a row has cell values A | B | C and columns 0 and 1 are key columns, then the key
for that row is AB.
Syntax
google.visualization.data.join(dt1, dt2, joinMethod, keys, dt1Columns, dt2Columns)
DataTable to join with dt2.DataTable to join with dt1. This table cannot
have multiple identical keys (where a key is a combination of key column values).A | B
Jen Red
Jen Blue
Fred Red
Example: [[0,0], [2,1]] compares values from the
first column in both tables as well as the third column from dt1 with
the second column from dt2. Return Value
A DataTable with the key columns, dt1Columns, and dt2Columns.
This table is sorted by the key columns, from left to right. When joinMethod is
'inner', all key cells should be populated. For other join methods, if no matching
key is found, the table will have a null for any unmatched key cells.
Examples
*Tables*
dt1 dt2
bob | 111 | red bob | 111 | point
bob | 111 | green ellyn | 222 | square
bob | 333 | orange jane | 555 | circle
fred | 555 | blue jane | 777 | triangle
jane | 777 | yellow fred | 666 | dodecahedron
* Note that right table has duplicate Jane entries, but the key we will use is
* columns 0 and 1. The left table has duplicate key values, but that is
* allowed.
*Inner join* google.visualization.data.join(dt1, dt2, 'inner', [[0,0],[1,1]], [2], [2]);
bob | 111 | red | point
bob | 111 | green | point
jane | 777 | yellow | triangle
* Note that both rows from dt1 are included and matched to
* the equivalent dt2 row.
*Full join* google.visualization.data.join(dt1, dt2, 'full', [[0,0],[1,1]], [2], [2]);
bob | 111 | red | point
bob | 111 | green | point
bob | 333 | orange | null
ellyn | 222 | null | square
fred | 555 | blue | null
fred | 666 | null | dodecahedron
jane | 555 | null | circle
jane | 777 | yellow | triangle
*Left join* google.visualization.data.join(dt1, dt2, 'left', [[0,0],[1,1]], [2], [2]);
bob | 111 | red | point
bob | 111 | green | point
bob | 333 | orange | null
fred | 555 | blue | null
jane | 777 | yellow | triangle
*Right join* google.visualization.data.join(dt1, dt2, 'right', [[0,0],[1,1]], [2], [2]);
bob | 111 | red | point
bob | 111 | green | point
ellyn | 222 | null | square
fred | 666 | null | dodecahedron
jane | 555 | null | circle
jane | 777 | yellow | triangle
The Google Visualization API provides formatters that can be used to reformat data in a visualization. These formatters change the formatted value of the specified column in all rows. Note that it does not modify the underlying values; just the formatted values. So, for example, the displayed value would be "$1,000.00" but the underlying value would still be "1000". Formatters can only affect one column at a time; to reformat multiple columns, apply a formatter to each column that you want to change.
Important: Formatters can only be used with a DataTable;
they cannot be used with a DataView (DataView objects
are read-only).
Here are the general steps for using a formatter:
DataTable object.formatter.Format(table, colIndex),
passing in the DataTable and the (zero-based) column number
of the data to reformat. Note that you can only apply a single formatter
to each column; applying a second formatter will simply overwrite the
effects of the first.allowHtml option,
you should set it to true.Here is an example of changing the formatted date values of a date column to use a long date format ("January 1, 2009"):
var data = new google.visualization.DataTable();
data.addColumn('string', 'Employee Name');
data.addColumn('date', 'Start Date');
data.addRows(3);
data.setCell(0, 0, 'Mike');
data.setCell(0, 1, new Date(2008, 1, 28));
data.setCell(1, 0, 'Bob');
data.setCell(1, 1, new Date(2007, 5, 1));
data.setCell(2, 0, 'Alice');
data.setCell(2, 1, new Date(2006, 7, 16));
// Create a formatter.
// This example uses object literal notation to define the options.
var formatter = new google.visualization.DateFormat({formatType: 'long'});
// Reformat our data.
formatter.format(data, 1);
// Draw our data
var table = new google.visualization.Table(document.getElementById('dateformat_div'));
table.draw(data, {showRowNumber: true});
Most formatters expose the following two methods:
| Method | Description |
|---|---|
google.visualization.formatter_name(options) |
Constructor, where formatter_name is a specfic formatter class name.
// Object literal technique
var formatter = new google.visualization.DateFormat({formatType: 'long', timeZone: -5});
// Equivalent property setting technique
var options = new Object();
options['formatType'] = 'long';
options['timeZone'] = -5;
var formatter = new google.visualization.DateFormat(options);
|
format(data, colIndex) |
Reformats the data in the specified column.
|
The Google Visualization API provides the following formatters:
| Formatter Name | Description |
|---|---|
| ArrowFormat | Adds an up or down arrow, indicating whether the cell value is above or below a specified value. |
| BarFormat | Adds a colored bar, the direction and color of which indicates whether the cell value is above or below a specified value. |
| ColorFormat | Colors a cell according to whether the values fall within a specified range. |
| DateFormat | Formats a Date or DateTime value in several different ways, including "January 1, 2009," "1/1/09" and "Jan 1, 2009." |
| NumberFormat | Formats various aspects of numeric values. |
| PatternFormat | Concatenates cell values on the same row into a specified cell, along with arbitrary text. |
Adds an up or down arrow to a numeric cell, depending on whether the value is above or below a specified base value. If equal to the base value, no arrow is shown.
ArrowFormat supports the following options, passed in to the constructor:
| Option | Description |
|---|---|
base |
A number indicating the base value, used to compare against the cell value. If the cell value is higher, the cell will include a green up arrow; if the cell value is lower, it will include a red down arrow; if the same, no arrow. |
var data = new google.visualization.DataTable();
data.addColumn('string', 'Department');
data.addColumn('number', 'Revenues Change');
data.addRows([
['Shoes', {v:12, f:'12.0%'}],
['Sports', {v:-7.3, f:'-7.3%'}],
['Toys', {v:0, f:'0%'}],
['Electronics', {v:-2.1, f:'-2.1%'}],
['Food', {v:22, f:'22.0%'}]
]);
var table = new google.visualization.Table(document.getElementById('arrowformat_div'));
var formatter = new google.visualization.ArrowFormat();
formatter.format(data, 1); // Apply formatter to second column
table.draw(data, {allowHtml: true, showRowNumber: true});
Adds a colored bar to a numeric cell indicating whether the cell value is above or below a specified base value.
BarFormat supports the following options, passed in to the constructor:
| Option | ExampleDescription |
|---|---|
base |
A number that is the base value to compare the cell value against. If the cell value is higher, it will be drawn to the right of the base; if lower, it will be drawn to the left. Default value is 0. |
colorNegative |
A string indicating the negative value section of bars. Possible values are 'red', 'green' and 'blue'; default value is 'red'. |
colorPositive |
A string indicating the color of the positive value section of bars. Possible values are 'red', 'green' and 'blue'. Default is 'blue'. |
drawZeroLine |
A boolean indicating if to draw a 1 pixel dark base line when negative values are present. The dark line is there to enhance visual scanning of the bars. Default value is 'false'. |
max |
The maximum number value for the bar range. Default value is the highest value in the table. |
min |
The minimum number value for the bar range. Default value is the lowest value in the table. |
showValue |
If true, shows values and bars; if false, shows only bars. Default value is true. |
width |
Thickness of each bar, in pixels. Default value is 100. |
var data = new google.visualization.DataTable();
data.addColumn('string', 'Department');
data.addColumn('number', 'Revenues');
data.addRows([
['Shoes', 10700],
['Sports', -15400],
['Toys', 12500],
['Electronics', -2100],
['Food', 22600],
['Art', 1100]
]);
var table = new google.visualization.Table(document.getElementById('barformat_div'));
var formatter = new google.visualization.BarFormat({width: 120});
formatter.format(data, 1); // Apply formatter to second column
table.draw(data, {allowHtml: true, showRowNumber: true});
Assigns colors to the foreground or background of a numeric cell, depending on
the cell value. This formatter is an unusual, in that it doesn't take its options
in the constructor. Instead, you should call addRange() or addGradientRange() as
many times as you want, to add color ranges, before calling format().
Colors can be specified in any acceptable HTML format, for example "black",
"#000000", or "#000".
ColorFormat supports the following methods:
| Option | Description |
|---|---|
addRange(from, to, color, bgcolor) |
Specifies a foreground color and/or background color to a cell, depending on the cell value. Any cell with a value in the specified from—to range (non-inclusive) will be assigned color and bgcolor. It is important to realize that the range is non-inclusive, because creating a range from 1—1,000 and a second from 1,000—2,000 will not cover the value 1,000!
|
addGradientRange(from, to, color, fromBgColor, toBgColor) |
Assigns a background color from a range, according to the cell value.
The color is scaled to match the cell's value within a range from a lower
boundary color to an upper boundary color. Note that this method cannot
compare string values, as
|
format(dataTable, columnIndex) |
The standard format() method to apply formatting to the
specified column. |
ColorFormat() |
Constructor. Takes no arguments. |
var data = new google.visualization.DataTable();
data.addColumn('string', 'Department');
data.addColumn('number', 'Revenues');
data.addRows([
['Shoes', 10700],
['Sports', -15400],
['Toys', 12500],
['Electronics', -2100],
['Food', 22600],
['Art', 1100]
]);
var table = new google.visualization.Table(document.getElementById('colorformat_div'));
var formatter = new google.visualization.ColorFormat();
formatter.addRange(-20000, 0, 'white', 'orange');
formatter.addRange(20000, null, 'red', '#33ff33');
formatter.format(data, 1); // Apply formatter to second column
table.draw(data, {allowHtml: true, showRowNumber: true});
Formats a JavaScript Date value in a variety of ways, including "January
1, 2009," "1/1/09" and "Jan 1, 2009.
DateFormatter supports the following options, passed in to the constructor:
| Option | Description |
|---|---|
formatType |
A quick formatting option for the date. The following string values are supported, reformatting the date February 28, 2008 as shown:
You cannot specify both |
pattern |
A custom format pattern to apply to the value, similar to the ICU
date and time format. For example: You cannot specify both |
timeZone |
The time zone in which to display the date value. This is a numeric value,
indicating GMT + this number of time zones (can be negative). Date object
are created by default with the assumed time zone of the computer on which
they are created; this option is used to display that value in a different
time zone. For example, if you created a Date object of 5pm noon on a computer
located in Greenwich, England, and specified timeZone to be -5 (options['timeZone']
= -5, or Eastern Pacific Time in the US), the value displayed would
be 12 noon. |
function drawDateFormatTable() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Employee Name');
data.addColumn('date', 'Start Date (Long)');
data.addColumn('date', 'Start Date (Medium)');
data.addColumn('date', 'Start Date (Short)');
data.addRows([
['Mike', new Date(2008, 1, 28, 0, 31, 26), new Date(2008, 1, 28, 0, 31, 26), new Date(2008, 1, 28, 0, 31, 26)],
['Bob', new Date(2007, 5, 1, 0), new Date(2007, 5, 1, 0), new Date(2007, 5, 1, 0)],
['Alice', new Date(2006, 7, 16), new Date(2006, 7, 16), new Date(2006, 7, 16)]
]);
// Create three formatters in three styles.
var formatter_long = new google.visualization.DateFormat({formatType: 'long'});
var formatter_medium = new google.visualization.DateFormat({formatType: 'medium'});
var formatter_short = new google.visualization.DateFormat({formatType: 'short'});
// Reformat our data.
formatter_long.format(data, 1);
formatter_medium.format(data,2);
formatter_short.format(data, 3);
// Draw our data
var table = new google.visualization.Table(document.getElementById('dateformat_div'));
table.draw(data, {showRowNumber: true});
}
More About Date Patterns
Here are some more details on what patterns are supported:
The patterns are similar to the ICU
date and time format, but the following patterns are not yet supported: A
e D F g Y u w W. To avoid collision with patterns, any literal text you want
to appear in the output should be surrounded by single quotes, except for the
single quote, which should be doubled: e.g.,"K 'o''clock.'".
| Pattern | Description | Example Output |
|---|---|---|
| GG | Era designator. | "AD" |
| yy or yyyy | year. | 1996 |
| M | Month in year. For January:
|
"July" "07" |
| d | Day in month. Extra 'd' values will add leading zeros. | 10 |
| h | Hour in 12 hour scale. Extra 'h' values will add leading zeros. | 12 |
| H | Hour in 24 hour scale. Extra Hk' values will add leading zeros. | 0 |
| m | Minute in hour. Extra 'M' values will add leading zeros. | 30 |
| s | Second in minute. Extra 's' values will add leading zeros. | 55 |
| S | Fractional second. Extra 'S' values will be padded on the right with zeros. | 978 |
| E | Day of week. Following outputs for "Tuesday":
|
"Tues" "Tuesday" |
| aa | AM/PM | "PM" |
| k | Hour in day (1~24). Extra 'k' values will add leading zeros. | 24 |
| K | Hour in AM/PM (0~11). Extra 'k' values will add leading zeros. | 0 |
| z | Time zone. For time zone 5, produces "UTC+5" |
"UTC+5" |
| Z | Time zone in RFC 822 format. For time zone -5: Z, ZZ, ZZZ produce -0500 ZZZZ and more produce "GMT -05:00" |
"-0800" "GMT -05:00" |
| v | Time zone (generic). |
"Etc/GMT-5" |
| ' | escape for text | 'Date=' |
| '' | single quote | ''yy |
Describes how numeric columns should be formatted. Formatting options include specifying a prefix symbol (such as a dollar sign) or the punctuation to use as a thousands marker.
NumberFormat supports the following options, passed in to the constructor:
| Option | Description |
|---|---|
decimalSymbol |
A character to use as the decimal marker. The default is a dot (.). |
fractionDigits |
A number specifying how many digits to display after the decimal. The default is 2. If you specify more digits than the number contains, it will display zeros for the smaller values. Truncated values will be rounded (5 rounded up). |
groupingSymbol |
A character to be used to group digits to the left of the decimal into sets of three. Default is a comma (,). |
negativeColor |
The text color for negative values. No default value. Values can be any acceptable HTML color value, such as "red" or "#FF0000". |
negativeParens |
A boolean, where true indicates that negative values should be surrounded by parentheses. Default is true. |
prefix |
A string prefix for the value, for example "$". |
suffix |
A string suffix for the value, for example "%". |
var data = new google.visualization.DataTable();
data.addColumn('string', 'Department');
data.addColumn('number', 'Revenues');
data.addRows([
['Shoes', 10700],
['Sports', -15400],
['Toys', 12500],
['Electronics', -2100],
['Food', 22600],
['Art', 1100]
]);
var table = new google.visualization.Table(document.getElementById('numberformat_div'));
var formatter = new google.visualization.NumberFormat(
{prefix: '$', negativeColor: 'red', negativeParens: true});
formatter.format(data, 1); // Apply formatter to second column
table.draw(data, {allowHtml: true, showRowNumber: true});
Enables you to merge the values of designated columns into a single column, along
with arbitrary text. So, for example, if you had a column for first name and a
column for last name, you could populate a third column with {last name}, {first
name}. This formatter does not follow the conventions for the constructor and the format() method.
See the Methods section below for instructions.
PatternFormat supports the following methods:
| Option | Description |
|---|---|
google.visualization.PatternFormat(pattern) |
Constructor. Does not take an options object. Instead, it takes a
string pattern parameter. This is a string that describes which
column values to put into the destination column, along with any arbitrary
text. Embed placeholders in your string to indicate a value from another
column to embed. The placeholders are Example: The following example demonstrates a constructor
for a pattern that creates an anchor element, with the first and second
elements taken from the var formatter = new google.visualization.PatternFormat('<a href="mailto:{1}">{0}</a>'); |
format(dataTable, srcColumnIndices, opt_dstColumnIndex) |
The standard formatting call, with a few additional parameters:
See the formatting examples after the table. |
Here are a few example inputs and outputs for a four-column table.
Row before formatting (4 columnss, last is blank):
John | Paul | Jones | [empty]
var formatter = new google.visualization.PatternFormat("{0} {1} {2}");
formatter.format(data, [0,1,2], 3);
Output:
John | Paul | Jones | John Paul Jones
var formatter = new google.visualization.PatternFormat("{1}, {0}");
formatter.format(data, [0,2], 3);
Output:
John | Paul | Jones | Jones, John
The following example demonstrates how to combine data from two columns to create an email address. It uses a DataView object to hide the original source columns:
var data = new google.visualization.DataTable();
data.addColumn('string', 'Name');
data.addColumn('string', 'Email');
data.addRows([
['John Lennon', 'john@beatles.co.uk'],
['Paul McCartney', 'paul@beatles.co.uk'],
['George Harrison', 'george@beatles.co.uk'],
['Ringo Starr', 'ringo@beatles.co.uk']
]);
var table = new google.visualization.Table(document.getElementById('patternformat_div'));
var formatter = new google.visualization.PatternFormat('<a href="mailto:{1}">{0}</a>');
formatter.format(data, [0, 1]); // Apply formatter and set the formatted value of the first column.
var view = new google.visualization.DataView(data);
view.setColumns([0]); // Create a view with the first column only.
table.draw(view, {allowHtml: true, showRowNumber: true});
A helper class to simplify writing Gadgets that use the Google Visualization API.
google.visualization.GadgetHelper()
| Method | Return Value | Description |
|---|---|---|
createQueryFromPrefs(prefs) |
google.visualization.Query | Static. Create a new instance of google.visualization.Query and
set its properties according to values from the gadget preferences. The
type of parameter prefs is _IG_Prefs
|
validateResponse(response) |
Boolean | Static. Parameter response is of type google.visualization.QueryResponse.
Returns true if the response contains data. Returns false if
the query execution failed and the response does not contain data. If an
error occured, this method displays an error message. |
Represents a query that is sent to a data source.
google.visualization.Query(dataSourceUrl, opt_options)
Parameters
makeRequest() method.
If specified, you should also specify makeRequestParams.tqrt URL
parameter from the data source URL. tqrt can have the
following values: 'xhr', 'scriptInjection', or 'makeRequest'. If tqrt is
missing or has an invalid value, the default is 'xhr' for same-domain
requests and 'scriptInjection' for cross-domain requests.makeRequest() query. Used and required only if sendMethod is
'makeRequest'. | Method | Return Value | Description |
|---|---|---|
abort() |
None | Stops the automated query sending that was started with setRefreshInterval(). |
setRefreshInterval(seconds) |
None | Sets the query to automatically call the If you use this method, you should call it before calling the Cancel this method either by calling it again with zero (the default),
or by calling |
setTimeout(seconds) |
None | Sets the number of seconds to wait for the data source to respond before
raising a timeout error. seconds is a number greater than
zero. The default timeout is 30 seconds. This method, if used, should be called before calling the send method. |
setQuery(string) |
None | Sets the query string. The value of the string parameter
should be a valid query. This method, if used, should be called before calling the send method. Learn
more about the Query language |
send(callback) |
None | Sends the query to the data source. callback should be a
function that will be called when the data source responds. The callback
function will receive a single parameter of type google.visualization.QueryResponse. |
Represents a response of a query execution as received from the data source. An instance of this class is passed as an argument to the callback function that was set when Query.send was called.
See also: Query.send
| Method | Return Value | Description |
|---|---|---|
getDataTable() |
DataTable | Returns the data table as returned by the data source. Returns null if
the query execution failed and no data was returned. |
getDetailedMessage() |
String | Returns a detailed error message for queries that failed. If the query execution was successful, this method returns an empty string. The message returned is a message that is intended for developers, and may contain technical information, for example 'Column {salary} does not exist'. |
getMessage() |
String | Returns a short error message for queries that failed. If the query execution was successful, this method returns an empty string. The message returned is a short message that is intended for end users, for example 'Invalid Query' or 'Access Denied'. |
getReasons() |
Array of strings | Returns an array of zero of more entries. Each entry is a short string
with an error or warning code that was raised while executing the query.
Possible codes:
|
hasWarning() |
Boolean | Returns true if the query execution has any warning messages. |
isError() |
Boolean | Returns true if the query execution failed, and the response
does not contain any data table. Returns <false> if the query execution
was successful and the response contains a data table. |
This is the constructor for the toolbar element that can be attached to many visualizations. This toolbar enables the user to export the visualization data into different formats, or to provide an embeddable version of the visualization for use in different places. See the toolbar page for more information and a code example.
The API provides several functions to help you display custom error messages to
your users. To use these functions, provide a container element on the page (typically
a <div>), into which the API will draw
a formatted error message. This container can be either the visualization container
element, or a container just for errors. If you specify the visualization container
element, the error message will be displayed above the visualization. Then call
the appropriate function below to show, or remove, the error message. All functions
are static functions in the namespace google.visualization.errors.
You can see an example custom error in the Query Wrapper Example.
| Function | Return Value | Description |
|---|---|---|
addError(container, message, opt_detailedMessage, opt_options) |
String ID value that identifies the error object created. This is a unique value on the page, and can be used to remove the error or find its containing element. | Adds an error display block to the specified page element, with specified text and formatting.
|
addErrorFromQueryResponse(container, response) |
String ID value that identifies the error object created, or null if the response didn't indicate an error. This is a unique value on the page, and can be used to remove the error or find its containing element. |
Pass a query response and error message container to this method:
if the query response indicates a query error, displays an error message
in the specified page element. If the query response is null, the method
will throw a JavaScript error. Pass your QueryResponse received
in your query handler to this message to display an error. It will also
set the style of the display appropriate to the type (error or warning,
similar to
|
removeError(id) |
Boolean: true if the error was removed; false otherwise. | Removes the error specified by ID from the page.
|
removeAll(container) |
None | Removes all error blocks from a specified container. If the specified container does not exist, this will throw an error.
|
getContainer(errorId) |
Handle to a DOM element holding the error specified, or null if it could not be found. | Retrieves a handle to the container element holding the error specified by errorID.
|
Registering to Catch Events
Your visualizations can fire and receive events, and exposes the following two methods to enable you to do so:
Commonly Exposed Events
Visualizations can fire a number of events. Every visualization can define the details of the events it fires, but the following event should be implemented in a standard way:
Called by visualization implementers. Call this method from your visualization to fire an event with an arbitrary name and set of values.
google.visualization.events.trigger(source_visualization, event_name, event_args)
this keyword.Example
Here is an example of a visualization that throws a method named "select" when its onclick method is called. It does not pass back any values.
MyVisualization.prototype.onclick = function(rowIndex) {
this.highlightRow(this.selectedRow, false); // Clear previous selection
this.highlightRow(rowIndex, true); // Highlight new selection
// Save the selected row index in case getSelection is called.
this.selectedRow = rowIndex;
// Trigger a select event.
google.visualization.events.trigger(this, 'select', null);
};
Used by visualization users. Call this method to register to receive events fired by a visualization hosted on your page. Note that this will not work for gadget visualizations. The visualization should document what event arguments, if any, will be passed to the handling function.
google.visualization.events.addListener(source_visualization, event_name, handling_function)
Example
Here is an example of registering to receive the selection event
var table = new google.visualization.Table(document.getElementById('table_div'));
table.draw(data, options);
google.visualization.events.addListener(table, 'select', selectHandler);
function selectHandler() {
alert('A table row was selected');
}
If your visualization is not expected to be ready for interaction immediately after it returns from its draw() implementation, consider implementing a ready event. This event should be fired when the visualization is ready to begin responding to user interaction and method calls. This event typically does not provide any parameters to the receiver. See the Firing Events page for more information.
If your visualization can fire events to the client when selected, consider implementing the select event. Details on the standard way to implement this event are given on the Firing Events page.
Every visualization should expose the following set of required and optional methods and properties. However, note that there is no type checking to enforce these standards, so you should read the documentation for each visualization.
Note: These methods are in the namespace of the visualization, not the google.visualization namespace.
The constructor should have the name of your visualization class, and return an instance of that class.
visualization_class_name(dom_element)
Example
var org = new google.visualization.OrgChart(document.getElementById('org_div'));
Draws the visualization on the page. Behind the scenes this can be fetching a graphic from a server or creating the graphic on the page using the linked visualization code. You should call this method every time the data or options change. The object should be drawn inside the DOM element passed into the constructor.
draw(data[, options])
DataTable passed
into a visualization.{x:100, y:200,
title:'An Example'}Example
chart.draw(myData, {width: 400, height: 240, is3D: true, title: 'My Daily Activities'});
This is optionally exposed by visualizations that want to let you access the currently selected data in the graphic.
selection_array getSelection()
Returns
selection_array An array of selected objects, each one describing
a data element in the underlying table. Each object has properties row and/or column,
with the index of the row and/or column of the selected item in the underlying
DataTable. If the row property is null, then the selection is a column;
if the column property is null, then the selection is a row; if both are non-null,
then it is a specific data item. You can call the DataTable.getValue() method
to get the value of the selected item. The retrieved array can be passed into setSelection().
Example
function myClickHandler(){
var selection = myVis.getSelection();
for (var i = 0; i < selection.length; i++) {
var item = selection[i];
if (item.row != null && item.column != null) {
message += '{row:' + item.row + ',column:' + item.column + '}';
} else if (item.row != null) {
message += '{row:' + item.row + '}';
} else if (item.column != null) {
message += '{column:' + item.column + '}';
}
}
if (message == '') {
message = 'nothing';
}
alert('You selected ' + message);
}
Selects a data entry in the visualization--for example, a point in an area chart,
or a bar in a bar chart. When this method is
called, the visualization should visually indicate what the new selection is. The
implementation of setSelection() should
not fire a "select" event. Visualizations may ignore part of the
selection. For example, a table that can show only selected rows may ignore cell
or column elements in its setSelection() implementation, or it can
select the entire row.
Every time this method is called, all selected items are deselected, and the new
selection list passed in should be applied. There is no explicit way to deselect
individual items; to deselect individual items, call setSelection() with
the items to remain selected; to deselect all elements,
call setSelection(), setSelection(null),
or setSelection([]).
setSelection(selection_array)
row and column are
the zero-based row or column number of an item in the data table to select.
To select a whole column, set row to null; to
select a whole row, set column to null. Example: setSelection([{row:0,column:1},{row:1,
column:null}]) selects the cell at (0,1) and the entire row 1.