2016-04-24 59 views
0

我试图创建复合图表与给定的数据,即,[日期,值1,值],但我不能处理这样的输入:处理在谷歌图表空数据

// [["Day","Dose","INR"],["17/04",1.5,null]] 
// [["Day","Dose","INR"]] 
// [["Day","Dose","INR"],["17/04",1.5,null],["18/04",2.5,null]] 

即,当有一组具有特定值的数据全部由空值组成时,我无法在图上绘制它。这样的输入是好的:

// [["Day","Dose","INR"],["17/04",1.5,null],["18/04",2.5,0.9]] 
// [["Day","Dose","INR"],["17/04",1.5,null],["18/04",2.5,0.9],["19/04",null,1.4]] 

这里是我的JavaScript代码绘制图。数据来自Ruby模型。

$(function() { 

    google.charts.load('current', {'packages':['corechart']}); 
    google.charts.setOnLoadCallback(drawVisualization); 

    function drawVisualization() { 
     // Some raw data (not necessarily accurate) 
     var data = google.visualization.arrayToDataTable(<%= DrugInr.generate_array(@patient) %>); 

     var options = { 
      vAxes: { 1: {title: 'Dose', format: '#.#', maxValue: 20}, 
      0: {title: 'INR',format: '#.#', minValue: -1, baselineColor:"#CCCCCC"} }, 
      hAxis: {title: 'Day'}, 
      seriesType: 'bars', 
      bar: { 
       groupWidth: 2 
      }, 
      series: { 
       0:{ type: "bars", targetAxisIndex: 1 }, 
       1:{ type: 'line', targetAxisIndex: 0} 

      } 
    }; 



var chart = new google.visualization.ComboChart(document.getElementById('chart_div')); 
chart.draw(data, options); 

} 
}); 

如何处理这些半空值?

回答

1

我解决了这个创造我的数据表是这样的:

var data = new google.visualization.DataTable(); 
data.addColumn('string', 'Date'); 
data.addColumn('number', 'INR'); 
data.addColumn('number', 'Dosage'); 
data.addRows(<%= DrugInr.generate_array(@patient) %>); 

var options = { 
    vAxes: { 1: {title: 'Dose', format: '#.#', maxValue: 20}, 
    0: {title: 'INR',format: '#.#', minValue: -1, baselineColor:"#CCCCCC"} }, 
    hAxis: {title: 'Day'}, 
    seriesType: 'bars', 
    bar: { 
     groupWidth: 5 
    }, 
    series: { 
     0:{ type: "bars", targetAxisIndex: 1 }, 
     1:{ type: 'line', targetAxisIndex: 0} 

    } 
}; 
1

我会建议interpolateNulls选项。有关详细信息,请参阅ComboChart Configuration Options文档。

var options = { 
    interpolateNulls: true 
}; 

这个选项只是告诉图表猜测你的值是否为零,而不是留下空隙。无论如何都适用于大多数情况。