diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java
index 3a45c734ce5440a8ea784115ffb4ece16f820dec..362def1feb75512f0a3200e2940d0b1336c9a265 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java
@@ -33,6 +33,7 @@ import javax.swing.tree.TreeSelectionModel;
 import com.xeiam.xchart.XChartPanel;
 import com.xeiam.xchart.demo.charts.area.AreaChart01;
 import com.xeiam.xchart.demo.charts.area.AreaChart02;
+import com.xeiam.xchart.demo.charts.area.AreaLineChart03;
 import com.xeiam.xchart.demo.charts.bar.BarChart01;
 import com.xeiam.xchart.demo.charts.bar.BarChart02;
 import com.xeiam.xchart.demo.charts.bar.BarChart03;
@@ -47,7 +48,12 @@ import com.xeiam.xchart.demo.charts.date.DateChart04;
 import com.xeiam.xchart.demo.charts.date.DateChart05;
 import com.xeiam.xchart.demo.charts.date.DateChart06;
 import com.xeiam.xchart.demo.charts.date.DateChart07;
-import com.xeiam.xchart.demo.charts.line.*;
+import com.xeiam.xchart.demo.charts.line.LineChart01;
+import com.xeiam.xchart.demo.charts.line.LineChart02;
+import com.xeiam.xchart.demo.charts.line.LineChart03;
+import com.xeiam.xchart.demo.charts.line.LineChart04;
+import com.xeiam.xchart.demo.charts.line.LineChart05;
+import com.xeiam.xchart.demo.charts.line.LineChart06;
 import com.xeiam.xchart.demo.charts.realtime.RealtimeChart01;
 import com.xeiam.xchart.demo.charts.realtime.RealtimeChart02;
 import com.xeiam.xchart.demo.charts.scatter.ScatterChart01;
