简体   繁体   中英

Google Charts interpolateNulls not working

I cannot create a graph with interpolateNull option. Should be correct but cannot draw the lines between missing points. The data is collected from a php-json. here the Example and the data provided by the json. html-javascript page:

    <html>
    <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type="text/javascript">
            google.charts.load('current', {'packages':['line', 'corechart']});
            google.charts.setOnLoadCallback(drawChart);
            function drawChart() {
                    $.ajax({
                            url: 'http://192.168.1.50/fetch_data.php?type=line2',
                            dataType: 'json',
                            success: function (jsonData) {
                                    var chartDiv = document.getElementById('chart_div');
                                    var data = new google.visualization.DataTable(jsonData);
                                    // create formatter
                                    var formatNumber = new google.visualization.NumberFormat({pattern: '#,##0.00'});
                                    // format column 1 - Pressure
                                    formatNumber.format(data, 1);
                                    // format column 2 - Temperature
                                    formatNumber.format(data, 2);
                                    var materialOptions = {
                                            chart: {
                                                    title: 'Average Pressure and Temperatures'
                                            },
                                            vAxis: {
                                                    format: '#,##0.00'
                                            },
                                            width: 1200,
                                            height: 600,
                                            interpolateNulls: true,
                                            series: {
                                                    // Gives each series an axis name that matches the Y-axis below.
                                                    0: {axis: 'Pressure'},
                                                    1: {axis: 'Temperature'}
                                            },
                                            axes: {
                                                    // Adds labels to each axis; they don't have to match the axis names.
                                                    y: {
                                                            Temps: {label: 'Pressure'},
                                                            Daylight: {label: 'Temps (Celsius)'}
                                                    }
                                            }
                                    };

                                    function drawMaterialChart() {
                                            var materialChart = new google.charts.Line(chartDiv);
                                            var classicChart = new google.visualization.LineChart(chartDiv);
                                            materialChart.draw(data, google.charts.Line.convertOptions(materialOptions));
                                    }
                                    drawMaterialChart();
                            },
                            error: function(jqXHR, textStatus, errorThrown) {
                                    console.log(errorThrown + ': ' + textStatus);
                            }
                    });
            }
    </script>
    </head>
            <body>
                    <br><br>
                    <div id="chart_div"></div>
            </body>
    </html>

and php-json data returned from the fetch_data.php page:

