diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart06.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart06.java
index acd8fc00f9212b34f2ab610b28061029dd0ff169..f885bdd38f874ceb1fc44016938c390213420e72 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart06.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart06.java
@@ -48,11 +48,12 @@ public class BarChart06 implements ExampleChart {
     // Create Chart
     Chart chart = new ChartBuilder().chartType(ChartType.Bar).width(800).height(600).title("Score Histogram").xAxisTitle("Score").yAxisTitle("Count").build();
 
-    chart.addSeries("histogram 1", getGaussianData(1000), 11, -30, 30);
-    chart.addSeries("histogram 2", getGaussianData(1000), 11, -30, 30);
+    chart.addSeries("histogram 1", getGaussianData(10000), 10, -30, 30);
+    chart.addSeries("histogram 2", getGaussianData(10000), 10, -30, 30);
 
     // Customize Chart
     chart.getStyleManager().setLegendPosition(LegendPosition.InsideNW);
+    chart.getStyleManager().setBarWidthPercentage(.99);
 
     return chart;
   }
@@ -62,8 +63,8 @@ public class BarChart06 implements ExampleChart {
     List<Double> data = new ArrayList<Double>(count);
     Random r = new Random();
     for (int i = 0; i < count; i++) {
-      // data.add(r.nextGaussian() * 10);
-      data.add(r.nextDouble() * 60 - 30);
+      data.add(r.nextGaussian() * 10);
+      // data.add(r.nextDouble() * 60 - 30);
     }
     return data;
   }
