Skip to content Skip to sidebar Skip to footer

Google Visualization-invalid Row Type For Row 0

I have to visualize url json data on a pie chart with google visualization. My code seems to be as it has to be for the purpose, but I am getting an 'Invalid row type for row 0' er

Solution 1:

  1. The JSON does not represent data which can be transformed to a 2-dimensional arraygoogle.visualization.DataTable can simply not interpret this. Each item contains complex subitems like location and outcome_status.

  2. You must include columns - arrayToDataTable is very specific about that.

  3. The most important : How on earth do you imagine those data to be presented as a piechart? There is only one specfic number-field at first level, location_subtype. You cannot produce a piechart based on various strings.

But, you can sanitize the data and show them as a google.visualization.Table :

First create a DataTable with some columns :

var dataTable = new google.visualization.DataTable();
dataTable.addColumn('string','category');
dataTable.addColumn('string','context');
dataTable.addColumn('string','id');
dataTable.addColumn('number','location_subtype');
dataTable.addColumn('string','location_type');
dataTable.addColumn('string','month');
dataTable.addColumn('string','persistent_id');

convert your jsonData to JSON

var json=JSON.parse(jsonData);

sanitize and insert the data. Here I just delete the location and outcome_status subitems, but you may want to extract values from those subitems instead and insert them as columns in the dataTable :

for (var i=0;i<json.length;i++) {
   delete json[i].location;
   delete json[i].outcome_status;
   var row = [];        
   for (var item in json[i]) {
     row.push(json[i][item]);
   }        
   dataTable.addRow(row);
}

finally create the Table() :

var chart = new google.visualization.Table(document.getElementById('chart_div'));
chart.draw(dataTable, {width: 1000, height: 300});

the result will look like this :

enter image description here


update

var dataTable = new google.visualization.DataTable();
dataTable.addColumn('string','category');
dataTable.addColumn('string','context');
dataTable.addColumn('number','id');
dataTable.addColumn('string','location_subtype');
dataTable.addColumn('string','location_type');
dataTable.addColumn('string','month');
dataTable.addColumn('string','persistent_id');
dataTable.addColumn('string','street name');
dataTable.addColumn('string','outcome status');

json=JSON.parse(jsonData);

for (var i=0;i<json.length;i++) {
    var row = [];       
    row.push(json[i].category);
    row.push(json[i].context);
    row.push(json[i].id);
    row.push(json[i].location_subtype);
    row.push(json[i].location_type);
    row.push(json[i].month);
    row.push(json[i].persistent_id);
    row.push(json[i].location.street.name);
    row.push(json[i].outcome_status ? json[i].outcome_status.category : "null");
    dataTable.addRow(row);
}

Post a Comment for "Google Visualization-invalid Row Type For Row 0"