最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Type mismatch for number in Google Chart API - Stack Overflow

programmeradmin3浏览0评论

I have an array and the second column with values like this 2050.878456 and inside my javascript function to create a Area Chart I made the following

function drawVisualization() {
    var data = null;
    data = new google.visualization.DataTable();
    data.addColumn('string', 'Date');
    data.addColumn('number', 'Value');
    data.addRows(myArrayCreated);
    // Create and draw the visualization.
    var ac = new google.visualization.AreaChart(document
            .getElementById('visualization_chart'));
    ac.draw(data, {
        title : 'Results',
        isStacked : true,
        width : 700,
        height : 400,
        vAxis : {title : "kW"},
        hAxis : {title : "Day"}
    });

}

however I get this error Type mismatch. Value 2050.878456 does not match type number in column index 1 however it cannot be a string type as well, why do I get this error and how to fix it?

I have an array and the second column with values like this 2050.878456 and inside my javascript function to create a Area Chart I made the following

function drawVisualization() {
    var data = null;
    data = new google.visualization.DataTable();
    data.addColumn('string', 'Date');
    data.addColumn('number', 'Value');
    data.addRows(myArrayCreated);
    // Create and draw the visualization.
    var ac = new google.visualization.AreaChart(document
            .getElementById('visualization_chart'));
    ac.draw(data, {
        title : 'Results',
        isStacked : true,
        width : 700,
        height : 400,
        vAxis : {title : "kW"},
        hAxis : {title : "Day"}
    });

}

however I get this error Type mismatch. Value 2050.878456 does not match type number in column index 1 however it cannot be a string type as well, why do I get this error and how to fix it?

Share Improve this question asked Jun 23, 2014 at 12:17 user3362533user3362533 1071 gold badge2 silver badges6 bronze badges 7
  • Are you sure that you are getting Value as a number? Did you check if it is a string by any chance? This is one of the most common errors. – Fr0zenFyr Commented Jun 23, 2014 at 13:18
  • I changed for string as you said like this data.addColumn('string', 'Value'); for (i = 0; i < myArrayCreated.length; i++){ data.addRow(myArrayCreated[i][0] , parseFloat(myArrayCreated[i][1]).toFixed(6)); } however get this error If argument is given to addRow, it must be an array, or null – user3362533 Commented Jun 23, 2014 at 13:20
  • Do this instead: for (var i=0;i<myArrayCreated.length;i++){ myVal = parseFloat($.trim(myArrayCreated[i][0])); data.addRow([i, {v: myVal, f: myval.toFixed(6)}]); } – Fr0zenFyr Commented Jun 23, 2014 at 13:28
  • it should be myVal = parseFloat($.trim(myArrayCreated[i][1]));... my bad.. – Fr0zenFyr Commented Jun 23, 2014 at 13:36
  • thank you very much!! it really helped me! since I'm new with javascript I don't know where should I put my myArrayCreated[i][0] should it be data.addRow([ myArrayCreated[i][0], { v : myVal, f : myVal.toFixed(6) } ]); if yes I get the same error.. thank you! – user3362533 Commented Jun 23, 2014 at 13:54
 |  Show 2 more comments

2 Answers 2

Reset to default 11

Try passing the Value as string and then later do a parseFloat. Something like this:

data.addColumn('string', 'Value');

for (var i=0;i<myArrayCreated.length;i++){
    myVal = parseFloat($.trim(myArrayCreated[i][1])); 
    data.addRow([i, {v: myVal, f: myval.toFixed(6)}]); 
}

I spotted the same issue.

not working:

data.addRow([v, obd[v].engine_rpm]);

working:

data.addRow([v, Number(obd[v].engine_rpm)]);

发布评论

评论列表(0)

  1. 暂无评论