{
   "cols":[
      {
         "label":"Date",
         "type":"string"
      },
      {
         "label":"hPa",
         "type":"number"
      },
      {
         "label":"Dallas",
         "type":"number"
      }
   ],
   "rows":[
      {
         "c":[
            {
               "v":"2016-08-27 12:51:00"
            },
            {
               "v":1020.61
            },
            {
               "v":30
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 12:54:00"
            },
            {
               "v":1020.49
            },
            {
               "v":null
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 12:57:00"
            },
            {
               "v":1020.49
            },
            {
               "v":30.4
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:00:00"
            },
            {
               "v":1020.48
            },
            {
               "v":30.7
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:03:00"
            },
            {
               "v":1020.43
            },
            {
               "v":30.6
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:06:00"
            },
            {
               "v":1020.39
            },
            {
               "v":30.5
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:09:00"
            },
            {
               "v":1020.34
            },
            {
               "v":30.9
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:12:00"
            },
            {
               "v":1020.33
            },
            {
               "v":30.5
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:15:00"
            },
            {
               "v":1020.28
            },
            {
               "v":30.8
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:18:00"
            },
            {
               "v":1020.28
            },
            {
               "v":30.8
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:21:00"
            },
            {
               "v":1020.28
            },
            {
               "v":31
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:24:00"
            },
            {
               "v":1020.23
            },
            {
               "v":null
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:27:00"
            },
            {
               "v":1020.24
            },
            {
               "v":30.7
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:30:00"
            },
            {
               "v":1020.2
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:33:00"
            },
            {
               "v":1020.23
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:36:00"
            },
            {
               "v":1020.2
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:39:00"
            },
            {
               "v":1020.14
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:42:00"
            },
            {
               "v":1020.14
            },
            {
               "v":31.1
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:45:00"
            },
            {
               "v":1020.06
            },
            {
               "v":31
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:48:00"
            },
            {
               "v":1020.06
            },
            {
               "v":31.1
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:51:00"
            },
            {
               "v":1020.03
            },
            {
               "v":31.1
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:54:00"
            },
            {
               "v":1019.98
            },
            {
               "v":31.1
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 13:57:00"
            },
            {
               "v":1019.97
            },
            {
               "v":31.1
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:00:00"
            },
            {
               "v":1019.9
            },
            {
               "v":31.1
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:03:00"
            },
            {
               "v":1019.89
            },
            {
               "v":31.1
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:06:00"
            },
            {
               "v":1019.75
            },
            {
               "v":31.2
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:09:00"
            },
            {
               "v":1019.8
            },
            {
               "v":31.2
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:12:00"
            },
            {
               "v":1019.72
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:15:00"
            },
            {
               "v":1019.64
            },
            {
               "v":31.1
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:18:00"
            },
            {
               "v":1019.6
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:21:00"
            },
            {
               "v":1019.6
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:24:00"
            },
            {
               "v":1019.55
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:27:00"
            },
            {
               "v":1019.55
            },
            {
               "v":31.4
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:30:00"
            },
            {
               "v":1019.49
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:33:00"
            },
            {
               "v":1019.46
            },
            {
               "v":31.4
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:36:00"
            },
            {
               "v":1019.44
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:39:00"
            },
            {
               "v":1019.36
            },
            {
               "v":31.1
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:42:00"
            },
            {
               "v":1019.41
            },
            {
               "v":31.1
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:45:00"
            },
            {
               "v":1019.33
            },
            {
               "v":null
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:48:00"
            },
            {
               "v":1019.35
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:51:00"
            },
            {
               "v":1019.34
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:54:00"
            },
            {
               "v":1019.29
            },
            {
               "v":31.4
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 14:57:00"
            },
            {
               "v":1019.22
            },
            {
               "v":31.3
            }
         ]
      },
      {
         "c":[
            {
               "v":"2016-08-27 15:00:00"
            },
            {
               "v":1019.24
            },
            {
               "v":null
            }
         ]
      }
   ]
}

Seems all correct but the data in example on 2016-08-27 12:54:00 leaves me a hole in the graph.

Any suggestion?

interpolateNulls simply doesn't work on a Material chart
google.charts.Line
(even with google.charts.Line.convertOptions )

need to use Core chart
google.visualization.LineChart

there is an option for theme: 'material' you can use on Core charts

