2

我正在尝试将 Google Chart 转换为类似此链接的图像,但我不了解这条线

var chartArea = chartContainer.getElementsByTagName('iframe')[0].contentDocument.getElementById('chartArea');

Google Chart 生成的代码不会创建任何iFrame名为chartArea

有人能帮我吗 ?

更新

按照图表生成的来源,当我将他转换为图像时

http://chart.googleapis.com/chart?cht=lc&chs=500x200&chtt=Acessos%20ao%20im%C3%B3vel%20dos%20ultimos%20sete%20dias&chxt=x%2Cy&chxl=0%3A%7C24%2F01%7C25%2F01%7C26%2F01%7C27%2F01%7C28%2F01%7C29%2F01%7C30%2F01%7C1%3A%7C%7C0%7C&chdlp=r&chdl=San%7CSite%7CAtendimento&chco=ff8a00%2C585857%2C5501ff&chd=e%3Af.f.f.f.f.f.f.%2Cf.f.f.f.f.f.f.%2Cf.f.f.f.f.f.f.
4

2 回答 2

2

这可以通过遵循此页面上的步骤来完成。请注意,本文中的代码基于使用 iframe 的旧版 Google 可视化,并且不会像发布的那样工作。但是,您可以使用以下代码(在注释中找到)执行相同操作:

var svg = $(chartContainer).find('svg').parent().html();
var doc = chartContainer.ownerDocument;
var canvas = doc.createElement('canvas');
canvas.setAttribute('style', 'position: absolute; ' + '');
doc.body.appendChild(canvas);
canvg(canvas, svg);
var imgData = canvas.toDataURL("image/png");
canvas.parentNode.removeChild(canvas);
return imgData; 

注意:我没有创建此代码,它最初由上述网站的作者(Riccardo Govoni)创建,并由用户 Thomas 在评论部分更新。

于 2013-02-01T02:25:42.470 回答
0

您可以使用chart.getImageURI()以下方法获取图表的 PNG 版本:

需要在图表绘制好之后,所以在ready事件中!

var my_div = document.getElementById('my_div');
var my_chart = new google.visualization.ChartType(chart_div);

google.visualization.events.addListener(my_chart, 'ready', function () {
  my_div.innerHTML = '<img src="' + chart.getImageURI() + '">';
});

my_chart.draw(data);
于 2014-06-04T14:11:38.563 回答