I'm trying to draw a Google bar chart with a logarithmic scale. However, it starts at 1, not 0. This looks like bad data because entries with one value are rendered with no bar. I tried settingminValue
to zero, but it won't seem to honor that when logScale is true
.
Is it even possible to have a logarithmic scale that starts at zero?
Here's some code that reproduces the problem on the visualization playground:
function drawVisualization() {
// Create and populate the data table.
var data = new google.visualization.DataTable();
data.addColumn('number', 'Age');
data.addColumn('number', 'Weight');
data.addRows(6);
data.setValue(0, 0, 8);
data.setValue(0, 1, 12);
data.setValue(1, 0, 4);
data.setValue(1, 1, 5.5);
data.setValue(2, 0, 11);
data.setValue(2, 1, 14);
data.setValue(3, 0, 4);
data.setValue(3, 1, 4.5);
data.setValue(4, 0, 3);
data.setValue(4, 1, 3.5);
data.setValue(5, 0, 6.5);
data.setValue(5, 1, 7);
// Create and draw the visualization.
new google.visualization.BarChart(document.getElementById('visualization')).
draw(data,
{title:"Yearly Coffee Consumption by Country",
width:600, height:400,
vAxis: {title: "Year"},
hAxis: {title: "Cups", minValue: 0, logScale: true}}
);
}
I'm trying to draw a Google bar chart with a logarithmic scale. However, it starts at 1, not 0. This looks like bad data because entries with one value are rendered with no bar. I tried settingminValue
to zero, but it won't seem to honor that when logScale is true
.
Is it even possible to have a logarithmic scale that starts at zero?
Here's some code that reproduces the problem on the visualization playground:
function drawVisualization() {
// Create and populate the data table.
var data = new google.visualization.DataTable();
data.addColumn('number', 'Age');
data.addColumn('number', 'Weight');
data.addRows(6);
data.setValue(0, 0, 8);
data.setValue(0, 1, 12);
data.setValue(1, 0, 4);
data.setValue(1, 1, 5.5);
data.setValue(2, 0, 11);
data.setValue(2, 1, 14);
data.setValue(3, 0, 4);
data.setValue(3, 1, 4.5);
data.setValue(4, 0, 3);
data.setValue(4, 1, 3.5);
data.setValue(5, 0, 6.5);
data.setValue(5, 1, 7);
// Create and draw the visualization.
new google.visualization.BarChart(document.getElementById('visualization')).
draw(data,
{title:"Yearly Coffee Consumption by Country",
width:600, height:400,
vAxis: {title: "Year"},
hAxis: {title: "Cups", minValue: 0, logScale: true}}
);
}
Share
asked Aug 8, 2011 at 16:20
Ron Ziroby RomeroRon Ziroby Romero
9,4598 gold badges44 silver badges65 bronze badges
2 Answers
Reset to default 5You cannot have 0 (or a negative value) on a logarithmic scale because log(0) = -infinity. You can however set the the minValue to a low value, like 0.1, 0.001, or whatever suits your data.
This is rather old, but came up in a google search, so I'll leave this pointer here...there is an undocumented option "scaleType": "mirrorLog" that supports negative/zero values in a log scale (by switching to linear for small values).
See-also https://code.google./p/google-visualization-api-issues/issues/detail?id=984