2013-02-13 99 views
1

我正在编写一个程序,该程序通过Google API生成数据集并将其显示在PHP中。这是非常好的,已经实现了,但是我希望将缩略图添加到显示同一数据集的不同图表的代码中(缩略图形式)。PHP谷歌图表API

我正在使用Google API来生成数据并显示它,但我不确定如何让它更改可视化类型(目前使用Pie作为主图表),以便用户能够查看该数据集的不同可视化。

这里是有问题的代码:

装入AJAX API

<script type="text/javascript" src='https://www.google.com/jsapi?autoload={"modules":[{"name":"visualization","version":"1","packages":["corechart","table"]}]}'></script> 

数据:

var data = new google.visualization.DataTable(); 
data.addColumn('string', 'City'); 
data.addColumn('number', 'Number of Crimes'); 
data.addRows([ 
      ['Cardiff', 300], 
      ['London', 900], 
      ['Manchester', 500], 
      ['Dublin', 400], 
      ['Liverpool', 600] 
      ]); 

绘制图形:

var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
chart.draw(data, options); 

这里有缩略图:

<div id="left"> 
    <p>Bar chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
    <p>Another chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
    <p>Another chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
</div> 
<div id="right"> 
    <p>Scatter Chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
    <p>Another chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
    <p>Another chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
</div> 

所以基本上,我怎么才能google.visualization.BarChart(和其他人)到IMG SRC的缩略图?

这甚至有可能吗?

感谢

回答

2

我已经解决了类似的问题,有两种解决方法(即我所知道的),这两者都不是完美的。

第一个解决方案是使用谷歌的image chart api本质上重新创建您的SVG图表。您可以通过图像的src网址传递动态数据。这种方法的主要缺点是(a)你必须通过图表api重新创建每个图表;和(b)Google图表API是officially deprecated。但是,Google已承诺至少在2015年4月之前维护该服务,因此,如果您期望该网站的发展到目前为止是一种有效的方法。另外要提到的是,您可能希望创建相对较大的缩略图,然后缩小它们,以便比例(例如文本大小)与最终SVG版本的相对比例相匹配。

第二个解决方案(我目前使用的)是使用屏幕捕获服务,如URL2PNG。大多数屏幕截图API都不起作用,因为它们在应用JS之前忽略JS或截取屏幕截图,但url2png和其他一些服务能够做到这一点。只需创建一个简单的缓存系统来存储每个图表的屏幕截图(您可能希望通过URL显示每个图表,以便在其他空白模板上显示图表,以便您不必担心屏幕位置或裁剪问题) ,并且只要数据发生变化,就可以清除并重建此缓存(但您需要缓存,因为屏幕捕获服务本质上非常慢)。这种方法的主要缺点是您必须为服务付费(我不知道任何可以准确捕获谷歌图表的免费屏幕捕获服务)。

就我个人而言,我很失望Google没有创建一个简单的方式来创建缩略图,因为它看起来像一个很常见的任务,但据我所知,这样的解决方法是必要的。

+0

谢谢,这是一个非常有用的和翔实的答案。 – 2013-02-13 23:27:43

+0

其实,和这个答案一样好。你能否重新翻译它,因为它似乎没有打得好。 – 2013-02-25 16:34:23

+0

你采取了哪种方法,你是如何处理它的? – 2013-02-25 17:09:50