see following working snippet...

 google.charts.load('current', { callback: function() { var dataTable = new google.visualization.DataTable({ "cols": [{ "label": "Date", "type": "string" }, { "label": "hPa", "type": "number" }, { "label": "Dallas", "type": "number" }], "rows": [{ "c": [{ "v": "2016-08-27 12:51:00" }, { "v": 1020.61 }, { "v": 30 }] }, { "c": [{ "v": "2016-08-27 12:54:00" }, { "v": 1020.49 }, { "v": null }] }, { "c": [{ "v": "2016-08-27 12:57:00" }, { "v": 1020.49 }, { "v": 30.4 }] }, { "c": [{ "v": "2016-08-27 13:00:00" }, { "v": 1020.48 }, { "v": 30.7 }] }, { "c": [{ "v": "2016-08-27 13:03:00" }, { "v": 1020.43 }, { "v": 30.6 }] }, { "c": [{ "v": "2016-08-27 13:06:00" }, { "v": 1020.39 }, { "v": 30.5 }] }, { "c": [{ "v": "2016-08-27 13:09:00" }, { "v": 1020.34 }, { "v": 30.9 }] }, { "c": [{ "v": "2016-08-27 13:12:00" }, { "v": 1020.33 }, { "v": 30.5 }] }, { "c": [{ "v": "2016-08-27 13:15:00" }, { "v": 1020.28 }, { "v": 30.8 }] }, { "c": [{ "v": "2016-08-27 13:18:00" }, { "v": 1020.28 }, { "v": 30.8 }] }, { "c": [{ "v": "2016-08-27 13:21:00" }, { "v": 1020.28 }, { "v": 31 }] }, { "c": [{ "v": "2016-08-27 13:24:00" }, { "v": 1020.23 }, { "v": null }] }, { "c": [{ "v": "2016-08-27 13:27:00" }, { "v": 1020.24 }, { "v": 30.7 }] }, { "c": [{ "v": "2016-08-27 13:30:00" }, { "v": 1020.2 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 13:33:00" }, { "v": 1020.23 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 13:36:00" }, { "v": 1020.2 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 13:39:00" }, { "v": 1020.14 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 13:42:00" }, { "v": 1020.14 }, { "v": 31.1 }] }, { "c": [{ "v": "2016-08-27 13:45:00" }, { "v": 1020.06 }, { "v": 31 }] }, { "c": [{ "v": "2016-08-27 13:48:00" }, { "v": 1020.06 }, { "v": 31.1 }] }, { "c": [{ "v": "2016-08-27 13:51:00" }, { "v": 1020.03 }, { "v": 31.1 }] }, { "c": [{ "v": "2016-08-27 13:54:00" }, { "v": 1019.98 }, { "v": 31.1 }] }, { "c": [{ "v": "2016-08-27 13:57:00" }, { "v": 1019.97 }, { "v": 31.1 }] }, { "c": [{ "v": "2016-08-27 14:00:00" }, { "v": 1019.9 }, { "v": 31.1 }] }, { "c": [{ "v": "2016-08-27 14:03:00" }, { "v": 1019.89 }, { "v": 31.1 }] }, { "c": [{ "v": "2016-08-27 14:06:00" }, { "v": 1019.75 }, { "v": 31.2 }] }, { "c": [{ "v": "2016-08-27 14:09:00" }, { "v": 1019.8 }, { "v": 31.2 }] }, { "c": [{ "v": "2016-08-27 14:12:00" }, { "v": 1019.72 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 14:15:00" }, { "v": 1019.64 }, { "v": 31.1 }] }, { "c": [{ "v": "2016-08-27 14:18:00" }, { "v": 1019.6 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 14:21:00" }, { "v": 1019.6 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 14:24:00" }, { "v": 1019.55 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 14:27:00" }, { "v": 1019.55 }, { "v": 31.4 }] }, { "c": [{ "v": "2016-08-27 14:30:00" }, { "v": 1019.49 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 14:33:00" }, { "v": 1019.46 }, { "v": 31.4 }] }, { "c": [{ "v": "2016-08-27 14:36:00" }, { "v": 1019.44 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 14:39:00" }, { "v": 1019.36 }, { "v": 31.1 }] }, { "c": [{ "v": "2016-08-27 14:42:00" }, { "v": 1019.41 }, { "v": 31.1 }] }, { "c": [{ "v": "2016-08-27 14:45:00" }, { "v": 1019.33 }, { "v": null }] }, { "c": [{ "v": "2016-08-27 14:48:00" }, { "v": 1019.35 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 14:51:00" }, { "v": 1019.34 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 14:54:00" }, { "v": 1019.29 }, { "v": 31.4 }] }, { "c": [{ "v": "2016-08-27 14:57:00" }, { "v": 1019.22 }, { "v": 31.3 }] }, { "c": [{ "v": "2016-08-27 15:00:00" }, { "v": 1019.24 }, { "v": null }] }] }); var formatPattern = '#,##0.0'; var formatNumber = new google.visualization.NumberFormat({ pattern: formatPattern }); formatNumber.format(dataTable, 1); formatNumber.format(dataTable, 2); var options = { legend: { position: 'none' }, interpolateNulls: true, vAxis: { format: formatPattern } }; var chart = new google.charts.Line(document.getElementById('linechart_material')); chart.draw(dataTable, google.charts.Line.convertOptions(options)); options.theme = 'material'; var chart = new google.visualization.LineChart(document.getElementById('linechart_core')); chart.draw(dataTable, options); }, packages: ['corechart', 'line'] }); 
 div { padding-bottom: 24px; } 
 <script src="https://www.gstatic.com/charts/loader.js"></script> <div>Core Chart</div> <div id="linechart_core"></div> <div>Material Chart</div> <div id="linechart_material"></div> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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