Столбцы данных для оси # 0 не могут иметь тип строки Ошибка с Javascript - PullRequest
1 голос
/ 07 ноября 2019

Когда я пытаюсь создать свой собственный график с библиотекой Google Maps, он дает мне Data column(s) for axis #0 cannot be of type string error.

Я получаю данные с запросом http с библиотекой Ajax. И я создал массив как;


    0: (2) ["Time", "Value"]
    1: (2) ["Tue Nov 05 2019 00:00:00 GMT+0300 (GMT+03:00)", 49.4638863]
    2: (2) ["Tue Nov 05 2019 01:00:00 GMT+0300 (GMT+03:00)", 73.19763]
    3: (2) ["Tue Nov 05 2019 02:00:00 GMT+0300 (GMT+03:00)", 91.66373]

Когда я проверяю примеры и документы, мой тип массива выглядит как true.


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

    var endpoint = "http://127.0.0.1:8000/api/api"
    var chartData = [["Time", "Value"]];
    console.log(typeof chartData)
    $.ajax({
    method: "GET",
    url: endpoint,
    success: function(data){
    var valueData = data;
    for(i = 0; i< data.length; i++){
        //console.log("Time Data: ", data[i].time)
        chartData.push([String(new Date(data[i].time)), Number(data[i].value)]);
        }
        //console.log("Chart Data: ", chartData);
    },
    error: function(error_data){
        console.log("error")
        console.log(error_data)
        }
    });

    function drawChart() {
        console.log(chartData)
    var data = google.visualization.arrayToDataTable([
        chartData
    ]);

    var options = {
        title: 'Tag Value',
        curveType: 'function',
        legend: { position: 'bottom' }
    };

    var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));

    chart.draw(data, options);
    }

chartData is;


    0: (2) ["Time", "Value"]
    1: (2) ["Tue Nov 05 2019 00:00:00 GMT+0300 (GMT+03:00)", 49.4638863]
    2: (2) ["Tue Nov 05 2019 01:00:00 GMT+0300 (GMT+03:00)", 73.19763]
    3: (2) ["Tue Nov 05 2019 02:00:00 GMT+0300 (GMT+03:00)", 91.66373]
    4: (2) ["Tue Nov 05 2019 03:00:00 GMT+0300 (GMT+03:00)", 98.4258347]

Что я должен сделать, чтобы выдать мой массив на диаграмму Google без этой ошибки.

1 Ответ

1 голос
/ 07 ноября 2019

нужно убрать лишние скобки, здесь ...

var data = google.visualization.arrayToDataTable(chartData);

arrayToDataTable принимает массив массивов, который вы здесь создаете ...

var chartData = [["Time", "Value"]];

добавьте добавление сюда ...

chartData.push([String(new Date(data[i].time)), Number(data[i].value)]);

в настоящее время вы получите ...

[[["Time", "Value"],[...],[...]]]

примечание: учитывая формат ваших данных, нет необходимости приводить типы здесь...

chartData.push([new Date(data[i].time), data[i].value]);
...