重要事項:Google 圖表工具的「圖片圖表」部分已自 2012 年 4 月 20 日起正式淘汰。但請放心,該功能將根據淘汰政策持續運作。
總覽
一般圖片圖表是 Google Chart API 產生之所有圖表的通用包裝函式。嘗試使用這個圖表前,請先參閱 Chart API 說明文件。請注意,與直接呼叫 Chart API 的情況不同,您可以使用這個圖表傳送多達 16, 000 的資料。
所有資料都會使用 DataTable 或 DataView 傳送至圖表。此外,部分標籤會以資料欄的形式在資料表中傳遞。
所有其他 Chart API 網址參數 (chd 除外) 都會以選項的形式傳遞。
攝影者:Google
示例
以下是幾種不同圖表的範例。
折線圖
<html>
<head>
<script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script>
<script type='text/javascript'>
google.charts.load("current", {packages:["imagechart"]});
</script>
<script type='text/javascript'>
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('string');
dataTable.addColumn('number');
dataTable.addColumn('string');
// Row data is [chl, data point, point label]
dataTable.addRows([
['January',40,undefined],
['February',60,'Initial recall'],
['March',60,'Product withdrawn'],
['April',45,undefined],
['May',47,'Relaunch'],
['June',75,undefined],
['July',70,undefined],
['August',72,undefined]
]);
var options = {cht: 'lc', chds:'0,160', annotationColumns:[{column:2, size:12, type:'flag', priority:'high'},]};
var chart = new google.visualization.ImageChart(document.getElementById('line_div'));
chart.draw(dataTable, options);
}
</script>
</head>
<body>
<div id='line_div'></div>
</body>
</html>
直條圖
請注意,在包裝長條圖中,您不需要像自行呼叫圖表一樣指定 chxt='x';如果未指定軸,一般圖片圖表會預設嘗試正確設定圖表。
<html>
<head>
<script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script>
<script type='text/javascript'>
google.charts.load("current", {packages:["imagechart"]});
</script>
<script type='text/javascript'>
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('number');
dataTable.addColumn('number');
dataTable.addRows([
[10,50],
[50,60],
[60,100],
[80,40],
[40,20]
]);
var options = {cht: 'bvs', chs: '300x125', colors:['#4D89F9','#C6D9FD'],
chds:'0,160', chxl:'0:|oranges|apples|pears|bananas|kiwis|'};
var chart = new google.visualization.ImageChart(document.getElementById('bar_div'));
chart.draw(dataTable, options);
}
</script>
</head>
<body>
<div id='bar_div'></div>
</body>
</html>
圓餅圖
<html>
<head>
<script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script>
<script type='text/javascript'>
google.charts.load("current", {packages:["imagechart"]});
</script>
<script type='text/javascript'>
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('string');
dataTable.addColumn('number');
dataTable.addRows([
['January',12],
['February',8],
['March',3]
]);
var options = {cht: 'p', title: 'Sales per Month', chp: 0.628, chs: '400x200',
colors:['#3399CC','#00FF00','#0000FF']};
var chart = new google.visualization.ImageChart(document.getElementById('pie_div'));
chart.draw(dataTable, options);
}
</script>
</head>
<body>
<div id='pie_div'></div>
</body>
</html>
雷達圖
<html>
<head>
<script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script>
<script type='text/javascript'>
google.charts.load("current", {packages:["imagechart"]});
</script>
<script type='text/javascript'>
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('number');
dataTable.addColumn('number');
dataTable.addRows([
[100,10],
[80,20],
[60,30],
[30,40],
[25,50],
[20,60],
[10,70]
]);
var chart = new google.visualization.ImageChart(document.getElementById('radar_div'));
var options = {cht: 'rs', chco: '00FF00,FF00FF', chg: '25.0,25.0,4.0,4.0', chm: 'B,FF000080,0,1.0,5.0|B,FF990080,1,1.0,5.0',};
chart.draw(dataTable, options);
}
</script>
</head>
<body>
<div id='radar_div'></div>
</body>
</html>
地圖圖表
<html>
<head>
<script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script>
<script type='text/javascript'>
google.charts.load("current", {packages:["imagechart"]});
</script>
<script type='text/javascript'>
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('string');
dataTable.addColumn('number');
dataTable.addRows([
['DZ',0],
['EG',50],
['MG',50],
['GM',35],
['KE',100],
['ZA',100]
]);
var options = {cht: 't', chtm: 'africa', chco: '777777,FFC6A5,FF0000', chs: '440x220'};
var chart = new google.visualization.ImageChart(document.getElementById('map_div'));
chart.draw(dataTable, options);
}
</script>
</head>
<body>
<div id='map_div'></div>
</body>
</html>
載入中
google.charts.load 套件名稱為「imagechart」
google.charts.load('current', {'packages': ['imagechart']});
視覺呈現的類別名稱為 google.visualization.ImageChart
var visualization = new google.visualization.ImageChart(container_div);
資料格式
一般化資料格式有兩種:一種用於地圖圖表,另一種則用於所有其他圖表。請注意,JavaScript 數字類型支援資料的唯一數值格式。
注意:您「不要」將任何做為資料或選項傳遞的字串值進行網址編碼。
地圖圖表
地圖圖表會使用具有兩個必要資料欄的資料表:
- 第一欄 - [字串] 國家/地區或州/省代碼。
- 第二欄 - [數字] 該國家/地區或州/省的值。
詳情請參閱地圖圖表說明文件。
非地圖圖表
非對應圖表會採用兩個選用資料欄 (一個位於開頭,一個結尾欄) 以及兩個資料欄內的一或多個資料欄:
- 第一欄:[選用,字串]] 每個項目都代表在支援圖表的圖表上,X 軸 (相當於
chl或chxl參數) 使用的標籤。 - 下一欄 - 數值欄的數量不限,每個數值都代表一個資料序列。
- 最後一欄 - [選填, string] 資料欄後方的任何字串欄,其中每個項目都代表支援圖表的資料點標籤。如要使用這個資料欄,您必須指定
annotationColumns選項。
視圖表類型而定,資料會以不同方式顯示。請參閱圖表的說明文件。
資料欄索引附註:一般圖片圖表的視覺化功能會先移除資料表中的字串欄,然後再將資料表傳送至 Chart API 服務。因此,本頁定義的選項、方法和事件中的資料欄索引會在索引計數中納入字串資料欄;但如果資料欄索引出現在 Chart API 服務處理的任何選項 (例如 chm 選項),則會忽略索引計數中的字串欄。
設定選項
此圖表定義了下列選項。請在傳遞至視覺化 draw() 方法的選項物件中定義相關設定。下列選項並非適用於所有圖表類型;請參閱靜態圖片圖表類型的說明文件。您可以將任何 Chart API 網址參數做為選項傳遞。舉例來說,若要指定圖表視覺呈現的網址參數 chg=50,50,應使用以下方式指定:options['chg'] = '50,50'。
顏色注意事項:colors、color 和 backgroundColor 等顏色選項是以 Chart API 顏色格式指定。這個格式與 #RRGGBB 格式類似,差別在於它包含一個代表透明度的選用第四個十六進位數字。不支援人類可讀的顏色,例如「紅」、「綠」和「藍色」等。Chart API 顏色格式不含開頭的 # 符號,但一般圖片圖表視覺化選項接受包含或不含 # 的顏色代碼。
| 名稱 | 類型 | 預設 | 說明 |
|---|---|---|---|
| annotationColumns | Array<object> | 無 | 各種圖表類型的資料點標籤。這是物件的陣列,每個物件都會將格式化標籤指派給圖表中的一個資料點。這個選項僅適用於支援資料點的圖表 (請參閱連結的主題,瞭解有哪些),且資料表至少要有一個字串標籤欄。 陣列中的每個物件都具備下列屬性:
範例 - 以下程式碼片段定義了一個 12 像素的黑色文字標籤,其中文字是從第 0 欄擷取,並指派給同一資料列第 2 欄的資料點: |
| backgroundColor | 字串 | 「#FFFFFF」(白色) | 圖表 API 顏色格式的圖表背景顏色。 |
| 顏色 | 字串 | 自動 | 指定所有序列要使用的基本顏色;每個系列都會是指定顏色的階梯。您可以使用圖表 API 顏色格式指定顏色,如果指定 colors,系統會忽略這項設定。 |
| 顏色 | 陣列<字串> | 自動 | 藉此為各個資料序列指定特定顏色。您可以使用圖表 API 顏色格式指定顏色。顏色 i 會用於資料欄 i,如果資料欄超過顏色,則會從頭到頭換行。如果所有系列都接受單一顏色的變化版本,請改用 color 選項。 |
| enableEvents | boolean | false | 讓圖表擲回使用者觸發的事件,例如點擊或滑鼠遊標懸停。僅支援特定圖表類型。請參閱下方的「事件」一節。 |
| 填滿 | boolean | false | 如果為 true,請在每一行的下方填入區域。僅適用於折線圖。 |
| firstHiddenColumn | 號碼 | 無 | 資料欄索引。列出的資料欄和後續的所有資料欄「不會」用於繪製主要圖表系列元素 (例如折線圖上的線條或長條圖上的長條),而會用作標記和其他註解的資料。請注意,字串資料欄會納入這個索引計數中。 |
| 高度 | 號碼 | 200 | 圖表的高度,以像素為單位。如果缺少或位於可接受的範圍,則會使用所含元素的高度。如果該值也超出可接受範圍,系統就會使用預設高度。 |
| 標籤 | 字串 | 「無」 | [僅限圓餅圖] 每個區塊顯示的標籤 (如有)。請選擇下列值:
|
| 傳說 | 字串 | 「右」 | 相對於圖表的圖表顯示位置。請指定下列其中一個值:「top」、「bottom」、「left」、「right」或「none」。如果圖表不含圖例 (例如地圖圖表),系統會忽略此值。 |
| max | 號碼 | 資料最大值 | 體重計上顯示的最大值。圓餅圖會忽略這個欄位。預設值為資料最大值,長條圖除外,長條圖的預設值為資料最大值。如果表格有多個資料欄,系統會忽略長條圖。 |
| 分鐘 | 號碼 | 數值資料值 | 體重計上顯示的最小值。圓餅圖會忽略這個欄位。預設值為資料最小值,但長條圖的預設值為零。如果表格有多個資料欄,系統會忽略長條圖。 |
| showCategoryLabels | boolean | true | 標籤是否應顯示在類別 (即列) 軸上。僅適用於折線圖和長條圖。 |
| showValueLabels | boolean | true | True 會在值軸上顯示標籤。僅適用於折線圖和長條圖。 |
| singleColumnDisplay | 號碼 | 無 | 僅顯示指定的資料欄。這個數字是從資料表中從零開始的索引,其中 0 是第一個資料欄。指派給單一資料欄的顏色會與算繪所有資料欄時相同。無法搭配圓餅圖或地圖圖表使用。 |
| title | 字串 | 空字串 | 圖表標題。如未指定,系統就不會顯示標題。對等的圖表參數為 chtt。 |
| valueLabelsInterval | 號碼 | 自動 | 值軸標籤的顯示間隔。舉例來說,如果 min 為 0,max 為 100,而 valueLabelsInterval 為 20,圖表就會顯示軸標籤如下 (0、20、40、60、80 100)。 |
| 寬度 | 號碼 | 400 | 圖表的寬度,以像素為單位。如果缺少或位於可接受的範圍,則會使用所含元素的寬度。如果這個值也超出可接受範圍,系統就會使用預設寬度。 |
方法
| 方法 | 傳回類型 | 說明 |
|---|---|---|
draw(data, options) |
無 | 繪製地圖。 |
getImageUrl() |
字串 | 傳回用來要求圖表的 Google Chart API 網址。請注意,這個字元長度可能超過 2,000 個字元。詳情請參閱 Google Chart API。 |
事件
如果將 enableEvents 屬性設為 true,支援圖表就會針對下表所列的使用者事件擲回事件。這些事件全都會傳回具有下列屬性的 event 物件:
type- 代表事件類型的字串。region- 受影響地區的 ID。只要在原始圖表類型中加入chof=json參數,即可查看可用名稱的清單。詳情請參閱chof=json。
| 名稱 | 說明 | 類型值 |
|---|---|---|
error |
嘗試算繪圖表時發生錯誤時觸發。 | id、message |
onmouseover |
在使用者將滑鼠遊標懸停在圖表元素上時觸發。 | 「mouseover」 |
onmouseout |
在使用者滑鼠遊標移離圖表元素時觸發。 | 「mouseout」 |
onclick |
使用者點擊圖表元素時觸發。 | 「按一下」 |
哪些圖表支援事件?
支援 chof=json 參數的所有圖表都支援擲回事件,也就是除了特殊圖表以外的所有圖表,例如 QR code。
事件處理範例
以下範例顯示記錄滑鼠點擊次數的長條。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>
Google Image Events Sample
</title>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {packages: ['imagechart']});
</script>
<script type="text/javascript">
function drawVisualization() {
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('number');
dataTable.addColumn('number');
dataTable.addRows([
[10,50],
[50,60],
[60,100],
[80,40],
[40,20]
]);
var options = {cht: 'bvs', chs: '300x125', colors:['#4D89F9','#C6D9FD'],
chds:'0,160', chxl:'0:|oranges|apples|pears|bananas|kiwis|', enableEvents:true};
var chart = new google.visualization.ImageChart(document.getElementById('visualization'));
chart.draw(dataTable, options);
// Assign event handler
google.visualization.events.addListener(chart, 'onclick', mouseEventHandler);
}
google.charts.setOnLoadCallback(drawVisualization);
// Define an event handler
function mouseEventHandler(event) {
document.getElementById('debugger').innerHTML += "You clicked " + event.region + "<br/>";
}
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="visualization" style="width: 300px; height: 300px;"></div>
<div id="debugger"></div>
</body>
</html>
資料政策
資料會傳送至 Google Chart API 服務。
本地化
這種圖表支援 Google 圖表服務支援的任何本地化版本。