常见问题解答

开始提交

什么是 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.loadgoogle.visualization 代码以供离线使用。
我可以在本地或内网上下载并托管图表代码吗?
抱歉,我们的服务条款不允许您下载、保存或托管 google.charts.loadgoogle.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(例如,chart1chart2)。
  • 查找拼写错误。切记 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 的应用。它为可视化开发者社区提供了一个共享图表应用程序的中心位置。如需向数据库提交图表应用,请在线申请
    如何宣传我的图表数据源?
    将您的实现发布到可视化图表组。如果我们喜欢它,我们甚至可能会亲自提及它。