将数据发送到谷歌图表功能

时间:2016-11-18 15:20:18

标签: javascript charts google-visualization

我有3张谷歌图表,除了图表的数据和ID之外,它们是相同的。 目前我将这些图表称为这样。

google.charts.setOnLoadCallback(drawBasic);
google.charts.setOnLoadCallback(drawBasic2);
google.charts.setOnLoadCallback(drawBasic3);

因为图表几乎相同,所以我想要一个函数而不是3个,因为我喜欢使用更少的代码,但是当我这样做时它不起作用。  google.charts.setOnLoadCallback(drawBasic(MYDATA,本身份识别码));

如果我可以发送这样的数据,那么我就不需要3个函数,我只需要一个drawBasic函数,每次调用时都会有不同的数据。 我不会粘贴所有3个函数,我只是粘贴一个函数来显示我的函数是如何布局的。

function drawBasic() {
    var data = new google.visualization.DataTable();
    data.addColumn('date', 'Month');
    data.addColumn('number', 'Sales');

    data.addRows([
        [new Date(2016, 4), 0],[new Date(2016, 5), 0],[new Date(2016, 6), 0],[new Date(2016, 7), 0],[new Date(2016, 8), 0],[new Date(2016, 9), 0]
    ]);

    var options = {
        title: 'Total Sales Last Six Months',
        hAxis: {
            title: 'Sales'
        },
        vAxis: {
            title: 'Month'
        },
            backgroundColor: { fill:'transparent' },
            legend: {position: 'none'},
            'animation':{duration:1000,easing:'out'}
    };
    var chart = new google.visualization.BarChart(document.getElementById('total_sales_chart'));

    chart.draw(data, options);

    setTimeout(function(){
        data.setValue(0,1,14690);
        data.setValue(1,1,2785);
        data.setValue(2,1,23345);
        data.setValue(3,1,10345);
        data.setValue(4,1,12456);
        data.setValue(5,1,19642);
        chart.draw(data, options);
    },1000);    
}

因此我可以将数据发送到该功能。我是谷歌排行榜的新手,但在可能的情况下,当我只能使用一个功能时,我不喜欢使用3种功能。

2 个答案:

答案 0 :(得分:1)

setOnLoadCallback意味着每次加载一次

但是,您可以将callback添加到load语句

然后从那里调用绘图函数......

google.charts.load('current', {
  callback: function () {
    drawBasic(mydata1, myid1);
    drawBasic(mydata2, myid2);

    function drawBasic(data, id) {
      ...
    }
  },
  packages: ['corechart']
});

答案 1 :(得分:0)

做某事:

var data=[[1,2],[3,4]];
google.charts.setOnLoadCallback(function(){
for(i=0;i<data.length;i++){
drawBasic(data[i]);
}
});

这个小函数调用drawBasic,其中一个数组元素作为参数列表。 所以你的drawBasic函数将被调用如下:

drawBasic([1,2]);
drawBasic([3,4]);