简体   繁体   English

在Google图表上处理空数据

[英]Handling null data on Google Charts

I'm trying to create compound chart with a given data, that is, [date, value1, value2], however I can not handle such inputs: 我正在尝试使用给定的数据(即[日期,值1,值2])创建复合图表,但是我无法处理此类输入:

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

that is, when there are a set of data with a particular value all consist of nulls, I can not draw it on graph. 也就是说,当存在一组具有特定值的数据都包含空值时,我无法在图形上绘制它。 Such inputs are fine: 这样的输入很好:

// [["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]]

And here is my javascript code drawing the graph. 这是我的JavaScript代码绘制图表。 Data is coming from a Ruby model. 数据来自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);

}
});

How can I handle these half empty values? 如何处理这些半空值?

I solved this creating my data table like this: 我解决了以下创建数据表的问题:

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}

    }
};

I would recommend the interpolateNulls option. 我建议使用interpolateNulls选项。 See the ComboChart Configuration Options documentation for details. 有关详细信息,请参见ComboChart配置选项文档。

var options = {
    interpolateNulls: true
};

This option just tells the chart to guess what your values are if there's a null, rather than leave a gap. 该选项只是告诉图表,如果为空,则猜测您的值是什么,而不是留一个空白。 Works for most cases, anyway. 无论如何,在大多数情况下都有效。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM