簡介
您可以從瀏覽器或 print()
函式透過 JavaScript 列印 Google 圖表。如要提供圖表的 PNG 圖片存取權,可以使用 getImageURI()
方法。目前適用於核心圖表和地理圖。
如果您
var my_div = document.getElementById('chart_div'); var my_chart = new google.visualization.ChartType(chart_div); google.visualization.events.addListener(my_chart, 'ready', function () { my_div.innerHTML = '<img src="' + my_chart.getImageURI() + '">'; }); my_chart.draw(data);
注意事項:請等待 ready
事件 (如本頁範例所示),以確保圖表已完成轉譯。
注意:這項功能僅適用於支援 HTML5 <canvas>
元素的瀏覽器,因此不支援 Internet Explorer 9 以下版本。
相關完整範例如下:
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load("current", {packages:['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Element', 'Density', { role: 'style' }], ['Copper', 8.94, '#b87333', ], ['Silver', 10.49, 'silver'], ['Gold', 19.30, 'gold'], ['Platinum', 21.45, 'color: #e5e4e2' ] ]); var options = { title: "Density of Precious Metals, in g/cm^3", bar: {groupWidth: '95%'}, legend: 'none', }; var chart_div = document.getElementById('chart_div'); var chart = new google.visualization.ColumnChart(chart_div); // Wait for the chart to finish drawing before calling the getImageURI() method. google.visualization.events.addListener(chart, 'ready', function () { chart_div.innerHTML = '<img src="' + chart.getImageURI() + '">'; console.log(chart_div.innerHTML); }); chart.draw(data, options); } </script> <div id='chart_div'></div>
程式執行時,chart_div.innerHTML
會設為圖表的 PNG 編碼,並顯示在 JavaScript 主控台中:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAADICAYAAADGFbfiA...
當 URI 直接放置於瀏覽器網址列中時,現代化的瀏覽器將顯示圖片:
您可以在以下這行 JavaScript 程式碼加入可列印版本的連結:
document.getElementById('png').outerHTML = '<a href="' + chart.getImageURI() + '">Printable version</a>';
後面加上以下這一行 HTML 程式碼:
<div id='png'></div>
快照選項
圖表建立者可以執行大多數操作,讓使用者透過瀏覽器執行圖表。因此,如果您想在圖表中建立具有工具提示的靜態圖片,或在特定點顯示 crosshairs,則可在 getImageURI()
之前呼叫 setSelection()
,如下所示:
以下是含有 100 個隨機點的散佈圖,其中其中一個已預先選取工具提示和交叉列表:
重新載入後,您會看到一個不同點。程式碼,其中重要文字為粗體:
<script type="text/javascript"> google.charts.load("current", {packages:['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('number'); data.addColumn('number'); for (var i = 0; i < 100; i++) data.addRow([Math.floor(Math.random() * 100), Math.floor(Math.random() * 100)]); var options = { legend: 'none', crosshair: { trigger: 'both' }, // Display crosshairs. tooltip: { trigger: 'selection' } // Display tooltips on selection. }; var chart = new google.visualization.ScatterChart(document.getElementById('scatter_setselection')); google.visualization.events.addListener(chart, 'ready', function () { chart.setSelection([{row:99, column:1}]); // Select one of the points. png = '<a href="' + chart.getImageURI() + '">Printable version</a>'; console.log(png); }); chart.draw(data, options); }