回答
當然,只使用靜態圖像Google Chart API
至少,你可以到20 Apr 2015 :(
謝謝。我發現了適合我的情況的圖像餅圖。 – Tatming
新的JSAPI非常有吸引力,但HTML代碼位於
很抱歉,舊圖像API現已棄用 - ttl = 2015:https://developers.google.com/chart/terms – zeroasterisk
我發現這一點,但還沒有測試過它: https://gist.github.com/battlehorse/1333906
看起來它使用用戶可以將數據轉換爲SVG/PNG格式,然後打印。
自從他們在半年前刪除iframe的更新後,這不起作用。請參閱此處的解答。 http://www.battlehorse.net/page/topics/charts/save_google_charts_as_image.html – Doomsknight
是的,Google Visualization API不再支持它,但它僅適用於下面需要幾行JavaScript。
該解決方案最初由Riccardo Govoni在精彩Battlehorse tutorial中描述,將SVG轉換爲Canvas,然後轉換爲PNG,然後可以顯示或保存。
教程代碼不再起作用,但我添加了兩個修復它:
canvg.js R157作爲標識的regression一種解決方法。
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/rgbcolor.js"></script>
<script type="text/javascript" src="https://canvg.googlecode.com/svn-history/r157/trunk/canvg.js"></script>
<script>
function getImgData(chartContainer) {
var chartArea = chartContainer.getElementsByTagName('svg')[0].parentNode;
var svg = chartArea.innerHTML;
var doc = chartContainer.ownerDocument;
var canvas = doc.createElement('canvas');
canvas.setAttribute('width', chartArea.offsetWidth);
canvas.setAttribute('height', chartArea.offsetHeight);
canvas.setAttribute(
'style',
'position: absolute; ' +
'top: ' + (-chartArea.offsetHeight * 2) + 'px;' +
'left: ' + (-chartArea.offsetWidth * 2) + 'px;');
doc.body.appendChild(canvas);
canvg(canvas, svg);
var imgData = canvas.toDataURL("image/png");
canvas.parentNode.removeChild(canvas);
return imgData;
}
function saveAsImg(chartContainer) {
var imgData = getImgData(chartContainer);
// Replacing the mime-type will force the browser to trigger a download
// rather than displaying the image in the browser window.
window.location = imgData.replace("image/png", "image/octet-stream");
}
function toImg(chartContainer, imgContainer) {
var doc = chartContainer.ownerDocument;
var img = doc.createElement('img');
img.src = getImgData(chartContainer);
while (imgContainer.firstChild) {
imgContainer.removeChild(imgContainer.firstChild);
}
imgContainer.appendChild(img);
}
</script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
// Pie chart
var data = new google.visualization.DataTable();
data.addColumn('string', 'Task');
data.addColumn('number', 'Hours per Day');
data.addRows(5);
data.setValue(0, 0, 'Work');
data.setValue(0, 1, 11);
data.setValue(1, 0, 'Eat');
data.setValue(1, 1, 2);
data.setValue(2, 0, 'Commute');
data.setValue(2, 1, 2);
data.setValue(3, 0, 'Watch TV');
data.setValue(3, 1, 2);
data.setValue(4, 0, 'Sleep');
data.setValue(4, 1, 7);
var chart = new google.visualization.PieChart(document.getElementById('google_visualization_div'));
chart.draw(data, {width: 450, height: 300, title: 'My Daily Activities'});
}
</script>
</head>
<body>
<div id="google_visualization_div"></div>
<button onclick="saveAsImg(document.getElementById('google_visualization_div'));">Save as PNG Image</button>
<button onclick="toImg(document.getElementById('google_visualization_div'), document.getElementById('img_div'));">Convert to image</button>
<hr>
<div id="img_div">
Image will be placed here
</div>
</body>
</html>
@ philipp ..偉大的工作.. –
在IE8即時通訊中遇到麻煩chartContainer.getElementsByTagName('svg')[0] .parentNode;我該如何解決它 – Hariprasath
- 1. Angular2谷歌餅圖可視化
- 2. 谷歌圖表可視化
- 3. 谷歌餅圖
- 4. 谷歌餅圖
- 5. 谷歌可視化餅圖文本主播問題
- 6. 谷歌可視化問題在餅圖中的值很小
- 7. 谷歌可視化餅圖onclick事件不在IE8中觸發
- 8. 谷歌餅圖餅圖背景圖片
- 9. 骨幹視圖+谷歌可視化api
- 10. 獲取谷歌可視化圖像圖的URL
- 11. 谷歌的可視化圖表獲得作爲圖像(JAVA)
- 12. 谷歌可視化圖表ajax數據
- 13. 谷歌圖表/可視化列寬
- 14. 谷歌可視化地圖不呈現
- 15. 谷歌可視化(圖表工具)API
- 16. Grails谷歌地圖可視化
- 17. 在asp.net谷歌可視化條形圖
- 18. 谷歌可視化圖表 - 顏色
- 19. 可視化谷歌地圖/可視化的大量數據
- 20. 谷歌餅圖零價值
- 21. 谷歌餅圖不在yii
- 22. 谷歌餅圖片背景
- 23. 谷歌餅圖和PHP
- 24. 校準PNG谷歌地圖
- 25. 飼料json repsonse到谷歌餅圖
- 26. 數據綁定到餅圖(谷歌API)
- 27. 谷歌可視化
- 28. 谷歌分析圖像視圖
- 29. 谷歌圖表API - 餅圖不顯示
- 30. 谷歌餅圖圖例顯示
我有同樣的問題,只有舊樣式圖表是**不適合我的需要。 – msanford
本教程演示如何將Google圖表生成的圖表轉換爲圖片,我希望這有助於:http://www.battlehorse.net/page/topics/charts/save_google_charts_as_image.html – 2012-07-25 17:08:05