From a80600c847d06f5cc4faf6fbe6eb6287dd01274d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georg=20Gra=C3=9Fnick?= Date: Sun, 6 Oct 2019 17:47:49 +0200 Subject: [PATCH 1/6] Cancel rasterization on empty data set --- .../inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java index 3529dbb..78812fd 100644 --- a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java +++ b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java @@ -44,6 +44,10 @@ public class ScatterPlotRasterizer implements Rasterizer { PointListContainer data = scatterPlot.getDataSet(); + if (data.getSize() < 1 ) { + throw new RuntimeException("Supplied data was empty"); + } + final int cellWidth = canvas.getCellWidth(); final int cellHeight = canvas.getCellHeight(); final int xAxisStepWidth = cellWidth * X_AXIS_STEP_WIDTH; -- GitLab From 779b88431bebf09abbe3f95456aeef7c9e698abd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georg=20Gra=C3=9Fnick?= Date: Sun, 6 Oct 2019 18:08:42 +0200 Subject: [PATCH 2/6] Fix scaling once again --- .../mci/brailleplot/rendering/ScatterPlotRasterizer.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java index 78812fd..d12e9a1 100644 --- a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java +++ b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java @@ -120,8 +120,8 @@ public class ScatterPlotRasterizer implements Rasterizer { // 3. Calculate scaling Rectangle plotArea = printableArea; - int xDots = plotArea.intWrapper().getWidth(); - int yDots = plotArea.intWrapper().getHeight(); + int xDots = plotArea.intWrapper().getWidth() - 1; + int yDots = plotArea.intWrapper().getHeight() - 1; int xMin = ((int) Math.ceil(data.getMinX())); int yMin = ((int) Math.ceil(data.getMinY())); @@ -131,8 +131,8 @@ public class ScatterPlotRasterizer implements Rasterizer { int xRange = Math.abs(xMax - xMin); int yRange = Math.abs(yMax - yMin); - double xRatio = Math.floor((double) xDots / (double) xRange); - double yRatio = Math.floor((double) yDots / (double) yRange); + double xRatio = ((double) xDots / (double) xRange); + double yRatio = ((double) yDots / (double) yRange); int xOrigin = plotArea.intWrapper().getX(); int yOrigin = plotArea.intWrapper().getY() + plotArea.intWrapper().getHeight(); -- GitLab From 2e509c225d8c9a8748c405be6484a7ba5ad317b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georg=20Gra=C3=9Fnick?= Date: Sun, 6 Oct 2019 18:12:19 +0200 Subject: [PATCH 3/6] Fix tick count calculation --- .../inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java index d12e9a1..f64ad28 100644 --- a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java +++ b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java @@ -159,7 +159,7 @@ public class ScatterPlotRasterizer implements Rasterizer { // TODO Transfer to separate method Map xAxisLabels = new HashMap<>(); xAxis.setLabels(xAxisLabels); - final int xAxisTickCount = xDots / xAxisStepWidth; + final int xAxisTickCount = xDots / xAxisStepWidth + 1; char label = LEGEND_TICK_START_CHAR; for (int x = 0; x < xAxisTickCount; x++) { xAxisLabels.put(x, String.valueOf(label)); @@ -175,7 +175,7 @@ public class ScatterPlotRasterizer implements Rasterizer { Map yAxisLabels = new HashMap<>(); yAxis.setLabels(yAxisLabels); - final int yAxisTickCount = yDots / yAxisStepWidth; + final int yAxisTickCount = yDots / yAxisStepWidth + 1; label = getStartChar(yAxisTickCount); for (int y = 0; y < yAxisTickCount; y++) { yAxisLabels.put(y, String.valueOf(label)); -- GitLab From 5f3076a5684a71d8d4ac77b586ea31ca8a55cc21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georg=20Gra=C3=9Fnick?= Date: Sun, 6 Oct 2019 19:47:08 +0200 Subject: [PATCH 4/6] Fix tick labels value calculation --- .../inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java index f64ad28..465ec1e 100644 --- a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java +++ b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java @@ -164,7 +164,7 @@ public class ScatterPlotRasterizer implements Rasterizer { for (int x = 0; x < xAxisTickCount; x++) { xAxisLabels.put(x, String.valueOf(label)); int tickPos = x * xAxisStepWidth; - double val = tickPos / xRatio; + double val = xMin + tickPos / xRatio; LOG.trace("Adding x axis label {{},{}} for tick #{}", label, val, x); xAxisLegendSymbols.put(String.valueOf(label), formatDouble(val)); label++; @@ -180,7 +180,7 @@ public class ScatterPlotRasterizer implements Rasterizer { for (int y = 0; y < yAxisTickCount; y++) { yAxisLabels.put(y, String.valueOf(label)); int tickPos = y * yAxisStepWidth; - double val = tickPos / yRatio; + double val = yMin + tickPos / yRatio; LOG.trace("Adding y axis label {{},{}} for tick #{}", label, val, y); yAxisLegendSymbols.put(String.valueOf(label), formatDouble(val)); label--; -- GitLab From d0e28fb915d191eb5e4f1ffd23a28bc218452efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georg=20Gra=C3=9Fnick?= Date: Sun, 6 Oct 2019 19:47:33 +0200 Subject: [PATCH 5/6] Fix scaling once again --- .../rendering/ScatterPlotRasterizer.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java index 465ec1e..5a439cb 100644 --- a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java +++ b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java @@ -123,16 +123,16 @@ public class ScatterPlotRasterizer implements Rasterizer { int xDots = plotArea.intWrapper().getWidth() - 1; int yDots = plotArea.intWrapper().getHeight() - 1; - int xMin = ((int) Math.ceil(data.getMinX())); - int yMin = ((int) Math.ceil(data.getMinY())); - int xMax = ((int) Math.ceil(data.getMaxX())); - int yMax = ((int) Math.ceil(data.getMaxY())); + double xMin = data.getMinX(); + double yMin = data.getMinY(); + double xMax = data.getMaxX(); + double yMax = data.getMaxY(); - int xRange = Math.abs(xMax - xMin); - int yRange = Math.abs(yMax - yMin); + double xRange = Math.abs(xMax - xMin); + double yRange = Math.abs(yMax - yMin); - double xRatio = ((double) xDots / (double) xRange); - double yRatio = ((double) yDots / (double) yRange); + double xRatio = ((double) xDots / xRange); + double yRatio = ((double) yDots / yRange); int xOrigin = plotArea.intWrapper().getX(); int yOrigin = plotArea.intWrapper().getY() + plotArea.intWrapper().getHeight(); -- GitLab From f5940568fb08c8c4945e771e6468e66b9c118b30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georg=20Gra=C3=9Fnick?= Date: Sun, 6 Oct 2019 19:56:52 +0200 Subject: [PATCH 6/6] Fix checkstyle issue --- .../inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java index 5a439cb..692cd9f 100644 --- a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java +++ b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/ScatterPlotRasterizer.java @@ -44,7 +44,7 @@ public class ScatterPlotRasterizer implements Rasterizer { PointListContainer data = scatterPlot.getDataSet(); - if (data.getSize() < 1 ) { + if (data.getSize() < 1) { throw new RuntimeException("Supplied data was empty"); } -- GitLab