常见问题解答

开始提交

什么是 Google 可视化 API?
借助 Google Visualization API,您可以针对结构化数据创建图表和报告应用,并协助将这些应用直接集成到您的网站中。
我可以使用可视化 API 执行哪些操作?
借助 Google Visualization API,您可以访问在浏览器中本地创建的结构化数据,或者以简单的表格格式从受支持的数据源检索到的结构化数据。您还可以将自己的数据源实现为可视化 API 数据源,并启用任何符合可视化条件的可视化和/或应用访问您的数据。该格式适合报告、分析或图表应用使用。因此,您可以直观呈现数据和/或为应用添加新功能,例如 Google 电子表格。
在哪里可以找到可视化 API 的文档?
您可以在 https://developers.google.com/chart/interactive/docs 上找到开发者指南和所有其他相关文档。
如何创建新图表?
最好的入门方法是阅读简介和快速入门部分。
什么是数据源网址?
数据源网址是可视化 API 数据源的唯一网址标识符。数据源网址可能还包含图表查询语言参数。在这种情况下,系统会在提取数据之前对数据源执行查询(例如排序、分组等)。
在哪里可以找到使用可视化 API 的图表应用程序的示例代码?
您可以在可视化 API 示例代码文档中找到示例代码。
Flash 应用程序能否访问可视化 API?
当然可以。 但是可视化 API 使用的是 JavaScript API,但有一些库使 Flash 应用能够连接 JavaScript 代码。您可以在 http://code.google.com/p/swfobject 中找到可能对您有用的此类库。 有关影响 Flash 的一些开发问题,请参见下文。
如何实现数据源?
请阅读使用和创建图表的部分,了解图表的工作原理,然后阅读实现数据源,了解如何创建数据源。如果使用 Java,您也可以利用 Google 图表数据源 Java 库快速上手。
我能否从 Java 应用访问图表?
可以。借助适用于 Google Web Toolkit (GWT) 的 Google 可视化库,您可以通过使用 GWT 编译器编译的 Java 代码访问与 API 兼容的可视化效果,并使用 GWT 编译器在 Java 中编写与可视化 API 兼容的可视化效果。候选版本库还支持可视化 API 事件模型。
我能否从使用 Google Web Toolkit (GWT) 编译器编写的应用中访问图表?
可以。借助适用于 Google Web Toolkit (GWT) 的 Google 可视化库,您可以通过使用 GWT 编译器编译的 Java 代码访问与 API 兼容的可视化效果,并使用 GWT 编译器在 Java 中编写与可视化 API 兼容的可视化效果。候选版本库还支持可视化 API 事件模型。
我还有其他问题/疑问,应该与谁联系以获取更多信息?
请将您的问题发布到 Google Visualization API 论坛中,以获取可视化开发者社区的帮助。Google 可视化团队也会参与该小组解答问题。

使用 API

Google 图表 API 和 Google 可视化 API 之间有什么区别?

Chart API 提供了一种创建各种图片图表的简单方法,只需将包含数据和图表配置选项的格式化网址发送到 Google 服务器,即可完成上述操作。Chart API 包含一组封闭的图表,其中包含各种选项。Chart API 数据集不得超过网址的大小(约为 2K)。

可视化 API 提供了一种通过网络连接图表和数据源并发布它们的方法:

  • 可视化 API 提供了一个用于访问图表的 JavaScript API。
  • 它的图表库包含 Google 创建的图表,同时也可供任何第三方创建他们自己的与可视化 API 兼容的可视化。
  • 可视化 API 图表可以是浏览器能够呈现的任何内容。这包括图片、JavaScript、矢量图形、Flash 等。
  • 大量的 Chart API 图表都可以通过可视化 API 进行访问,但它们的某些配置选项可能无法使用。
  • 该 API 还提供了一个有备案的传输协议,可供任何人向任何 API 可视化工具公开其数据源。
  • 该 API 有一个定义的事件模型,允许图表抛出和接收事件,从而与其托管网页和/或网页上的其他图表进行通信。
可以使用可视化 API 访问哪些数据源?
使用 Visualization API,您可以通过创建该 API 的标准 DataTable 格式,从浏览器本地访问数据,或者访问任何支持该 API 的数据源。知名应用已经支持该 API,包括 Google 电子表格和其 Force.com 开发者平台上的 Salesforce.com。您也可以将自己的数据作为图表数据源来实现。
我的应用要求接收的数据采用特定格式。如何处理异常?
您可以使用 google.visualization.DataTable 类的 getNumberOfColumns() 和 getColumnType() 方法测试获取的数据是否与预期相符,并在出现不匹配时发出错误消息。
在我的网站中嵌入图表是否安全?
直接在您的网站上运行第三方代码会带来固有风险。 Google 对应用性能、质量、安全性或内容不作任何承诺或保证。 不符合 Google Visualization API 服务条款的图表应用可能会从模板库中移除。
我可以离线使用图表吗?
用户的计算机必须能够访问 https://www.gstatic.com/charts/loader.js,才能使用 Google 图表的互动功能。 这是因为,在您使用页面所需的可视化库之前,系统会动态加载这些库。用于加载相应库的代码是所含脚本的一部分,会在您调用 google.charts.load() 方法时调用。 我们的服务条款不允许您下载 google.charts.load 或 google.visualization 代码以供离线使用。
我可以在本地或内网上下载并托管图表代码吗?
抱歉,我们的服务条款不允许您下载、保存或托管 google.charts.load 或 google.visualization 代码。 但是,如果您不需要 Google 图表的交互性,可以对图表进行截图,然后根据需要使用它们。

问题排查

为什么我的图表没有显示?

