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 558cc3210a80254747b86e26b9b57889b766989e..e70a6e3ca40cd2322482730f90eec21017a0e638 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 @@ -131,36 +131,24 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator { tickLocations.add(tickLabelPosition); } } - 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); + else { // Number or Date and more than 12 categories. divide up the axis tick space according to normal date oor number axis layout // generate all tickLabels and tickLocations from the first to last position - NumberFormatter numberFormatter = null; - DateFormatter dateFormatter = null; if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Number) { - numberFormatter = new NumberFormatter(styleManager); + + AxisTickNumericalCalculator axisTickNumericalCalculator = new AxisTickNumericalCalculator(axisDirection, workingSpace, minValue, maxValue, styleManager); + tickLabels = axisTickNumericalCalculator.getTickLabels(); + tickLocations = axisTickNumericalCalculator.getTickLocations(); + } else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Date) { - dateFormatter = new DateFormatter(chartPainter.getStyleManager()); - } - - 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, axisDirection)); - } - else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Date) { - long span = (long) Math.abs(maxValue - minValue); // in data space - long gridStepHint = (long) (span / (double) tickSpace * styleManager.getXAxisTickMarkSpacingHint()); - long timeUnit = dateFormatter.getTimeUnit(gridStepHint); - tickLabels.add(dateFormatter.formatDate(tickPosition, timeUnit)); - } - double tickLabelPosition = margin + ((tickPosition - minValue) / (maxValue - minValue) * tickSpace); - tickLocations.add(tickLabelPosition); + AxisTickDateCalculator axisTickDateCalculator = new AxisTickDateCalculator(axisDirection, workingSpace, minValue, maxValue, styleManager); + tickLabels = axisTickDateCalculator.getTickLabels(); + tickLocations = axisTickDateCalculator.getTickLocations(); } + } } 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 48d6efb99919cfb73f96b9b05bbfc1675d601b9b..fdbad4104d3119180b012cccd0a154bf60e6d8ec 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 @@ -74,8 +74,10 @@ 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)) { + // System.out.println(tickPosition); String tickLabel = numberFormatter.formatNumber(tickPosition, minValue, maxValue, axisDirection); // System.out.println(tickLabel); + tickLabels.add(tickLabel); // here we convert tickPosition finally to plot space, i.e. pixels double tickLabelPosition = margin + ((tickPosition.doubleValue() - minValue) / (maxValue - minValue) * tickSpace); 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 750f538be4545e74edbe2ea6f6ebca24a8e8de47..2264d2d051f301800f145a284a5199b3c788c646 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 @@ -133,6 +133,7 @@ public class NumberFormatter { else { decimalPattern = getFormatPattern(value, min, max); } + // System.out.println(decimalPattern); DecimalFormat normalFormat = (DecimalFormat) numberFormat; normalFormat.applyPattern(decimalPattern);