【问题标题】:Google Charts - animation transition exampleGoogle Charts - 动画过渡示例
【发布时间】:2012-04-22 14:04:37
【问题描述】:

看看我下面的 JS,我的 google 图表的 drawChart 函数。这按我的预期工作。但是,因为 var chart ... 在 drawChart 函数中,所以动画不起作用 - 相反,谷歌认为它每次都在创建一个全新的图表,并且只是刷新图表。

我想在他们的示例中执行类似操作,其中数据根据我的设置移动(1000 毫秒,默认缓动:线性)。示例在这里:https://developers.google.com/chart/interactive/docs/animation

如果我从drawChart 函数中取出var chart ...,我会收到“图表未定义”错误。感谢经常使用谷歌图表的任何人的帮助。感谢您的帮助。

var chart = "notSet";
google.load('visualization', '1.0', {'packages':['corechart']});
google.setOnLoadCallback(setGoogleData);
google.setOnLoadCallback(drawChart);
newValue = 0;
var data = [];
function setGoogleData(){
  data[0] = new google.visualization.DataTable(JSON_DATA_LOCATED_HERE);
  data[1] = new google.visualization.DataTable(JSON_DATA_LOCATED_HERE);
  var chart = new google.visualization.LineChart(document.getElementById('stopByTripChart'));
}
function drawChart() {
  if(chart == "notSet"){
    var chart = new google.visualization.LineChart(document.getElementById('stopByTripChart'));
  }
  var options = {"title":"Average Load Summary","titlePosition":"in","width":1100,"height":700,"hAxis.slantedTextAngle":90,"hAxis.position":"out","pointSize":5,"animation.duration":1000,"animation.easing":"linear","hAxis.showTextEvery":1,"hAxis.title":"Stops"};
  chart.draw(data[newValue], options);
}
function changeChart(){
  newValue = document.getElementById("chartNumber").value;
  drawChart();
}

【问题讨论】:

    标签: javascript google-visualization


    【解决方案1】:

    我自己从未尝试过 Google 图表,但我认为这样的代码会起作用:

    var chart = null;
    function drawChart() {
      if(chart === null){
         chart = new google.visualization.LineChart(document.getElementById('stopByTripChart'));
      }
      var options = {"title":"Average Load Summary",
                     "titlePosition":"in",
                     "width":1100,
                     "height":700,
                     "hAxis" :{"slantedTextAngle":90,
                               "position":"out",
                               "showTextEvery":1,
                               "title":"Stops"},
                     "pointSize":5,
                     "animation":{"duration":1000,
                                  "easing": 'out'};
      chart.draw(data[newValue], options);
    }
    function changeChart(){
      newValue = document.getElementById("chartNumber").value;
      drawChart();
    }
    

    否则,未定义图表的错误可能来自您可能在加载 google 库之前放置了代码。因此,chart 在 google 对象存在之前就被调用了(但很难用 sn-p 来判断)。

    【讨论】:

    • 好主意。我在对象完全加载后通过回调调用谷歌图表对象,所以这不应该是问题。我会试试你的 if 语句。谢谢。
    • 不幸的是,这里没有运气。我将更新我的帖子以显示完整的代码......我尝试使用字符串和 null,但两种情况都不起作用。上面问题中的更新代码显示了一个字符串“notSet”。
    • 那我去看看:)
    • 我不知道这是否只是来自复制/过去和 SO 格式的错误,但您必须删除“图表”内部函数前面的“var”。否则,“图表”变量只是一个本地变量。
    • 你是对的,这是我的复制/粘贴错误……哈。好的,这可以正常工作,但是转换似乎仍然不起作用。我不知道为什么不。它只是重新加载图表,相当突然。
    猜你喜欢
    • 1970-01-01
    • 2014-04-26
    • 2015-09-15
    • 2016-02-26
    • 2016-11-01
    • 1970-01-01
    • 2016-03-16
    • 2018-04-20
    • 1970-01-01
    相关资源
    最近更新 更多