首先,检查您的 JavaScript 控制台。在 Chrome 中,您可以通过以下方式访问 JavaScript 控制台:Chrome -> 查看 -> 开发者 -> JavaScript 控制台,或 Chrome -> 工具 -> JavaScript 控制台。所有现代浏览器都有 JavaScript 控制台;您可能需要在包含“高级”或“开发者工具”等名称的菜单上四处移动,查找它们。

希望控制台能立即帮助您解决问题。不过,有时很难将控制台消息转化为根本原因。以下是一些常见的误区:

  • 您可能未正确使用 Google 加载器。
    • 仅加载 Chars/loader.js 一次。 无论网页上有多少图表,您都应该有且仅有一个如下所示的调用:
      <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> // Do this ONCE.
      。该调用可以在网页的标头或正文中,具体取决于您希望加载的时间。
    • 理想情况下,只需调用 google.charts.load 一次,其中包含网页所需的所有软件包。
      <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
      <script>
        google.charts.load("current", {packages: ["corechart", "timeline"]});
      
        google.charts.setOnLoadCallback(drawBarChart1);
        function drawBarChart1() {
          ...
          var barChart1 = new google.visualization.BarChart(document.getElementById('chart1'));
          ...
        }
      
        google.charts.setOnLoadCallback(drawBarChart2);
        function drawBarChart2() {
          ...
          var barChart2 = new google.visualization.BarChart(document.getElementById('chart2'));
          ...
        }
      
        google.charts.setOnLoadCallback(drawTimeline);
        function drawTimeline() {
          ...
          var timeline = new google.visualization.Timeline(document.getElementById('chart3'));
          ...
        }
      
      </script>
      <div id="chart1"></div>
      ...
      <div id="chart2"></div>
      ...
      <div id="chart3"></div>
  • 每个图表都应具有唯一的元素 ID(例如,chart1、chart2)。
  • 查找拼写错误。切记 JavaScript 是一种区分大小写的语言。

如果问题依然存在,请搜索 Google Visualization API 论坛,看看是否有人遇到过类似问题。如果您找不到可以解答您问题的帖子,请将您的问题发布到群组,并附上演示问题的网页的链接。如果可能,请包含 jsfiddle。

为什么我的月份和天数是相差一日的?
Google 图表使用的 JavaScript 使用从零开始编制索引。一个月的第一天是 0,月份的范围从 0(1 月)到 11(12 月)。如果您的代码假定索引编号为 1,请将数据减 1,然后再将数据放入 JavaScript 日期对象中。
为什么我的图表在某些浏览器(而非全部浏览器)中都能正常工作?
建议您访问 caniuse.com 查看关于浏览器不兼容性的大量信息。使用 Google 图表时,Internet Explorer 8 及更低版本有时会出现问题,原因有两个:
  • IE8 不支持 SVG,因此图表会切换到 VML,而 VML 的限制较为有限。
  • IE8 的 JavaScript 不允许在列表中以逗号结尾。
  • 为什么基于 Flash 的图表在测试时不显示?
    由于 Flash 安全设置的限制,当从浏览器的文件位置(如 file:///c:/webhost/myhost/myviz.html)而不是网络服务器网址(如 http://www.myhost.com/myviz.html)访问时,基于 Flash 的图表可能无法正常运行。这通常只是测试问题;当您从 http:// 地址访问图表时,不会出现此问题。您可以按照 Macromedia 网站上的说明来解决此问题。一般来说,我们建议尽可能避免开发 Flash。

    Google 可视化计划政策

    什么是 Google 可视化计划政策?
    根据服务条款的规定,我们可能会拒绝包含和显示违反我们计划政策的内容,具体做法是显示或链接到以下内容:
    • 非法内容。
    • 侵犯个人隐私。
    • 色情或淫秽内容。
    • 干扰或危害用户的计算机或托管网页的功能的内容(如恶意代码)。
    • 宣扬仇恨或宣扬暴力。
    • 侵犯版权。有关详情,请参阅我们的数字千年版权法案 (DMCA) 政策。
    • 侵犯商标权。
    • 冒充第三方。

    如果开发者会创建用于收集数据的图表,则同意维护并链接到符合法律规范的隐私权政策。此外,我们要求开发者确保其图表是安全的,并且只要应用位于图表目录中,他们就可以对其进行维护。

    这些政策可能会不时修订,恕不另行通知。

    Google 可视化 API 是否可以用于商业用途?
    可以。如需查看细则,请参阅 Google Visualization API 服务条款。
    我可以使用 Google Visualization API 创建客户端软件吗?
    目前,我们不允许开发者使用 Visualization API 来创建客户端软件。您只能通过提供的接口使用 Visualization API。如需查看细则,请参阅 Google Visualization API 服务条款。
    Google 是否会记录我所有的图表数据?
    HTTP 请求中包含的图表数据会在临时日志中保存最多两周,用于内部测试和调试。当然,您应该了解,如果您的图表出现在公共网页上的图片标记中,则该图表可能会被抓取。
    违反计划政策。
    违反这些计划政策可能会导致您的图表被停用或移除、被列入禁止上传后续图表的黑名单、您的 Google 账号被终止和/或删除您的所有图表。

    在社区中保持活跃

    如何与他人共享图表应用程序?
    首先,将您的图表放置在图表库中。 您可以根据需要提供指向您网站的链接,并提供您的源代码。 加入我们的讨论小组以获取社区的反馈。
    图表库列出了使用可视化 API 的应用。它为可视化开发者社区提供了一个共享图表应用程序的中心位置。如需向数据库提交图表应用,请在线申请。
    如何宣传我的图表数据源?
    将您的实现发布到可视化图表组。如果我们喜欢它,我们甚至可能会亲自提及它。