diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart04.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart04.java index de90dc2c0082b4f22c5c9dee30f2df201c38ffa1..74400142b1590d8c48cdcc6f3223735c26699d4b 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart04.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart04.java @@ -46,8 +46,8 @@ public class BarChart04 implements ExampleChart { // Create Chart Chart chart = new ChartBuilder().chartType(ChartType.Bar).width(800).height(600).title("XFactor vs. Age").xAxisTitle("Age").yAxisTitle("XFactor").build(); - chart.addSeries("male", new double[] { 10, 20, 30, 50 }, new double[] { 40, 30, 20, 60 }); chart.addSeries("female", new double[] { 10, 20, 30, 40, 50 }, new double[] { 50, 10, 20, 40, 35 }); + chart.addSeries("male", new double[] { 10, 20, 30, 50 }, new double[] { 40, 30, 20, 60 }); chart.getStyleManager().setYAxisMin(5); chart.getStyleManager().setYAxisMax(70); 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 48bffe3e67d581f8e096ed8aa7e6f4f7dff5c39b..e163b67852d693c58f0f1216cc7457fc4560953c 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 @@ -15,10 +15,10 @@ */ package com.xeiam.xchart.internal.chartpart; +import java.util.ArrayList; import java.util.Date; import java.util.Iterator; -import java.util.Set; -import java.util.TreeSet; +import java.util.List; import com.xeiam.xchart.Series; import com.xeiam.xchart.internal.Utils; @@ -50,13 +50,13 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator { private void calculate(ChartPainter chartPainter) { // tick space - a percentage of the working space available for ticks - int tickSpace = (int)(styleManager.getAxisTickSpaceRatio() * workingSpace); // in plot space + int tickSpace = (int) (styleManager.getAxisTickSpaceRatio() * workingSpace); // in plot space // where the tick should begin in the working space in pixels int margin = Utils.getTickStartOffset(workingSpace, tickSpace); // in plot space double gridStep = getGridStepForDecimal(tickSpace); // get all categories - Set<Object> categories = new TreeSet<Object>(); + List<Object> categories = new ArrayList<Object>(); for (Series series : chartPainter.getAxisPair().getSeriesMap().values()) { Iterator<?> xItr = series.getXData().iterator(); @@ -71,7 +71,9 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator { else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.String) { x = xItr.next(); } - categories.add(x); + if (!categories.contains(x)) { + categories.add(x); + } } } 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 dd3ed68526ebf505b20e3f8062c012699abca317..7fc2e0e3e3d0d7d826e7f7713c9a8727dbe34465 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 @@ -18,10 +18,10 @@ package com.xeiam.xchart.internal.chartpart; import java.awt.Graphics2D; import java.awt.geom.Path2D; import java.awt.geom.Rectangle2D; +import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; -import java.util.Set; -import java.util.TreeSet; +import java.util.List; import com.xeiam.xchart.Series; import com.xeiam.xchart.StyleManager; @@ -47,22 +47,25 @@ public class PlotContentBarChart extends PlotContent { Rectangle2D bounds = plot.getBounds(); StyleManager styleManager = plot.getChartPainter().getStyleManager(); - + // X-Axis - int xTickSpace = (int)(styleManager.getAxisTickSpaceRatio() * bounds.getWidth()); + int xTickSpace = (int) (styleManager.getAxisTickSpaceRatio() * bounds.getWidth()); int xLeftMargin = Utils.getTickStartOffset((int) bounds.getWidth(), xTickSpace); // Y-Axis - int yTickSpace = (int)(styleManager.getAxisTickSpaceRatio() * bounds.getHeight()); + int yTickSpace = (int) (styleManager.getAxisTickSpaceRatio() * bounds.getHeight()); int yTopMargin = Utils.getTickStartOffset((int) bounds.getHeight(), yTickSpace); // get all categories - Set<Object> categories = new TreeSet<Object>(); + List<Object> categories = new ArrayList<Object>(); for (Series series : getChartPainter().getAxisPair().getSeriesMap().values()) { Iterator<?> xItr = series.getXData().iterator(); while (xItr.hasNext()) { - categories.add(xItr.next()); + Object object = xItr.next(); + if (!categories.contains(object)) { + categories.add(object); + } } } int numBars = categories.size();