常见问题解答

开始使用

什么是 Google 可视化 API?
借助 Google 可视化 API,您可以创建基于结构化数据的图表和报告应用,并将其直接集成到您的网站中。
可视化 API 有哪些用途?
借助 Google 可视化 API,您可以访问在浏览器中创建的数据,或通过简单的表格格式从受支持的数据源检索到的结构化数据。您还可以将自己的数据源实现为 Visual API API 数据源,并启用任何符合可视化要求的可视化和/或应用来访问数据。该格式可供报告、分析或图表应用使用。因此,您可以直观呈现数据和/或向应用(例如 Google 电子表格)添加新功能。
在哪里可以找到可视化图表 API 的文档?
您可以在 https://developers.google.com/chart/interactive/docs 上找到开发者指南和所有其他相关文档。
如何创建新的图表?
开始使用的最佳方式是阅读简介快速入门部分。
什么是数据源网址?
数据源网址是可视化图表 API 数据源的唯一网址标识符。数据源网址还可以包含图表查询语言参数。在这种情况下,在提取数据之前,系统会对数据源执行查询(例如排序、分组等)。
在哪里可以找到使用 Visual 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 可视化 API 论坛中发帖提问,以便获得可视化开发者社区的帮助。Google 可视化团队也会参与这个群组来回答问题。

使用 API

Google 图表 API 和 Google 可视化 API 有何不同?

您可以使用 Chart API 向 Google 服务器发送既包含数据又有图表配置选项的格式化网址,从而轻松创建各种类型的图片图表。Chart API 包含一组包含各种选项的封闭图表。Chart API 数据集的大小限制为一个网址(约 2K)。

通过 Performance Monitoring API,您可以在网络上连接图表和数据源并发布它们:

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

问题排查

为什么我的图表未显示?

首先,检查您的 JavaScript 控制台。在 Chrome 浏览器中,您可以通过 Chrome->查看->开发者->JavaScript 控制台或 Chrome->工具->JavaScript 控制台来访问 JavaScript 控制台。所有现代浏览器都有 JavaScript 控制台;您可能需要用“高级”或“开发者工具”等名称查找菜单。

希望控制台能够立即将您引向问题所在。不过,有时很难将控制台消息转换为根本原因。下面是一些常见的误区:

  • 您可能错误地使用了 Google 加载器
    • 只需加载 chart/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 可视化 API 论坛,看看是否有人遇到过类似问题。如果您找不到能解答您的问题的帖子,请在论坛中发布您的问题以及一个可演示该问题的网页链接。如有可能,请添加 jsfiddle

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

    Google 可视化计划政策

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

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

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

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

    成为社区中的一员

    如何与他人共享我的 Chart 申请?
    首先,将您的图表放在图表库中。如有需要,您可以链接回您的网站并提供源代码。 加入我们的论坛以获取社区反馈。
    图表库列出了使用可视化图表 API 的应用。为可视化开发者社区提供共享图表应用的中心位置。要向图表库提交图表申请,请在线申请
    如何推广我的图表数据源?
    在实现群组中发布您的实现。如果我们喜欢,甚至可能会提到。