@@ -60,7 +66,7 @@ import com.xeiam.xchart.demo.charts.theme.ThemeChart03;
 
 /**
  * Class containing all XChart example charts
- * 
+ *
  * @author timmolter
  */
 public class XChartDemo extends JPanel implements TreeSelectionListener {
@@ -169,7 +175,7 @@ public class XChartDemo extends JPanel implements TreeSelectionListener {
 
   /**
    * Create the tree
-   * 
+   *
    * @param top
    */
   private void createNodes(DefaultMutableTreeNode top) {
@@ -189,6 +195,9 @@ public class XChartDemo extends JPanel implements TreeSelectionListener {
     defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("AreaChart02 - Null Y-Axis Data Points", new AreaChart02().getChart()));
     category.add(defaultMutableTreeNode);
 
+    defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("AreaLineChart03 - Combination Line & Area Chart", new AreaLineChart03().getChart()));
+    category.add(defaultMutableTreeNode);
+
     // Line category
     category = new DefaultMutableTreeNode("Line Charts");
     top.add(category);
@@ -211,9 +220,6 @@ public class XChartDemo extends JPanel implements TreeSelectionListener {
     defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("LineChart06 - Logarithmic Y-Axis with Error Bars", new LineChart06().getChart()));
     category.add(defaultMutableTreeNode);
 
-    defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("LineAreaChart07 - Line & Area Chart", new LineAreaChart07().getChart()));
-    category.add(defaultMutableTreeNode);
-
     // Scatter category
     category = new DefaultMutableTreeNode("Scatter Charts");
     top.add(category);
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart01.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart01.java
index a39f8e2d19ed9b0acb5a26b4101677428edfbf1f..4fb4b5f79b9c6dbe59e1569944f2d380667646dc 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart01.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart01.java
@@ -44,7 +44,7 @@ public class AreaChart01 implements ExampleChart {
   public Chart getChart() {
 
     // Create Chart
-    Chart chart = new ChartBuilder().chartType(ChartType.Area).width(800).height(600).title("AreaChart01").xAxisTitle("X").yAxisTitle("Y").build();
+    Chart chart = new ChartBuilder().chartType(ChartType.Area).width(800).height(600).title(getClass().getSimpleName()).xAxisTitle("X").yAxisTitle("Y").build();
     chart.addSeries("a", new double[] { 0, 3, 5, 7, 9 }, new double[] { -3, 5, 9, 6, 5 });
     chart.addSeries("b", new double[] { 0, 2, 4, 6, 9 }, new double[] { -1, 6, 4, 0, 4 });
     chart.addSeries("c", new double[] { 0, 1, 3, 8, 9 }, new double[] { -2, -1, 1, 0, 1 });
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart02.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart02.java
index 262cdc4944a2309e83620173aa5233cf2cd050ea..a5a8274dd00bdf4b9c73b3efc9c4a08c4e8948c8 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart02.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart02.java
@@ -47,7 +47,7 @@ public class AreaChart02 implements ExampleChart {
   public Chart getChart() {
 
     // Create Chart
-    Chart chart = new ChartBuilder().chartType(ChartType.Area).width(800).height(600).title("AreaChart02").xAxisTitle("X").yAxisTitle("Y").build();
+    Chart chart = new ChartBuilder().chartType(ChartType.Area).width(800).height(600).title(getClass().getSimpleName()).xAxisTitle("X").yAxisTitle("Y").build();
 
     List<Integer> xData = new ArrayList<Integer>();
     List<Integer> yData = new ArrayList<Integer>();
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineAreaChart07.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaLineChart03.java
similarity index 90%
rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineAreaChart07.java
rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaLineChart03.java
index 39776b99809cdbf13cf3ffbc8cf9c640c748a993..3b8f85c41e883b6f33de572e4705a693ea5d0331 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineAreaChart07.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaLineChart03.java
@@ -13,14 +13,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.xeiam.xchart.demo.charts.line;
+package com.xeiam.xchart.demo.charts.area;
 
-import com.xeiam.xchart.*;
+import com.xeiam.xchart.Chart;
+import com.xeiam.xchart.Series;
+import com.xeiam.xchart.SeriesMarker;
+import com.xeiam.xchart.StyleManager;
+import com.xeiam.xchart.StyleManager.ChartType;
 import com.xeiam.xchart.StyleManager.LegendPosition;
+import com.xeiam.xchart.SwingWrapper;
 import com.xeiam.xchart.demo.charts.ExampleChart;
 
-import java.awt.*;
-
 /**
  * Combination Line & Area Chart
  * <p/>
@@ -30,11 +33,11 @@ import java.awt.*;
  * <li>Axis Label Alignment
  * <li>Ensuring a chart axis on a tick
  */
-public class LineAreaChart07 implements ExampleChart {
+public class AreaLineChart03 implements ExampleChart {
 
   public static void main(String[] args) {
 
-    ExampleChart exampleChart = new LineAreaChart07();
+    ExampleChart exampleChart = new AreaLineChart03();
     Chart chart = exampleChart.getChart();
     new SwingWrapper(chart).displayChart();
   }
@@ -46,11 +49,13 @@ public class LineAreaChart07 implements ExampleChart {
     Chart chart = new Chart(800, 600);
 
     // Customize Chart
-    chart.setChartTitle("LineAreaChart07");
+    chart.setChartTitle(getClass().getSimpleName());
     chart.setXAxisTitle("Age");
     chart.setYAxisTitle("Amount");
     chart.getStyleManager().setLegendPosition(LegendPosition.InsideNW);
+    chart.getStyleManager().setChartType(ChartType.Line);
 
+    // @formatter:off
     double[] xAges = new double[]{
         60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
         70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
@@ -231,6 +236,7 @@ public class LineAreaChart07 implements ExampleChart {
         0,
         0,
         0};
+    // @formatter:on
 
     Series seriesLiability = chart.addSeries("Liability", xAges, yLiability);
     seriesLiability.setMarker(SeriesMarker.NONE);
@@ -246,7 +252,7 @@ public class LineAreaChart07 implements ExampleChart {
     seriesPercentile25th.setMarker(SeriesMarker.NONE);
 
     chart.getStyleManager().setYAxisLabelAlignment(StyleManager.TextAlignment.Right);
-    chart.getStyleManager().setDecimalPattern("$ #,###.##"); // TODO need a different patter for y and x axis
+    chart.getStyleManager().setYAxisDecimalPattern("$ #,###.##");
 
     chart.getStyleManager().setPlotPadding(0);
     chart.getStyleManager().setAxisTickSpaceRatio(1);
diff --git a/xchart/src/main/java/com/xeiam/xchart/Series.java b/xchart/src/main/java/com/xeiam/xchart/Series.java
index 2599fef09df202afa3476db8619079fe229304ed..47e0b315985951871bb62c8310a76bc967a21a8a 100644
--- a/xchart/src/main/java/com/xeiam/xchart/Series.java
+++ b/xchart/src/main/java/com/xeiam/xchart/Series.java
@@ -252,10 +252,12 @@ public class Series {
   }
 
   public SeriesType getSeriesType() {
+
     return seriesType;
   }
 
   public void setSeriesType(SeriesType seriesType) {
+
     this.seriesType = seriesType;
   }
 
@@ -315,10 +317,12 @@ public class Series {
   }
 
   public Color getFillColor() {
+
     return fillColor;
   }
 
   public void setFillColor(Color fillColor) {
+
     this.fillColor = fillColor;
   }
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
index e3743a9882c8e3aae85673007888a8e9e90dfaa0..66420c974bb3cd6e8268a5be303910c9f090be11 100644
--- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
+++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
@@ -28,7 +28,7 @@ import com.xeiam.xchart.internal.style.XChartTheme;
 
 /**
  * The StyleManager is used to manage all things related to styling of the vast number of Chart components
- * 
+ *
  * @author timmolter
  */
 public class StyleManager {
@@ -67,9 +67,7 @@ public class StyleManager {
   }
 
   public enum TextAlignment {
-    Left,
-    Centre,
-    Right;
+    Left, Centre, Right;
   }
 
   /** the default Theme */
@@ -150,6 +148,8 @@ public class StyleManager {
   private TimeZone timezone;
   private String datePattern;
   private String decimalPattern;
+  private String xAxisDecimalPattern;
+  private String yAxisDecimalPattern;
 
   /**
    * Constructor
@@ -235,11 +235,13 @@ public class StyleManager {
     timezone = TimeZone.getDefault();
     datePattern = null; // if not null, this override pattern will be used
     decimalPattern = null;
+    xAxisDecimalPattern = null;
+    yAxisDecimalPattern = null;
   }
 
   /**
    * Set the theme the style manager should use
-   * 
+   *
    * @param theme
    */
   protected void setTheme(Theme theme) {
@@ -257,7 +259,7 @@ public class StyleManager {
 
   /**
    * sets the Chart Type
-   * 
+   *
    * @param chartType
    */
   public void setChartType(ChartType chartType) {
@@ -272,7 +274,7 @@ public class StyleManager {
 
   /**
    * Set the chart background color - the part around the edge of the chart
-   * 
+   *
    * @param color
    */
   public void setChartBackgroundColor(Color color) {
@@ -287,7 +289,7 @@ public class StyleManager {
 
   /**
    * Set the chart font color. includes: Chart title, axes label, legend
-   * 
+   *
    * @param color
    */
   public void setChartFontColor(Color color) {
@@ -302,7 +304,7 @@ public class StyleManager {
 
   /**
    * Set the chart padding
-   * 
+   *
    * @param chartPadding
    */
   public void setChartPadding(int chartPadding) {
@@ -319,7 +321,7 @@ public class StyleManager {
 
   /**
    * Set the chart title font
-   * 
+   *
    * @param font
    */
   public void setChartTitleFont(Font chartTitleFont) {
@@ -334,7 +336,7 @@ public class StyleManager {
 
   /**
    * Set the chart title visibility
-   * 
+   *
    * @param isChartTitleVisible
    */
   public void setChartTitleVisible(boolean isChartTitleVisible) {
@@ -349,7 +351,7 @@ public class StyleManager {
 
   /**
    * Set the chart title box visibility
-   * 
+   *
    * @param isChartTitleBoxVisible
    */
   public void setChartTitleBoxVisible(boolean isChartTitleBoxVisible) {
@@ -364,7 +366,7 @@ public class StyleManager {
 
   /**
    * set the chart title box background color
-   * 
+   *
    * @param chartTitleBoxBackgroundColor
    */
   public void setChartTitleBoxBackgroundColor(Color chartTitleBoxBackgroundColor) {
@@ -379,7 +381,7 @@ public class StyleManager {
 
   /**
    * set the chart title box border color
-   * 
+   *
    * @param chartTitleBoxBorderColor
    */
   public void setChartTitleBoxBorderColor(Color chartTitleBoxBorderColor) {
@@ -394,7 +396,7 @@ public class StyleManager {
 
   /**
    * set the chart title padding; the space between the chart title and the plot area
-   * 
+   *
    * @param chartTitlePadding
    */
   public void setChartTitlePadding(int chartTitlePadding) {
@@ -411,7 +413,7 @@ public class StyleManager {
 
   /**
    * Set the chart legend background color
-   * 
+   *
    * @param color
    */
   public void setLegendBackgroundColor(Color color) {
@@ -426,7 +428,7 @@ public class StyleManager {
 
   /**
    * Set the chart legend border color
-   * 
+   *
    * @return
    */
   public Color getLegendBorderColor() {
@@ -441,7 +443,7 @@ public class StyleManager {
 
   /**
    * Set the chart legend font
-   * 
+   *
    * @param font
    */
   public void setLegendFont(Font font) {
@@ -456,7 +458,7 @@ public class StyleManager {
 
   /**
    * Set the chart legend visibility
-   * 
+   *
    * @param isLegendVisible
    */
   public void setLegendVisible(boolean isLegendVisible) {
@@ -471,7 +473,7 @@ public class StyleManager {
 
   /**
    * Set the chart legend padding
-   * 
+   *
    * @param legendPadding
    */
   public void setLegendPadding(int legendPadding) {
@@ -486,7 +488,7 @@ public class StyleManager {
 
   /**
    * Set the chart legend series line length
-   * 
+   *
    * @param legendPadding
    */
   public void setLegendSeriesLineLength(int legendSeriesLineLength) {
@@ -506,7 +508,7 @@ public class StyleManager {
 
   /**
    * sets the legend position
-   * 
+   *
    * @param legendPosition
    */
   public void setLegendPosition(LegendPosition legendPosition) {
@@ -523,7 +525,7 @@ public class StyleManager {
 
   /**
    * Set the x-axis title visibility
-   * 
+   *
    * @param isVisible
    */
   public void setXAxisTitleVisible(boolean xAxisTitleVisible) {
@@ -538,7 +540,7 @@ public class StyleManager {
 
   /**
    * Set the y-axis title visibility
-   * 
+   *
    * @param isVisible
    */
   public void setYAxisTitleVisible(boolean yAxisTitleVisible) {
@@ -553,7 +555,7 @@ public class StyleManager {
 
   /**
    * Set the x- and y-axis titles visibility
-   * 
+   *
    * @param isVisible
    */
   public void setAxisTitlesVisible(boolean isVisible) {
@@ -564,7 +566,7 @@ public class StyleManager {
 
   /**
    * Set the x- and y-axis title font
-   * 
+   *
    * @param axisTitleFont
    */
   public void setAxisTitleFont(Font axisTitleFont) {
@@ -579,7 +581,7 @@ public class StyleManager {
 
   /**
    * Set the x-axis tick marks and labels visibility
-   * 
+   *
    * @param isVisible
    */
 
@@ -595,7 +597,7 @@ public class StyleManager {
 
   /**
    * Set the y-axis tick marks and labels visibility
-   * 
+   *
    * @param isVisible
    */
 
@@ -611,7 +613,7 @@ public class StyleManager {
 
   /**
    * Set the x- and y-axis tick marks and labels visibility
-   * 
+   *
    * @param isVisible
    */
   public void setAxisTicksVisible(boolean isVisible) {
@@ -622,7 +624,7 @@ public class StyleManager {
 
   /**
    * Set the x- and y-axis tick label font
-   * 
+   *
    * @param foxAxisTicksFontnt
    */
   public void setAxisTickLabelsFont(Font axisTicksFont) {
@@ -637,7 +639,7 @@ public class StyleManager {
 
   /**
    * set the axis tick mark length
-   * 
+   *
    * @param axisTickMarkLength
    */
   public void setAxisTickMarkLength(int axisTickMarkLength) {
@@ -652,7 +654,7 @@ public class StyleManager {
 
   /**
    * sets the padding between the tick labels and the tick marks
-   * 
+   *
    * @param axisTickPadding
    */
   public void setAxisTickPadding(int axisTickPadding) {
@@ -667,7 +669,7 @@ public class StyleManager {
 
   /**
    * sets the axis tick mark color
-   * 
+   *
    * @param axisTickColor
    */
   public void setAxisTickMarksColor(Color axisTickColor) {
@@ -682,7 +684,7 @@ public class StyleManager {
 
   /**
    * sets the axis tick marks Stroke
-   * 
+   *
    * @param axisTickMarksStroke
    */
   public void setAxisTickMarksStroke(Stroke axisTickMarksStroke) {
@@ -697,7 +699,7 @@ public class StyleManager {
 
   /**
    * sets the axis tick label color
-   * 
+   *
    * @param axisTickLabelsColor
    */
   public void setAxisTickLabelsColor(Color axisTickLabelsColor) {
@@ -712,7 +714,7 @@ public class StyleManager {
 
   /**
    * sets the visibility of the line parallel to the plot edges that go along with the tick marks
-   * 
+   *
    * @param isAxisTicksLineVisible
    */
   public void setAxisTicksLineVisible(boolean isAxisTicksLineVisible) {
@@ -727,7 +729,7 @@ public class StyleManager {
 
   /**
    * sets the visibility of the tick marks
-   * 
+   *
    * @param isAxisTicksMarksVisible
    */
   public void setAxisTicksMarksVisible(boolean isAxisTicksMarksVisible) {
@@ -742,7 +744,7 @@ public class StyleManager {
 
   /**
    * sets the padding between the tick marks and the plot area
-   * 
+   *
    * @param plotPadding
    */
   public void setPlotPadding(int plotPadding) {
@@ -757,7 +759,7 @@ public class StyleManager {
 
   /**
    * sets the padding between the axis title and the tick labels
-   * 
+   *
    * @param axisTitlePadding
    */
   public void setAxisTitlePadding(int axisTitlePadding) {
@@ -772,7 +774,7 @@ public class StyleManager {
 
   /**
    * set the spacing between tick marks for the X-Axis
-   * 
+   *
    * @param xAxisTickMarkSpacingHint
    */
   public void setXAxisTickMarkSpacingHint(int xAxisTickMarkSpacingHint) {
@@ -787,7 +789,7 @@ public class StyleManager {
 
   /**
    * set the spacing between tick marks for the Y-Axis
-   * 
+   *
    * @param xAxisTickMarkSpacingHint
    */
   public void setYAxisTickMarkSpacingHint(int yAxisTickMarkSpacingHint) {
@@ -802,7 +804,7 @@ public class StyleManager {
 
   /**
    * sets the X-Axis to be rendered with a logarithmic scale or not
-   * 
+   *
    * @param isxAxisLogarithmic
    */
   public void setXAxisLogarithmic(boolean isXAxisLogarithmic) {
@@ -817,7 +819,7 @@ public class StyleManager {
 
   /**
    * sets the Y-Axis to be rendered with a logarithmic scale or not
-   * 
+   *
    * @param isyAxisLogarithmic
    */
   public void setYAxisLogarithmic(boolean isYAxisLogarithmic) {
@@ -881,27 +883,30 @@ public class StyleManager {
   }
 
   public TextAlignment getXAxisLabelAlignment() {
+
     return xAxisLabelAlignment;
   }
 
   public void setXAxisLabelAlignment(TextAlignment xAxisLabelAlignment) {
+
     this.xAxisLabelAlignment = xAxisLabelAlignment;
   }
 
   public TextAlignment getYAxisLabelAlignment() {
+
     return yAxisLabelAlignment;
   }
 
   public void setYAxisLabelAlignment(TextAlignment yAxisLabelAlignment) {
+
     this.yAxisLabelAlignment = yAxisLabelAlignment;
   }
 
-
   // Chart Plot Area ///////////////////////////////
 
   /**
    * sets the visibility of the gridlines on the plot area
-   * 
+   *
    * @param isPlotGridLinesVisible
    */
   public void setPlotGridLinesVisible(boolean isPlotGridLinesVisible) {
@@ -916,7 +921,7 @@ public class StyleManager {
 
   /**
    * set the plot area's background color
-   * 
+   *
    * @param plotBackgroundColor
    */
   public void setPlotBackgroundColor(Color plotBackgroundColor) {
@@ -931,7 +936,7 @@ public class StyleManager {
 
   /**
    * set the plot area's border color
-   * 
+   *
    * @param plotBorderColor
    */
   public void setPlotBorderColor(Color plotBorderColor) {
@@ -946,7 +951,7 @@ public class StyleManager {
 
   /**
    * sets the visibility of the border around the plot area
-   * 
+   *
    * @param isPlotBorderVisible
    */
   public void setPlotBorderVisible(boolean isPlotBorderVisible) {
@@ -961,7 +966,7 @@ public class StyleManager {
 
   /**
    * sets the visibility of the ticks marks inside the plot area
-   * 
+   *
    * @param isPlotTicksMarksVisible
    */
   public void setPlotTicksMarksVisible(boolean isPlotTicksMarksVisible) {
@@ -976,7 +981,7 @@ public class StyleManager {
 
   /**
    * set the plot area's grid lines color
-   * 
+   *
    * @param plotGridLinesColor
    */
   public void setPlotGridLinesColor(Color plotGridLinesColor) {
@@ -991,7 +996,7 @@ public class StyleManager {
 
   /**
    * set the plot area's grid lines Stroke
-   * 
+   *
    * @param plotGridLinesStroke
    */
   public void setPlotGridLinesStroke(Stroke plotGridLinesStroke) {
@@ -1008,7 +1013,7 @@ public class StyleManager {
 
   /**
    * 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) {
@@ -1023,7 +1028,7 @@ public class StyleManager {
 
   /**
    * set whether or no bars are overlapped. Otherwise they are places side-by-side
-   * 
+   *
    * @param isBarsOverlapped
    */
   public void setBarsOverlapped(boolean isBarsOverlapped) {
@@ -1040,7 +1045,7 @@ public class StyleManager {
 
   /**
    * Sets the size of the markers in pixels
-   * 
+   *
    * @param markerSize
    */
   public void setMarkerSize(int markerSize) {
@@ -1057,7 +1062,7 @@ public class StyleManager {
 
   /**
    * Sets the color of the error bars
-   * 
+   *
    * @param errorBarsColor
    */
   public void setErrorBarsColor(Color errorBarsColor) {
@@ -1074,7 +1079,7 @@ public class StyleManager {
 
   /**
    * Set the locale to use for rendering the chart
-   * 
+   *
    * @param locale - the locale to use when formatting Strings and dates for the axis tick labels
    */
   public void setLocale(Locale locale) {
@@ -1089,7 +1094,7 @@ public class StyleManager {
 
   /**
    * Set the timezone to use for formatting Date axis tick labels
-   * 
+   *
    * @param timezone the timezone to use when formatting date data
    */
   public void setTimezone(TimeZone timezone) {
@@ -1104,7 +1109,7 @@ public class StyleManager {
 
   /**
    * Set the String formatter for Data x-axis
-   * 
+   *
    * @param pattern - the pattern describing the date and time format
    */
   public void setDatePattern(String datePattern) {
@@ -1119,7 +1124,7 @@ public class StyleManager {
 
   /**
    * Set the decimal formatter for all tick labels
-   * 
+   *
    * @param pattern - the pattern describing the decimal format
    */
   public void setDecimalPattern(String decimalPattern) {
@@ -1132,4 +1137,34 @@ public class StyleManager {
     return decimalPattern;
   }
 
+  public String getXAxisDecimalPattern() {
+
+    return xAxisDecimalPattern;
+  }
+
+  /**
+   * Set the decimal formatting pattern for the X-Axis
+   *
+   * @param xAxisDecimalPattern
+   */
+  public void setXAxisDecimalPattern(String xAxisDecimalPattern) {
+
+    this.xAxisDecimalPattern = xAxisDecimalPattern;
+  }
+
+  public String getYAxisDecimalPattern() {
+
+    return yAxisDecimalPattern;
+  }
+
+  /**
+   * Set the decimal formatting pattern for the Y-Axis
+   *
+   * @param yAxisDecimalPattern
+   */
+  public void setYAxisDecimalPattern(String yAxisDecimalPattern) {
+
+    this.yAxisDecimalPattern = yAxisDecimalPattern;
+  }
+
 }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java
index 5f5d3e44c74cf295355b2fbc3afa3dbb9c0d2bd1..aa0531f439f5cd8e90f7ad2a9ca474bfc406973d 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java
@@ -15,15 +15,21 @@
  */
 package com.xeiam.xchart.internal.chartpart;
 
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
 import com.xeiam.xchart.Series;
 import com.xeiam.xchart.StyleManager.ChartType;
 import com.xeiam.xchart.internal.chartpart.Axis.AxisType;
 import com.xeiam.xchart.internal.style.SeriesColorMarkerLineStyleCycler;
 
-import java.awt.*;
-import java.util.*;
-import java.util.List;
-
 /**
  * @author timmolter
  */
@@ -110,11 +116,11 @@ public class AxisPair implements ChartPart {
     }
 
     switch (chartPainter.getStyleManager().getChartType()) {
-      case Area:
-        series.setSeriesType(Series.SeriesType.Area);
-        break;
-      case Line:
-        series.setSeriesType(Series.SeriesType.Line);
+    case Area:
+      series.setSeriesType(Series.SeriesType.Area);
+      break;
+    case Line:
+      series.setSeriesType(Series.SeriesType.Line);
     }
 
     // Sanity check
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 422bc51bd6f25ea88c16d49a1c3457f7b470ace8..7a8e647a60c3ce6eff5bc9900ed63bb2edc256ed 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
@@ -119,7 +119,7 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
 
       for (Object category : categories) {
         if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Number) {
-          tickLabels.add(numberFormatter.formatNumber(BigDecimal.valueOf((Double) category), minValue, maxValue));
+          tickLabels.add(numberFormatter.formatNumber(BigDecimal.valueOf((Double) category), minValue, maxValue, axisDirection));
         }
         else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Date) {
           long span = (long) Math.abs(maxValue - minValue); // in data space
@@ -150,7 +150,7 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
       for (double tickPosition = firstPosition; tickPosition <= maxValue + 2 * gridStep; tickPosition = tickPosition + gridStep) {
 
         if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Number) {
-          tickLabels.add(numberFormatter.formatNumber(BigDecimal.valueOf(tickPosition), minValue, maxValue));
+          tickLabels.add(numberFormatter.formatNumber(BigDecimal.valueOf(tickPosition), minValue, maxValue, axisDirection));
         }
         else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Date) {
           long span = (long) Math.abs(maxValue - minValue); // in data space
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
index 849de832fcee50876b100a9e5fe11545ff370a97..cc1d035877edbbff1a9486127c239137292271ef 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
@@ -15,7 +15,8 @@
  */
 package com.xeiam.xchart.internal.chartpart;
 
-import java.awt.*;
+import java.awt.Graphics2D;
+import java.awt.Shape;
 import java.awt.font.FontRenderContext;
 import java.awt.font.TextLayout;
 import java.awt.geom.AffineTransform;
@@ -96,15 +97,15 @@ public class AxisTickLabels implements ChartPart {
         double boundWidth = tickLabelBounds.getWidth();
         double xPos;
         switch (getChartPainter().getStyleManager().getYAxisLabelAlignment()) {
-          case Right:
-            xPos = xOffset + maxTickLabelWidth - boundWidth;
-            break;
-          case Centre:
-            xPos = xOffset + (maxTickLabelWidth - boundWidth) / 2;
-            break;
-          case Left:
-          default:
-            xPos = xOffset;
+        case Right:
+          xPos = xOffset + maxTickLabelWidth - boundWidth;
+          break;
+        case Centre:
+          xPos = xOffset + (maxTickLabelWidth - boundWidth) / 2;
+          break;
+        case Left:
+        default:
+          xPos = xOffset;
         }
         at.translate(xPos, flippedTickLocation + tickLabelBounds.getHeight() / 2.0);
         g.transform(at);
@@ -147,15 +148,15 @@ public class AxisTickLabels implements ChartPart {
           AffineTransform at = new AffineTransform();
           double xPos;
           switch (getChartPainter().getStyleManager().getXAxisLabelAlignment()) {
-            case Left:
-              xPos = shiftedTickLocation;
-              break;
-            case Right:
-              xPos = shiftedTickLocation - tickLabelBounds.getWidth();
-              break;
-            case Centre:
-            default:
-              xPos = shiftedTickLocation - tickLabelBounds.getWidth() / 2.0;
+          case Left:
+            xPos = shiftedTickLocation;
+            break;
+          case Right:
+            xPos = shiftedTickLocation - tickLabelBounds.getWidth();
+            break;
+          case Centre:
+          default:
+            xPos = shiftedTickLocation - tickLabelBounds.getWidth() / 2.0;
           }
           at.translate(xPos, yOffset);
           g.transform(at);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLogarithmicCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLogarithmicCalculator.java
index 60bb7358802b9a5fedbe43dc794f1a559f4dbfc5..c534edc63b6fec98fb8d21dd350074771a1b69a4 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLogarithmicCalculator.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLogarithmicCalculator.java
@@ -50,7 +50,7 @@ public class AxisTickLogarithmicCalculator extends AxisTickCalculator {
 
     // a check if all axis data are the exact same values
     if (minValue == maxValue) {
-      tickLabels.add(numberFormatter.formatNumber(BigDecimal.valueOf(maxValue), minValue, maxValue));
+      tickLabels.add(numberFormatter.formatNumber(BigDecimal.valueOf(maxValue), minValue, maxValue, axisDirection));
       tickLocations.add(workingSpace / 2.0);
       return;
     }
@@ -113,7 +113,7 @@ public class AxisTickLogarithmicCalculator extends AxisTickCalculator {
 
         // only add labels for the decades
         if (Math.abs(Math.log10(j) % 1) < 0.00000001) {
-          tickLabels.add(numberFormatter.formatLogNumber(j));
+          tickLabels.add(numberFormatter.formatLogNumber(j, axisDirection));
         }
         else {
           tickLabels.add(null);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java
index dffe6f11d5e6f499460ef3e1a555c813983fbee2..b6c9fbb294c7bb69112a85cbc86fa1b6acd4e38a 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java
@@ -51,7 +51,7 @@ public class AxisTickNumericalCalculator extends AxisTickCalculator {
 
     // a check if all axis data are the exact same values
     if (minValue == maxValue) {
-      tickLabels.add(numberFormatter.formatNumber(BigDecimal.valueOf(maxValue), minValue, maxValue));
+      tickLabels.add(numberFormatter.formatNumber(BigDecimal.valueOf(maxValue), minValue, maxValue, axisDirection));
       tickLocations.add(workingSpace / 2.0);
       return;
     }
@@ -74,7 +74,7 @@ public class AxisTickNumericalCalculator extends AxisTickCalculator {
     // generate all tickLabels and tickLocations from the first to last position
     for (BigDecimal tickPosition = cleanedFirstPosition; tickPosition.compareTo(BigDecimal.valueOf(maxValue + 2 * cleanedGridStep.doubleValue())) < 0; tickPosition = tickPosition.add(cleanedGridStep)) {
 
-      tickLabels.add(numberFormatter.formatNumber(tickPosition, minValue, maxValue));
+      tickLabels.add(numberFormatter.formatNumber(tickPosition, minValue, maxValue, axisDirection));
       // here we convert tickPosition finally to plot space, i.e. pixels
       double tickLabelPosition = margin + ((tickPosition.doubleValue() - minValue) / (maxValue - minValue) * tickSpace);
       tickLocations.add(tickLabelPosition);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/NumberFormatter.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/NumberFormatter.java
index 5685df93065350addc032e5ccf409050d174ba97..750f538be4545e74edbe2ea6f6ebca24a8e8de47 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/NumberFormatter.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/NumberFormatter.java
@@ -20,6 +20,7 @@ import java.text.DecimalFormat;
 import java.text.NumberFormat;
 
 import com.xeiam.xchart.StyleManager;
+import com.xeiam.xchart.internal.chartpart.Axis.Direction;
 
 /**
  * @author timmolter
@@ -107,21 +108,31 @@ public class NumberFormatter {
    * Format a number value, if the override patterns are null, it uses defaults
    *
    * @param value
+   * @param min
+   * @param max
+   * @param axisDirection
    * @return
    */
-  public String formatNumber(BigDecimal value, double min, double max) {
+  public String formatNumber(BigDecimal value, double min, double max, Direction axisDirection) {
 
     NumberFormat numberFormat = NumberFormat.getNumberInstance(styleManager.getLocale());
 
     String decimalPattern;
 
-    if (styleManager.getDecimalPattern() == null) {
+    if (axisDirection == Direction.X && styleManager.getXAxisDecimalPattern() != null) {
 
-      decimalPattern = getFormatPattern(value, min, max);
+      decimalPattern = styleManager.getXAxisDecimalPattern();
     }
-    else {
+    else if (axisDirection == Direction.Y && styleManager.getYAxisDecimalPattern() != null) {
+      decimalPattern = styleManager.getYAxisDecimalPattern();
+    }
+    else if (styleManager.getDecimalPattern() != null) {
+
       decimalPattern = styleManager.getDecimalPattern();
     }
+    else {
+      decimalPattern = getFormatPattern(value, min, max);
+    }
 
     DecimalFormat normalFormat = (DecimalFormat) numberFormat;
     normalFormat.applyPattern(decimalPattern);
@@ -135,19 +146,26 @@ public class NumberFormatter {
    * @param value
    * @return
    */
-  public String formatLogNumber(double value) {
+  public String formatLogNumber(double value, Direction axisDirection) {
 
     NumberFormat numberFormat = NumberFormat.getNumberInstance(styleManager.getLocale());
 
     String decimalPattern;
 
-    if (styleManager.getDecimalPattern() == null) {
+    if (axisDirection == Direction.X && styleManager.getXAxisDecimalPattern() != null) {
 
-      decimalPattern = "0E0";
+      decimalPattern = styleManager.getXAxisDecimalPattern();
     }
-    else {
+    else if (axisDirection == Direction.Y && styleManager.getYAxisDecimalPattern() != null) {
+      decimalPattern = styleManager.getYAxisDecimalPattern();
+    }
+    else if (styleManager.getDecimalPattern() != null) {
+
       decimalPattern = styleManager.getDecimalPattern();
     }
+    else {
+      decimalPattern = "0E0";
+    }
 
     DecimalFormat normalFormat = (DecimalFormat) numberFormat;
     normalFormat.applyPattern(decimalPattern);