From 43e96aa94763b810d41ab8b10459f27b210ce37f Mon Sep 17 00:00:00 2001 From: Tim Molter <tim.molter@gmail.com> Date: Mon, 4 Mar 2013 13:25:47 +0100 Subject: [PATCH] added sanity check for log data - cannot be less than zero --- .../xeiam/xchart/demo/charts/line/LineChart01.java | 13 ++++++------- xchart/src/main/java/com/xeiam/xchart/Chart.java | 9 ++++++++- .../style/SeriesColorMarkerLineStyleCycler.java | 3 ++- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart01.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart01.java index 1acc6a6b..2c5d98be 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart01.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart01.java @@ -20,7 +20,6 @@ import java.util.List; import com.xeiam.xchart.Chart; import com.xeiam.xchart.ChartBuilder; -import com.xeiam.xchart.Series; import com.xeiam.xchart.SwingWrapper; import com.xeiam.xchart.demo.charts.ExampleChart; import com.xeiam.xchart.style.StyleManager.LegendPosition; @@ -47,11 +46,11 @@ public class LineChart01 implements ExampleChart { public Chart getChart() { // generates Log data - List<Number> xData1 = new ArrayList<Number>(); - List<Number> yData1 = new ArrayList<Number>(); - for (int i = 0; i <= 10; i++) { - xData1.add(i); - yData1.add(Math.pow(10, i)); + List<Number> xData = new ArrayList<Number>(); + List<Number> yData = new ArrayList<Number>(); + for (int i = -3; i <= 3; i++) { + xData.add(i); + yData.add(Math.pow(10, i) - 1); } // Create Chart @@ -63,7 +62,7 @@ public class LineChart01 implements ExampleChart { chart.getStyleManager().setYAxisLogarithmic(true); // Series - Series series = chart.addSeries("10^x", xData1, yData1); + chart.addSeries("10^x", xData, yData); return chart; } diff --git a/xchart/src/main/java/com/xeiam/xchart/Chart.java b/xchart/src/main/java/com/xeiam/xchart/Chart.java index de59ed4f..db6b70eb 100644 --- a/xchart/src/main/java/com/xeiam/xchart/Chart.java +++ b/xchart/src/main/java/com/xeiam/xchart/Chart.java @@ -17,6 +17,7 @@ package com.xeiam.xchart; import java.awt.Graphics2D; import java.awt.RenderingHints; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -97,10 +98,16 @@ public class Chart { */ public void paint(Graphics2D g) { - // Sanity check + // Sanity checks if (axisPair.getSeriesMap().isEmpty()) { throw new RuntimeException("No series defined for Chart!!!"); } + if (getStyleManager().isXAxisLogarithmic() && axisPair.getxAxis().getMin().compareTo(BigDecimal.ZERO) <= 0) { + throw new IllegalArgumentException("Series data cannot be less or equal to zero for a logarithmic X-Axis!!!"); + } + if (getStyleManager().isYAxisLogarithmic() && axisPair.getyAxis().getMin().compareTo(BigDecimal.ZERO) <= 0) { + throw new IllegalArgumentException("Series data cannot be less or equal to zero for a logarithmic Y-Axis!!!"); + } g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // global rendering hint g.setColor(styleManager.getChartBackgroundColor()); diff --git a/xchart/src/main/java/com/xeiam/xchart/style/SeriesColorMarkerLineStyleCycler.java b/xchart/src/main/java/com/xeiam/xchart/style/SeriesColorMarkerLineStyleCycler.java index 974cde0c..c9625302 100644 --- a/xchart/src/main/java/com/xeiam/xchart/style/SeriesColorMarkerLineStyleCycler.java +++ b/xchart/src/main/java/com/xeiam/xchart/style/SeriesColorMarkerLineStyleCycler.java @@ -25,9 +25,10 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.Map; - /** * Cycles through the different colors, markers, and strokes in a predetermined way + * <p> + * This is an internal class that should not be used be clients * * @author timmolter */ -- GitLab