From bf0ae22f1bf7cc334e8c5b5fcf59906f0326a99b Mon Sep 17 00:00:00 2001 From: Tim Molter <tim.molter@gmail.com> Date: Sat, 26 Apr 2014 15:41:03 +0200 Subject: [PATCH] fixed some more decimal formatting issues --- .../xchart/demo/charts/date/DateChart04.java | 2 +- .../xchart/demo/charts/date/DateChart05.java | 2 +- .../xchart/demo/charts/line/LineChart02.java | 2 +- .../xchart/demo/charts/line/LineChart04.java | 2 +- .../demo/charts/scatter/ScatterChart02.java | 2 +- .../AxisTickNumericalCalculator.java | 5 ++++- .../internal/chartpart/NumberFormatter.java | 19 +++++-------------- 7 files changed, 14 insertions(+), 20 deletions(-) diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart04.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart04.java index cdc842dc..c3b2a527 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart04.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart04.java @@ -62,7 +62,7 @@ public class DateChart04 implements ExampleChart { e.printStackTrace(); } xData.add(date); - yData.add(Math.random() * i); + yData.add(Math.random() * i / 10000000000.0); } chart.addSeries("blah", xData, yData); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart05.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart05.java index 7bca4d32..39d9b804 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart05.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart05.java @@ -62,7 +62,7 @@ public class DateChart05 implements ExampleChart { e.printStackTrace(); } xData.add(date); - yData.add(Math.random() * i); + yData.add(Math.random() * i / -100000000); } chart.addSeries("blah", xData, yData); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java index 3bbdb7a3..070c412b 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java @@ -52,7 +52,7 @@ public class LineChart02 implements ExampleChart { for (int i = 0; i <= size; i++) { double radians = (Math.PI / (size / 2) * i); xData.add(i - size / 2); - yData.add(size * Math.sin(radians)); + yData.add(-.000001 * Math.sin(radians)); } // Create Chart diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java index 5ca26d73..cf367556 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java @@ -48,7 +48,7 @@ public class LineChart04 implements ExampleChart { chart.getStyleManager().setLegendVisible(false); for (int i = 0; i < 200; i++) { - Series series = chart.addSeries("A" + i, new double[] { Math.random(), Math.random() }, new double[] { Math.random() / 1000, Math.random() / 1000 }); + Series series = chart.addSeries("A" + i, new double[] { Math.random() / 1000, Math.random() / 1000 }, new double[] { Math.random() / -1000, Math.random() / -1000 }); series.setLineColor(SeriesColor.BLUE); series.setLineStyle(SeriesLineStyle.SOLID); series.setMarker(SeriesMarker.CIRCLE); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart02.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart02.java index a84211ce..0cab9ca4 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart02.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart02.java @@ -56,7 +56,7 @@ public class ScatterChart02 implements ExampleChart { for (int i = 0; i < size; i++) { double nextRandom = random.nextDouble(); xData.add(Math.pow(10, nextRandom * 10)); - yData.add(1000000000.0 + nextRandom + random.nextDouble()); + yData.add(1000000000.0 + nextRandom * 100); } // Create Chart 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 3467ca53..89d5d6f4 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 @@ -16,6 +16,7 @@ package com.xeiam.xchart.internal.chartpart; import java.math.BigDecimal; +import java.math.RoundingMode; import com.xeiam.xchart.StyleManager; import com.xeiam.xchart.internal.Utils; @@ -63,9 +64,11 @@ public class AxisTickNumericalCalculator extends AxisTickCalculator { BigDecimal gridStep = BigDecimal.valueOf(getNumericalGridStep(tickSpace)); BigDecimal firstPosition = BigDecimal.valueOf(getFirstPosition(gridStep.doubleValue())); + BigDecimal scaledfirstPosition = firstPosition.setScale(16, RoundingMode.HALF_UP); + // System.out.println("scaledfirstPosition: " + scaledfirstPosition); // chop off any double imprecision // generate all tickLabels and tickLocations from the first to last position - for (BigDecimal tickPosition = firstPosition; tickPosition.compareTo(BigDecimal.valueOf(maxValue + gridStep.doubleValue() * 0.2)) <= 0; tickPosition = tickPosition.add(gridStep)) { + for (BigDecimal tickPosition = scaledfirstPosition; tickPosition.compareTo(BigDecimal.valueOf(maxValue + gridStep.doubleValue() * 0.2)) <= 0; tickPosition = tickPosition.add(gridStep)) { tickLabels.add(numberFormatter.formatNumber(tickPosition.doubleValue(), minValue, maxValue)); // here we convert tickPosition finally to plot space, i.e. pixels 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 a8c97832..3fd3da4b 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 @@ -62,12 +62,12 @@ public class NumberFormatter { System.out.println("placeOfValue: " + placeOfValue); if (placeOfDifference <= 4 && placeOfDifference >= -4) { - System.out.println("getNormalDecimalPattern"); + // System.out.println("getNormalDecimalPattern"); return getNormalDecimalPatternPositive(placeOfValue, placeOfDifference); } else { - System.out.println("getScientificDecimalPattern"); - return getScientificDecimalPattern(placeOfValue, placeOfDifference); + // System.out.println("getScientificDecimalPattern"); + return getScientificDecimalPattern(); } } @@ -97,18 +97,9 @@ public class NumberFormatter { return sb.toString(); } - private String getScientificDecimalPattern(int placeOfValue, int placeOfDifference) { + private String getScientificDecimalPattern() { - StringBuilder sb = new StringBuilder(); - for (int i = placeOfValue; i >= 0; i--) { - sb.append("0"); - if (i == placeOfDifference) { - sb.append("."); - } - } - sb.append("E0"); - System.out.println(sb.toString()); - return sb.toString(); + return "0E0"; } /** -- GitLab