I am having an issue with the Google Visualization API in that some of the data in the chart is not showing. The chart is fairly simple, it has 4 columns and two rows.
http://savedbythegoog.appspot.com/?id=ae0853b788af3292b5547a5b7f1224aed76abfff
function drawVisualization() {
// Create and populate the data table.
var data_table = new google.visualization.DataTable();
data_table.addColumn({"type": "date","label": "Date"});
data_table.addColumn({"type": "number","label": "A"});
data_table.addColumn({"type": "number","label": "B"});
data_table.addColumn({"type": "number","label": "C"});
data_table.addRow([{v: new Date(2013, 5, 26)}, {v: 1}, {v: 0}, {v: 0}]);
data_table.addRow([{v: new Date(2013, 5, 27)}, {v: 2}, {v: 1}, {v: 0.5}]);
var chart = new google.visualization.ColumnChart(document.getElementById('visualization'));
chart.draw(data_table, {
legend: "bottom"
});
}
When generated, the chart shows nothing for the first row (2013-5-26), and shows only the values of 2 and 1 for the second row (omitting 0.5).
I suspect this could be similar to Google Column Chart Missing data
Does anyone have any ideas?
So it seems Google have provided the solution somewhat...
https://developers.google.com/chart/interactive/docs/customizing_axes#Discrete_vs_Continuous
Help! My chart has gone wonky!
My domain axis type is not string but I still want a discrete domain axis:
and this makes you terribly upset, then you can do one of the
following:
- Change the type of your first data table column to string.
- Use a DataView as adapter to convert the type of your first data table
column to string:
So the solution to the above chart was to add:
//Create a DataView from the data_table
var dataView = new google.visualization.DataView(data_table);
//Set the first column of the dataview to format as a string, and return the other columns [1, 2 and 3]
dataView.setColumns([{calc: function(data, row) { return data.getFormattedValue(row, 0); }, type:'string'}, 1, 2, 3]);
So the whole function became:
function drawVisualization() {
var data_table = new google.visualization.DataTable();
data_table.addColumn({"type": "date","label": "Date"});
data_table.addColumn({"type": "number","label": "A"});
data_table.addColumn({"type": "number","label": "B"});
data_table.addColumn({"type": "number","label": "C"});
data_table.addRow([{v: new Date(2013, 5, 26)}, {v: 1}, {v: 0}, {v: 0}]);
data_table.addRow([{v: new Date(2013, 5, 27)}, {v: 2}, {v: 1}, {v: 0.5}]);
//Create a DataView from the data_table
var dataView = new google.visualization.DataView(data_table);
//Set the first column of the dataview to format as a string, and return the other columns [1, 2 and 3]
dataView.setColumns([{calc: function(data, row) { return data.getFormattedValue(row, 0); }, type:'string'}, 1, 2, 3]);
var chart = new google.visualization.ColumnChart(document.getElementById('visualization'));
chart.draw(dataView, {
legend: "bottom"
});
}