diff --git a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
index 3b396e4c4efb09ac098c0cc0b9f60533ce52b944..32acadf243890607e6b11285de7083c93a69c2a4 100644
--- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
+++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
@@ -38,7 +38,7 @@ public class StyleManager {
    */
   public enum ChartType {
 
-    Line, Scatter, Area, Bar, Histogram
+    Line, Scatter, Area, Bar
   }
 
   public enum LegendPosition {
@@ -126,6 +126,7 @@ public class StyleManager {
   private boolean isPlotTicksMarksVisible;
   private Color plotGridLinesColor;
   private Stroke plotGridLinesStroke;
+  private double barWidthPercentage;
 
   // Error Bars ///////////////////////////////
   private Color errorBarsColor;
@@ -204,6 +205,7 @@ public class StyleManager {
     isPlotTicksMarksVisible = theme.isPlotTicksMarksVisible();
     plotGridLinesColor = theme.getPlotGridLinesColor();
     plotGridLinesStroke = theme.getPlotGridLinesStroke();
+    barWidthPercentage = theme.getBarWidthPercentage();
 
     // Error Bars ///////////////////////////////
     errorBarsColor = theme.getErrorBarsColor();
@@ -966,6 +968,23 @@ public class StyleManager {
     return plotGridLinesStroke;
   }
 
+  // Bar Charts ///////////////////////////////
+
+  /**
+   * set the width of a single bar in a bar chart. full width is 100%, i.e. 1.0
+   * 
+   * @param barWidthPercentage
+   */
+  public void setBarWidthPercentage(double barWidthPercentage) {
+
+    this.barWidthPercentage = barWidthPercentage;
+  }
+
+  public double getBarWidthPercentage() {
+
+    return barWidthPercentage;
+  }
+
   // Error Bars ///////////////////////////////
 
   /**
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java
index 4cac349127aea855ff64793041d25654807c0d70..565e2e27f2c905c3cc5717f380961149c5387a75 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java
@@ -99,7 +99,7 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
         tickLocations.add(tickLabelPosition);
       }
     }
-    else if (categories.size() < 13) { // Number or Date and 12 or less categories
+    else if (categories.size() < 13) { // Number or Date and 12 or less categories. give each category a tick label
 
       double gridStep = (tickSpace / (double) categories.size());
       double firstPosition = gridStep / 2.0;
@@ -130,7 +130,7 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
         tickLocations.add(tickLabelPosition);
       }
     }
-    else { // Number or Date
+    else { // Number or Date and more than 12 categories. divide up the axis tick space according to normal number axis layout
 
       double gridStep = getNumericalGridStep(tickSpace);
       double firstPosition = getFirstPosition(gridStep);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java
index 17e6ca015010bd5a2b4fa5936e2c017902f84404..262ffd1ef6bf7beca42025af2d849ad81721999e 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java
@@ -167,8 +167,9 @@ public class PlotContentBarChart extends PlotContent {
         double zeroOffset = bounds.getY() + zeroTransform;
 
         // paint bar
-        double barWidth = gridStep / getChartPainter().getAxisPair().getSeriesMap().size() / 1.1;
-        double barMargin = gridStep * .05;
+        double barWidthPercentage = getChartPainter().getStyleManager().getBarWidthPercentage();
+        double barWidth = gridStep / getChartPainter().getAxisPair().getSeriesMap().size() * barWidthPercentage;
+        double barMargin = gridStep * (1 - barWidthPercentage) / 2;
         double xOffset = bounds.getX() + xLeftMargin + gridStep * barCounter++ + seriesCounter * barWidth + barMargin;
         g.setColor(series.getStrokeColor());
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java
index f5db6e6c92b85d7a1d12c6ea94f13af305ee3394..91240092b769fea91e5900c929b2f9d1f814adc4 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java
@@ -185,7 +185,7 @@ public class PlotContentLineChart extends PlotContent {
           if (previousX != Integer.MIN_VALUE && previousY != Integer.MIN_VALUE) {
 
             g.setColor(series.getStrokeColor());
-            double yBottomOfArea = bounds.getY() + bounds.getHeight() - yTopMargin + 1;
+            double yBottomOfArea = bounds.getY() + bounds.getHeight() - yTopMargin;
 
             if (path == null) {
               path = new Path2D.Double();
@@ -264,7 +264,7 @@ public class PlotContentLineChart extends PlotContent {
   private void closePath(Graphics2D g, Path2D.Double path, double previousX, Rectangle2D bounds, double yTopMargin) {
 
     if (path != null) {
-      double yBottomOfArea = bounds.getY() + bounds.getHeight() - yTopMargin + 1;
+      double yBottomOfArea = bounds.getY() + bounds.getHeight() - yTopMargin;
       path.lineTo(previousX, yBottomOfArea);
       path.closePath();
       g.fill(path);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
index 1d5ffdc4bc637d5a767137079513c531b99ce00e..41fe250b1e20ed1430430e1e268511060961f2e9 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
@@ -279,6 +279,14 @@ public class GGPlot2Theme implements Theme {
     return new BasicStroke(1.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL);
   }
 
+  // Bar Charts ///////////////////////////////
+
+  @Override
+  public double getBarWidthPercentage() {
+
+    return 0.9;
+  }
+
   // Error Bars ///////////////////////////////
 
   @Override
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java
index 717ea8130a2d1114ffb795363c1ab7d461f3a08a..43cf3b2172629bf32dd356be1f83a137f534705b 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java
@@ -280,6 +280,14 @@ public class MatlabTheme implements Theme {
 
   }
 
+  // Bar Charts ///////////////////////////////
+
+  @Override
+  public double getBarWidthPercentage() {
+
+    return 0.9;
+  }
+
   // Error Bars ///////////////////////////////
 
   @Override
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java
index fe412c7330652984cebbee89d097a7b8ec064a15..629073fe62112d88605cb6c6ad421304c014d15f 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java
@@ -116,6 +116,10 @@ public interface Theme {
 
   public boolean isPlotTicksMarksVisible();
 
+  // Bar Charts ///////////////////////////////
+
+  public double getBarWidthPercentage();
+
   // Error Bars ///////////////////////////////
 
   public Color getErrorBarsColor();
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
index bfb470f18af9a56483b0f614ab7ab1448ce0f37e..39fb848b98910a8946789abc1d51c483ff129834 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
@@ -279,6 +279,14 @@ public class XChartTheme implements Theme {
     return new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 10.0f, new float[] { 3.0f, 3.0f }, 0.0f);
   }
 
+  // Bar Charts ///////////////////////////////
+
+  @Override
+  public double getBarWidthPercentage() {
+
+    return 0.9;
+  }
+
   // Error Bars ///////////////////////////////
 
   @Override