Index: packages/charted/lib/charts/cartesian_renderers/bar_chart_renderer.dart |
diff --git a/packages/charted/lib/charts/cartesian_renderers/bar_chart_renderer.dart b/packages/charted/lib/charts/cartesian_renderers/bar_chart_renderer.dart |
index 74e93cab0b0f37638dd650ceb19422559a6fa9b5..37f6dcf4efa613d1d08a51545982c9376096a2e6 100644 |
--- a/packages/charted/lib/charts/cartesian_renderers/bar_chart_renderer.dart |
+++ b/packages/charted/lib/charts/cartesian_renderers/bar_chart_renderer.dart |
@@ -47,7 +47,7 @@ class BarChartRenderer extends CartesianRendererBase { |
var bars = new OrdinalScale() |
..domain = new Range(series.measures.length).toList() |
- ..rangeRoundBands([0, dimensionScale.rangeBand]); |
+ ..rangeRoundBands([0, (dimensionScale as OrdinalScale).rangeBand]); |
// Create and update the bar groups. |
@@ -95,15 +95,31 @@ class BarChartRenderer extends CartesianRendererBase { |
? (d >= 0 ? scaled0 - scaledVal : scaledVal - scaled0) |
: (d >= 0 ? scaledVal - scaled0 : scaled0 - scaledVal); |
ht = ht - strokeWidth; |
- return (ht < 0) ? 0 : ht; |
+ |
+ // If bar would be scaled to 0 height but data is not 0, render bar |
+ // at 1 pixel so user can see and hover over to see the data. |
+ return (ht < 0) ? 1 : ht; |
}; |
var getBarPos = (d) { |
var scaledVal = measureScale.scale(d).round(); |
+ |
+ // If bar would be scaled to 0 height but data is not 0, reserve 1 pixel |
+ // height plus strokeWidthOffset to position the bar. |
+ if (scaledVal == scaled0) { |
+ return verticalBars |
+ ? d > 0 |
+ ? scaled0 - 1 - strokeWidthOffset |
+ : scaled0 + strokeWidthOffset |
+ : d > 0 |
+ ? scaled0 + strokeWidthOffset |
+ : scaled0 - 1 - strokeWidthOffset; |
+ } |
return verticalBars |
? (d >= 0 ? scaledVal : scaled0) + strokeWidthOffset |
: (d >= 0 ? scaled0 : scaledVal) + strokeWidthOffset; |
}; |
var buildPath = (d, int i, bool animate) { |
+ // If data is null or 0, an empty path for the bar is returned directly. |
if (d == null || d == 0) return ''; |
if (verticalBars) { |
var fn = d > 0 ? topRoundedRect : bottomRoundedRect; |