From 32e17f13327c417a4a1f169cfa2d94b8dac29ff4 Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Sat, 16 Dec 2023 16:27:41 +0530 Subject: [PATCH 01/12] refactor: Refactor codebase with some ui changes --- eclipse-formatter.xml | 315 +++++++++++++++ pom.xml | 18 +- .../github/manishdait/jplotlib/Jplotlib.java | 263 ++++++------ .../manishdait/jplotlib/chart/BarGraph.java | 60 --- .../jplotlib/chart/BarGraphBuilder.java | 101 ----- .../manishdait/jplotlib/chart/LineGraph.java | 91 ----- .../jplotlib/chart/LineGraphBuilder.java | 179 --------- .../manishdait/jplotlib/chart/PieChart.java | 57 --- .../jplotlib/chart/PieChartBuilder.java | 113 ------ .../jplotlib/chart/ScatterGraph.java | 76 ---- .../jplotlib/chart/ScatterGraphBuilder.java | 145 ------- .../chart/helper/ScatterGraphOptions.java | 33 -- .../jplotlib/charts/bar/BarGraph.java | 84 ++++ .../bar}/BarGraphOptions.java | 33 +- .../jplotlib/charts/bar/BarGraphPlotter.java | 149 +++++++ .../jplotlib/charts/bar/BarGraphStyle.java | 55 +++ .../helper/Graph.java} | 17 +- .../jplotlib/charts/helper/GraphPlotter.java | 88 ++++ .../helper/PlotLogger.java} | 32 +- .../{plotter => charts/helper}/Plotter.java | 15 +- .../jplotlib/charts/line/LineChart.java | 115 ++++++ .../line/LineChartOptions.java} | 70 ++-- .../charts/line/LineChartPlotter.java | 206 ++++++++++ .../line/LineChartStyle.java} | 95 +++-- .../jplotlib/charts/pie/PieChart.java | 77 ++++ .../pie}/PieChartOptions.java | 23 +- .../jplotlib/charts/pie/PieChartPlotter.java | 123 ++++++ .../jplotlib/charts/pie/PieChartStyle.java | 54 +++ .../jplotlib/charts/scatter/ScatterChart.java | 102 +++++ .../charts/scatter/ScatterChartOptions.java | 49 +++ .../charts/scatter/ScatterChartPlotter.java | 167 ++++++++ .../charts/scatter/ScatterChartStyle.java | 83 ++++ .../{Coordinates.java => CartesianData.java} | 77 ++-- .../manishdait/jplotlib/data/GraphData.java | 105 +++++ .../manishdait/jplotlib/data/SeriesData.java | 379 ------------------ .../manishdait/jplotlib/data/StyleData.java | 141 ------- .../BarSeries.java => data/util/Data.java} | 25 +- .../util/{DataDiff.java => DataDiffer.java} | 49 +-- .../jplotlib/data/util/PreProcessor.java | 165 -------- .../color/LibColor.java} | 10 +- .../color/PlotColor.java} | 6 +- .../line/Stroke.java} | 6 +- .../marker/Marker.java} | 6 +- .../internal/component/axis/Axis.java | 114 ------ .../internal/component/axis/AxisBuilder.java | 76 ---- .../internal/component/axis/Coordinate.java | 199 --------- .../internal/component/axis/Grid.java | 177 -------- .../internals/components/axis/Axis.java | 89 ++++ .../internals/components/axis/Border.java | 89 ++++ .../internals/components/axis/Config.java | 215 ++++++++++ .../internals/components/axis/Coordinate.java | 218 ++++++++++ .../internals/components/axis/Grid.java | 209 ++++++++++ .../components}/label/AxisLabel.java | 22 +- .../components}/label/TitleLabel.java | 30 +- .../components}/label/VerticalAxisLabel.java | 53 ++- .../util/AxisType.java | 67 ++-- .../util/ChartType.java | 48 ++- .../util/Constants.java | 64 +-- .../jplotlib/plotter/SeriesPlotter.java | 118 ------ .../manishdait/jplotlib/ui/BaseFrame.java | 74 ---- .../manishdait/jplotlib/ui/ChartPanel.java | 190 ++++----- .../github/manishdait/jplotlib/ui/Window.java | 76 ++++ .../manishdait/jplotlib/JplotlibTest.java | 83 +++- .../jplotlib/data/CoordinatesTest.java | 28 -- .../manishdait/jplotlib/data/DiffCalTest.java | 30 ++ .../jplotlib/data/util/DataDiffTest.java | 30 -- .../jplotlib/data/util/PreProcessorTest.java | 95 ----- .../components/axis/CoordinateTest.java | 32 ++ .../jplotlib/internals/util/AxisTypeTest.java | 16 + 69 files changed, 3451 insertions(+), 3048 deletions(-) create mode 100644 eclipse-formatter.xml mode change 100644 => 100755 src/main/java/io/github/manishdait/jplotlib/Jplotlib.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/chart/BarGraph.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/chart/BarGraphBuilder.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/chart/LineGraph.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/chart/LineGraphBuilder.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/chart/PieChart.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/chart/PieChartBuilder.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/chart/ScatterGraph.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/chart/ScatterGraphBuilder.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/chart/helper/ScatterGraphOptions.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraph.java rename src/main/java/io/github/manishdait/jplotlib/{chart/helper => charts/bar}/BarGraphOptions.java (56%) mode change 100644 => 100755 create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphPlotter.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphStyle.java rename src/main/java/io/github/manishdait/jplotlib/{chart/helper/LineGraphOptions.java => charts/helper/Graph.java} (75%) mode change 100644 => 100755 create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/helper/GraphPlotter.java rename src/main/java/io/github/manishdait/jplotlib/{chart/PieSeries.java => charts/helper/PlotLogger.java} (67%) rename src/main/java/io/github/manishdait/jplotlib/{plotter => charts/helper}/Plotter.java (89%) mode change 100644 => 100755 create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/line/LineChart.java rename src/main/java/io/github/manishdait/jplotlib/{chart/ScatterSeries.java => charts/line/LineChartOptions.java} (56%) mode change 100644 => 100755 create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartPlotter.java rename src/main/java/io/github/manishdait/jplotlib/{chart/LineSeries.java => charts/line/LineChartStyle.java} (56%) mode change 100644 => 100755 create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChart.java rename src/main/java/io/github/manishdait/jplotlib/{chart/helper => charts/pie}/PieChartOptions.java (64%) mode change 100644 => 100755 create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartPlotter.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartStyle.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChart.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartOptions.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartPlotter.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartStyle.java rename src/main/java/io/github/manishdait/jplotlib/data/{Coordinates.java => CartesianData.java} (53%) mode change 100644 => 100755 create mode 100755 src/main/java/io/github/manishdait/jplotlib/data/GraphData.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/data/SeriesData.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/data/StyleData.java rename src/main/java/io/github/manishdait/jplotlib/{chart/BarSeries.java => data/util/Data.java} (76%) mode change 100644 => 100755 rename src/main/java/io/github/manishdait/jplotlib/data/util/{DataDiff.java => DataDiffer.java} (64%) mode change 100644 => 100755 delete mode 100644 src/main/java/io/github/manishdait/jplotlib/data/util/PreProcessor.java rename src/main/java/io/github/manishdait/jplotlib/{style/color/BaseColor.java => defaults/color/LibColor.java} (88%) mode change 100644 => 100755 rename src/main/java/io/github/manishdait/jplotlib/{style/color/BaseSeriesColor.java => defaults/color/PlotColor.java} (91%) mode change 100644 => 100755 rename src/main/java/io/github/manishdait/jplotlib/{style/line/BaseStroke.java => defaults/line/Stroke.java} (89%) mode change 100644 => 100755 rename src/main/java/io/github/manishdait/jplotlib/{style/marker/BaseMarker.java => defaults/marker/Marker.java} (89%) mode change 100644 => 100755 delete mode 100644 src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Axis.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/internal/component/axis/AxisBuilder.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Coordinate.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Grid.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Axis.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Border.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Config.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Coordinate.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Grid.java rename src/main/java/io/github/manishdait/jplotlib/{internal/component => internals/components}/label/AxisLabel.java (84%) mode change 100644 => 100755 rename src/main/java/io/github/manishdait/jplotlib/{internal/component => internals/components}/label/TitleLabel.java (82%) mode change 100644 => 100755 rename src/main/java/io/github/manishdait/jplotlib/{internal/component => internals/components}/label/VerticalAxisLabel.java (66%) mode change 100644 => 100755 rename src/main/java/io/github/manishdait/jplotlib/{internal => internals}/util/AxisType.java (64%) mode change 100644 => 100755 rename src/main/java/io/github/manishdait/jplotlib/{internal => internals}/util/ChartType.java (78%) mode change 100644 => 100755 rename src/main/java/io/github/manishdait/jplotlib/{internal => internals}/util/Constants.java (61%) mode change 100644 => 100755 delete mode 100644 src/main/java/io/github/manishdait/jplotlib/plotter/SeriesPlotter.java delete mode 100644 src/main/java/io/github/manishdait/jplotlib/ui/BaseFrame.java mode change 100644 => 100755 src/main/java/io/github/manishdait/jplotlib/ui/ChartPanel.java create mode 100755 src/main/java/io/github/manishdait/jplotlib/ui/Window.java mode change 100644 => 100755 src/test/java/io/github/manishdait/jplotlib/JplotlibTest.java delete mode 100644 src/test/java/io/github/manishdait/jplotlib/data/CoordinatesTest.java create mode 100755 src/test/java/io/github/manishdait/jplotlib/data/DiffCalTest.java delete mode 100644 src/test/java/io/github/manishdait/jplotlib/data/util/DataDiffTest.java delete mode 100644 src/test/java/io/github/manishdait/jplotlib/data/util/PreProcessorTest.java create mode 100755 src/test/java/io/github/manishdait/jplotlib/internals/components/axis/CoordinateTest.java create mode 100755 src/test/java/io/github/manishdait/jplotlib/internals/util/AxisTypeTest.java diff --git a/eclipse-formatter.xml b/eclipse-formatter.xml new file mode 100644 index 0000000..7f8c57d --- /dev/null +++ b/eclipse-formatter.xml @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index a08ff29..7f99ab6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.manishdait jplotlib - 1.0.0 + 1.1.0-beta jplotlib https://github.com/ManishDait/jplotlib @@ -24,6 +24,22 @@ 4.11 test + + + org.apache.logging.log4j + log4j-api + 2.7 + + + org.apache.logging.log4j + log4j-core + 2.7 + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.7 + diff --git a/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java b/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java old mode 100644 new mode 100755 index 88653f2..f6f896d --- a/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java +++ b/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java @@ -27,20 +27,21 @@ import java.util.ArrayList; import java.util.List; -import io.github.manishdait.jplotlib.chart.BarGraph; -import io.github.manishdait.jplotlib.chart.LineGraph; -import io.github.manishdait.jplotlib.chart.PieChart; -import io.github.manishdait.jplotlib.chart.ScatterGraph; -import io.github.manishdait.jplotlib.chart.helper.BarGraphOptions; -import io.github.manishdait.jplotlib.chart.helper.LineGraphOptions; -import io.github.manishdait.jplotlib.chart.helper.PieChartOptions; -import io.github.manishdait.jplotlib.chart.helper.ScatterGraphOptions; -import io.github.manishdait.jplotlib.data.Coordinates; -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.data.StyleData; +import io.github.manishdait.jplotlib.charts.bar.BarGraph; +import io.github.manishdait.jplotlib.charts.bar.BarGraphOptions; +import io.github.manishdait.jplotlib.charts.helper.Graph; +import io.github.manishdait.jplotlib.charts.line.LineChart; +import io.github.manishdait.jplotlib.charts.line.LineChartOptions; +import io.github.manishdait.jplotlib.charts.pie.PieChart; +import io.github.manishdait.jplotlib.charts.pie.PieChartOptions; +import io.github.manishdait.jplotlib.charts.scatter.ScatterChart; +import io.github.manishdait.jplotlib.charts.scatter.ScatterChartOptions; +import io.github.manishdait.jplotlib.data.GraphData; import io.github.manishdait.jplotlib.error.ArrayLengthMissMatchException; -import io.github.manishdait.jplotlib.internal.util.AxisType; -import io.github.manishdait.jplotlib.ui.BaseFrame; +import io.github.manishdait.jplotlib.data.CartesianData; +import io.github.manishdait.jplotlib.internals.components.axis.Config; +import io.github.manishdait.jplotlib.internals.util.AxisType; +import io.github.manishdait.jplotlib.ui.Window; /** * Jplotlib is a Java library for creating and displaying different types of @@ -68,82 +69,66 @@ * @version 1.0.0 */ -public class Jplotlib implements - LineGraphOptions, - ScatterGraphOptions, - BarGraphOptions, +public final class Jplotlib implements + LineChartOptions, + ScatterChartOptions, + BarGraphOptions, PieChartOptions { - private BaseFrame baseFrame; - private SeriesData seriesData; + protected Window window; + protected Config axisConfiguration; + protected List graphs; + - private List styleData; public Jplotlib() { - this.seriesData = new SeriesData(); - this.styleData = new ArrayList(); + this.axisConfiguration = new Config(); + this.graphs = new ArrayList<>(); } public final void show() { - if(seriesData.getCoordinates() == null && seriesData.getPieData() == null) { + if(((axisConfiguration.getTotalXLength() == 0 || axisConfiguration.getTotalYLength() == 0) && axisConfiguration.getBarLabelLen() == 0) && !axisConfiguration.getAxisType().equals(AxisType.PIE)) { return; } - this.baseFrame = new BaseFrame(this.seriesData, this.styleData); - this.baseFrame.setVisible(true); + this.window = new Window(this.axisConfiguration, this.graphs); + this.window.setVisible(true); } public final void title(final String str) { - this.seriesData.setTitle(str); + this.axisConfiguration.setTitle(str); } public final void xLabel(final String str) { - this.seriesData.setxLabel(str); + this.axisConfiguration.setxLabel(str); } public final void yLabel(final String str) { - this.seriesData.setyLabel(str); + this.axisConfiguration.setyLabel(str); } public final void grid() { - this.seriesData.setxGrid(true); - this.seriesData.setyGrid(true); + this.axisConfiguration.setxGrid(true); + this.axisConfiguration.setyGrid(true); } public final void grid(final boolean xGrid, final boolean yGrid) { - this.seriesData.setxGrid(xGrid); - this.seriesData.setyGrid(yGrid); - } - - private List setCoordinates( - final double[] xPoints, - final double[] yPoints, - AxisType axisType - ) { - List currCoordinates = new ArrayList<>(); - if (this.seriesData.getCoordinates() != null) { - currCoordinates = this.seriesData.getCoordinates(); - } + this.axisConfiguration.setxGrid(xGrid); + this.axisConfiguration.setyGrid(yGrid); + } + - Coordinates coordinates = new Coordinates(); - coordinates.setxPoints(xPoints); - coordinates.setyPoints(yPoints); - currCoordinates.add(coordinates); + + private void setAxisType(AxisType axisType) { if ( - seriesData.getAxisType() == null || - seriesData.getAxisType().getPriority() < axisType.getPriority() + axisConfiguration.getAxisType() == null || + axisConfiguration.getAxisType().getPriority() < axisType.getPriority() ) { - seriesData.setAxisType(axisType); + axisConfiguration.setAxisType(axisType); } - - return currCoordinates; - } - - private void setLabel(String[] label) { - seriesData.setLabel(label); } - private double[] tempArr(final double[] yPoints) { + private double[] createTempArr(final double[] yPoints) { double[] arr = new double[yPoints.length]; for (int i = 0; i < yPoints.length; i++) { arr[i] = i; @@ -151,96 +136,126 @@ private double[] tempArr(final double[] yPoints) { return arr; } - // LINE GRAPH + private void setAxisParameters(double[] xPoints, double[] yPoints) { + setXData(xPoints); + setYData(yPoints); + } + + private void setAxisParameters(String[] labels, double[] data, boolean isX) { + if (isX) { + setXData(data); + } else { + setYData(data); + } + + for (String label : labels) { + if (!GraphData.getMap().containsKey(label)) { + GraphData.getMap().put(label, GraphData.getIndx()); + GraphData.setIndx(GraphData.getIndx() + 1); + } + } + + GraphData.setX(isX); + axisConfiguration.setBarLabelLen(GraphData.getMap().size()); + } + + private void setYData(double[] data) { + double max = axisConfiguration.getyUpperBound(); + double min = axisConfiguration.getyLowerBound(); + for (double i : data) { + max = max > i ? max : i; + min = min < i ? min : i; + } + axisConfiguration.setyUpperBound((int)max); + axisConfiguration.setyLowerBound((int)min); + axisConfiguration.setMaxYLength(axisConfiguration.getMaxYLength() > data.length ? axisConfiguration.getMaxYLength() : data.length); + axisConfiguration.setTotalYLength(axisConfiguration.getTotalYLength() + data.length); + } + + private void setXData(double[] data) { + double max = axisConfiguration.getxUpperBound(); + double min = axisConfiguration.getxLowerBound(); + for (double i : data) { + max = max > i? max:i; + min = min < i? min:i; + } + axisConfiguration.setxUpperBound((int)max); + axisConfiguration.setxLowerBound((int)min); + axisConfiguration.setMaxXLength(axisConfiguration.getMaxXLength() > data.length? axisConfiguration.getMaxXLength():data.length); + axisConfiguration.setTotalXLength(axisConfiguration.getTotalXLength() + data.length); + } + + //Line Chart @Override - public final LineGraph plot( - final double[] yPoints - ) { - double[] temp = tempArr(yPoints); - List coordinates = setCoordinates( - temp, - yPoints, - AxisType.PLOT - ); - this.seriesData.setCoordinates(coordinates); - LineGraph lineGraph = new LineGraph(this.styleData); - return lineGraph; + public LineChart plot(double[] yPoints) { + double[] xPoints = createTempArr(yPoints); + setAxisType(AxisType.PLOT); + setAxisParameters(xPoints, yPoints); + LineChart lineChart = new LineChart(new CartesianData(xPoints, yPoints)); + graphs.add(lineChart); + return lineChart; } @Override - public final LineGraph plot( - final double[] xPoints, - final double[] yPoints - ) { + public LineChart plot(double[] xPoints, double[] yPoints) { if (xPoints.length != yPoints.length) { - throw new ArrayLengthMissMatchException( - "xPoints and yPoints must be of same size." - ); + throw new ArrayLengthMissMatchException("The length of xPoints is not equal to the yPoints."); } - - List coordinates = setCoordinates( - xPoints, - yPoints, - AxisType.PLOT - ); - this.seriesData.setCoordinates(coordinates); - LineGraph lineGraph = new LineGraph(this.styleData); - return lineGraph; + setAxisType(AxisType.PLOT); + setAxisParameters(xPoints, yPoints); + LineChart lineChart = new LineChart(new CartesianData(xPoints, yPoints)); + graphs.add(lineChart); + return lineChart; } - // SCATTER GRAPH + // Scatter Chart @Override - public final ScatterGraph scatter( - final double[] xPoints, - final double[] yPoints - ) { + public ScatterChart scatter(double[] xPoints, double[] yPoints) { if (xPoints.length != yPoints.length) { - throw new ArrayLengthMissMatchException( - "xPoints and yPoints must be of same size." - ); + throw new ArrayLengthMissMatchException("The length of xPoints is not equal to the yPoints."); } - - List coordinates = setCoordinates( - xPoints, - yPoints, - AxisType.PLOT - ); - this.seriesData.setCoordinates(coordinates); - ScatterGraph scatterGraph = new ScatterGraph(this.styleData); - return scatterGraph; + setAxisType(AxisType.PLOT); + setAxisParameters(xPoints, yPoints); + ScatterChart scatterChart = new ScatterChart(new CartesianData(xPoints, yPoints)); + graphs.add(scatterChart); + return scatterChart; } - // BAR GRAPH + // Bar Graph @Override - public final BarGraph bar(String[] xLabels, double[] yPoints) { - if (xLabels.length != yPoints.length) { - throw new ArrayLengthMissMatchException( - "yPoints and label must be of same size." - ); + public BarGraph bar(String[] labels, double[] points) { + if (labels.length != points.length) { + throw new ArrayLengthMissMatchException("The length of labels is not equal to the data points."); } - - List coordinates = setCoordinates( - tempArr(yPoints), - yPoints, - AxisType.BAR - ); - setLabel(xLabels); - this.seriesData.setCoordinates(coordinates); - BarGraph barGraph = new BarGraph(styleData); + setAxisType(AxisType.BAR); + setAxisParameters(labels, points, false); + BarGraph barGraph = new BarGraph(new GraphData(labels, points)); + graphs.add(barGraph); + return barGraph; + } + + @Override + public BarGraph barh(String[] labels, double[] points) { + if (labels.length != points.length) { + throw new ArrayLengthMissMatchException("The length of labels is not equal to the data points."); + } + setAxisType(AxisType.BAR); + setAxisParameters(labels, points, true); + BarGraph barGraph = new BarGraph(new GraphData(labels, points)); + graphs.add(barGraph); return barGraph; } - // PIE CHART + // Pie Chart @Override - public final PieChart pie(double[] dataPoints) { - this.seriesData.setAxisType(AxisType.PIE); - this.seriesData.setPieData(dataPoints); - PieChart pieChart = new PieChart(styleData); + public PieChart pie(double[] dataPoints) { + setAxisType(AxisType.PIE); + PieChart pieChart = new PieChart(new GraphData(null, dataPoints)); + graphs.add(pieChart); return pieChart; } - } diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/BarGraph.java b/src/main/java/io/github/manishdait/jplotlib/chart/BarGraph.java deleted file mode 100644 index ddaef9f..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/chart/BarGraph.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.chart; - -import java.awt.Color; -import java.util.List; - -import io.github.manishdait.jplotlib.data.StyleData; -import io.github.manishdait.jplotlib.internal.util.ChartType; - - -public class BarGraph { - - private BarSeries barSeries; - private List styleDatas; - - public BarGraph(List styleDatas) { - this.barSeries = new BarSeries(); - this.styleDatas = styleDatas; - } - - public BarGraph color(Color color) { - barSeries.setColor(color); - return this; - } - - private BarSeries getMeta() { - return this.barSeries; - } - - public void build() { - StyleData styleData = new StyleData(); - styleData.setChartType(ChartType.BAR); - styleData.setBarSeries(this.getMeta()); - this.styleDatas.add(styleData); - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/BarGraphBuilder.java b/src/main/java/io/github/manishdait/jplotlib/chart/BarGraphBuilder.java deleted file mode 100644 index 609909a..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/chart/BarGraphBuilder.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.chart; - -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; - -import javax.swing.JPanel; - -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.plotter.Plotter; -import io.github.manishdait.jplotlib.style.color.BaseSeriesColor; - - -public class BarGraphBuilder implements Plotter { - - private Graphics2D g; - private JPanel context; - private SeriesData seriesData; - private BarSeries barSeries; - private int indx; - - public BarGraphBuilder( - Graphics g, - JPanel context, - SeriesData seriesData, - BarSeries barSeries, - int indx - ) { - this.g = (Graphics2D) g; - this.context = context; - this.seriesData = seriesData; - this.barSeries = barSeries; - this.indx = indx; - } - - @Override - public void draw() { - double[] yPoints = this.seriesData.getCoordinates().get(indx).getyPoints(); - - this.g.setRenderingHint( - RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON - ); - - Color color = barSeries.getColor(); - if(color == null) { - color = BaseSeriesColor.getColor(indx); - } - - this.g.setColor(color); - - int yLowerBound = seriesData.getyLowerBound(); - - int xIncrement = seriesData.getxIncrement(); - int xValDiff = context.getWidth() / (yPoints.length * 2); - - int yIncrement = seriesData.getyIncrement(); - int yValDiff = seriesData.getyValDiff(); - - int extraSpace = (int) (Math.max(xIncrement, yIncrement) * 0.25); - - for(int i = 0; i < yPoints.length; i++){ - int x = (xIncrement * (i * 2 + 1)) - xValDiff / 2; - int y = context.getHeight() - ((int) (yIncrement * (yPoints[i] - yLowerBound)) / yValDiff); - int h = (int) (yIncrement * (yPoints[i] - yLowerBound)) / yValDiff; - - this.g.fillRect( - x , - y - extraSpace, - xValDiff, - h + extraSpace - ); - } - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/LineGraph.java b/src/main/java/io/github/manishdait/jplotlib/chart/LineGraph.java deleted file mode 100644 index cde5bca..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/chart/LineGraph.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.chart; - -import java.awt.Color; -import java.util.List; - -import io.github.manishdait.jplotlib.data.StyleData; -import io.github.manishdait.jplotlib.internal.util.ChartType; -import io.github.manishdait.jplotlib.style.line.BaseStroke; -import io.github.manishdait.jplotlib.style.marker.BaseMarker; - - -public class LineGraph { - - private LineSeries lineSeries; - private List styleDatas; - - public LineGraph(List styleDatas) { - this.lineSeries = new LineSeries(); - this.styleDatas = styleDatas; - } - - public LineGraph marker(BaseMarker marker) { - marker = marker == null ? BaseMarker.NONE : marker; - lineSeries.setMarker(marker); - return this; - } - - public LineGraph color(Color color) { - this.lineSeries.setColor(color); - return this; - } - - public LineGraph markerColor(Color color) { - this.lineSeries.setMarkerColor(color); - return this; - } - - public LineGraph lineStyle(BaseStroke style) { - style = style == null ? BaseStroke.NONE : style; - this.lineSeries.setLineStyle(style); - return this; - } - - public LineGraph lineWidth(float width) { - width = width < 1 ? 1 : width; - width = width > 15 ? 15 : width; - this.lineSeries.setLineWidth(width); - return this; - } - - public LineGraph markerSize(int size) { - lineSeries.setMarkerSize(size); - return this; - } - - private LineSeries getMeta() { - return this.lineSeries; - } - - public void build() { - StyleData styleData = new StyleData(); - styleData.setChartType(ChartType.LINE); - styleData.setLineSeries(this.getMeta()); - this.styleDatas.add(styleData); - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/LineGraphBuilder.java b/src/main/java/io/github/manishdait/jplotlib/chart/LineGraphBuilder.java deleted file mode 100644 index bc7f975..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/chart/LineGraphBuilder.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.chart; - -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.Shape; -import java.awt.geom.Line2D; - -import javax.swing.JPanel; - -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.internal.util.Constants; -import io.github.manishdait.jplotlib.plotter.Plotter; -import io.github.manishdait.jplotlib.style.color.BaseSeriesColor; -import io.github.manishdait.jplotlib.style.marker.BaseMarker; - - -public class LineGraphBuilder implements Plotter { - - private Graphics2D g; - private JPanel context; - private SeriesData seriesData; - private LineSeries lineSeries; - private int indx; - - public LineGraphBuilder( - Graphics g2, - JPanel context, - SeriesData seriesData, - LineSeries lineSeries, - int indx - ) { - this.g = (Graphics2D) g2; - this.context = context; - this.seriesData = seriesData; - this.lineSeries = lineSeries; - this.indx = indx; - } - - @Override - public void draw() { - double[] xPoints = this.seriesData.getCoordinates().get(indx).getxPoints(); - double[] yPoints = this.seriesData.getCoordinates().get(indx).getyPoints(); - - this.g.setRenderingHint( - RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON - ); - - int yValDiff = seriesData.getyValDiff(); - int xValDiff = seriesData.getxValDiff(); - - int xIncrement = seriesData.getxIncrement(); - int yIncrement = seriesData.getyIncrement(); - - int xLowerBound = seriesData.getxLowerBound(); - int yLowerBound = seriesData.getyLowerBound(); - - int extraSpace = (int) (Math.max(xIncrement, yIncrement) * 0.25); - - for(int i = 0 ; i < yPoints.length - 1; i++) { - float lineWidth = this.lineSeries.getLineWidth(); - - Color color = this.lineSeries.getColor(); - - if(color == null) { - color = BaseSeriesColor.getColor(indx); - } - - if(lineSeries.getMarkerColor() == null) { - lineSeries.setMarkerColor(color); - } - - this.g.setColor(color); - - switch (this.lineSeries.getLineStyle()) { - case NONE: - this.g.setStroke(new BasicStroke(lineWidth)); - break; - - case DASHED: - float[] dashPattern = {6F * (int) lineWidth, 6F * (int) lineWidth}; - BasicStroke dashedStroke = new BasicStroke( - lineWidth, BasicStroke.CAP_BUTT, - BasicStroke.JOIN_ROUND, - 0F, - dashPattern, - 0F - ); - g.setStroke(dashedStroke); - break; - - default: - this.g.setStroke(new BasicStroke(lineWidth)); - } - - - double x1 = (xIncrement * (xPoints[i] - xLowerBound)) / xValDiff; - double x2 = (xIncrement * (xPoints[i+1] - xLowerBound)) / xValDiff; - - double y1 = context.getHeight() - (yIncrement * (yPoints[i] - yLowerBound)) / yValDiff; - double y2 = context.getHeight() - (yIncrement * (yPoints[i+1] - yLowerBound)) / yValDiff; - - Shape l = new Line2D.Double( - x1 + extraSpace, - y1 - extraSpace, - x2 + extraSpace, - y2 - extraSpace - ); - - g.draw(l); - } - - if(this.lineSeries.getMarker() != BaseMarker.NONE){ - int scale = lineSeries.getMarkerSize() * Constants.MIN_MARKER_SCALE; - - if(scale < Constants.MIN_MARKER_SCALE || scale > Constants.MAX_MARKER_SCALE) { - scale = Constants.DEFAULT_MARKER_SCALE; - } - - for(int j = 0; j < yPoints.length; j++) { - g.setColor(lineSeries.getMarkerColor()); - int x = (int) (xIncrement * (xPoints[j] - xLowerBound)) / xValDiff - (scale/2); - int y = context.getHeight() - (int) (yIncrement * (yPoints[j] - yLowerBound)) / yValDiff - (scale/2); - switch (this.lineSeries.getMarker()) { - case CIRCLE: - this.g.fillOval( - x + extraSpace, - y - extraSpace, - scale, - scale - ); - break; - - case SQUARE: - this.g.fillRect( - x + extraSpace, - y - extraSpace, - scale, - scale - ); - break; - - default: - throw new IllegalArgumentException( - "Unknown marker type: " + lineSeries.getMarker() - ); - } - } - } - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/PieChart.java b/src/main/java/io/github/manishdait/jplotlib/chart/PieChart.java deleted file mode 100644 index 0300029..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/chart/PieChart.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.chart; - -import java.awt.Color; -import java.util.List; - -import io.github.manishdait.jplotlib.data.StyleData; -import io.github.manishdait.jplotlib.internal.util.ChartType; - - -public class PieChart { - - private List styleDatas; - private PieSeries pieSeries; - - public PieChart(List styleDatas) { - this.styleDatas = styleDatas; - this.pieSeries = new PieSeries(); - } - - public PieChart color(Color[] color) { - this.pieSeries.setColor(color); - return this; - } - - public void build() { - StyleData styleData = new StyleData(); - styleData.setChartType(ChartType.PIE); - styleData.setPieSeries(this.pieSeries); - styleDatas.clear(); - styleDatas.add(styleData); - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/PieChartBuilder.java b/src/main/java/io/github/manishdait/jplotlib/chart/PieChartBuilder.java deleted file mode 100644 index 1c395b6..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/chart/PieChartBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.chart; - -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; - -import javax.swing.JPanel; - -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.plotter.Plotter; -import io.github.manishdait.jplotlib.style.color.BaseSeriesColor; - - -public class PieChartBuilder implements Plotter { - - private Graphics2D g; - private JPanel context; - private SeriesData seriesData; - private PieSeries pieSeries; - - public PieChartBuilder( - Graphics g, - JPanel context, - SeriesData seriesData, - PieSeries pieSeries - ) { - this.g = (Graphics2D) g; - this.context = context; - this.seriesData = seriesData; - this.pieSeries = pieSeries; - } - - @Override - public void draw() { - double[] data = seriesData.getPieData(); - - this.g.setRenderingHint( - RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON - ); - - int width = context.getWidth() / 2; - int height = context.getHeight() / 2; - - double sum = 0; - for(double i : data) { - sum += i; - } - - double diff = 360 / sum; - int radius = Math.min(context.getHeight(), context.getWidth()) / 2 - 10; - - int prevAng = 0; - - Color[] color = pieSeries.getColor(); - - for(int i = 0; i < data.length; i++){ - if(color == null) { - this.g.setColor(BaseSeriesColor.getColor(i)); - } else { - this.g.setColor(color[i]); - } - - this.g.fillArc( - width - radius, - height - radius, - radius * 2, - radius * 2, - prevAng, - (int) (data[i] * diff) - ); - - prevAng += (int) (data[i] * diff); - - if(i == data.length - 1 && prevAng != 360){ - this.g.fillArc( - width - radius, - height - radius, - radius * 2, - radius * 2, - prevAng, - 360 - prevAng - ); - } - } - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/ScatterGraph.java b/src/main/java/io/github/manishdait/jplotlib/chart/ScatterGraph.java deleted file mode 100644 index df72dad..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/chart/ScatterGraph.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.chart; - -import java.awt.Color; -import java.util.List; - -import io.github.manishdait.jplotlib.data.StyleData; -import io.github.manishdait.jplotlib.internal.util.ChartType; -import io.github.manishdait.jplotlib.style.marker.BaseMarker; - -public class ScatterGraph { - - private ScatterSeries scatterSeries; - private List styleDatas; - - public ScatterGraph(List styleDatas) { - this.scatterSeries = new ScatterSeries(); - this.styleDatas = styleDatas; - } - - public ScatterGraph marker(BaseMarker marker) { - marker = marker == null ? BaseMarker.NONE : marker; - scatterSeries.setMarker(marker); - return this; - } - - public ScatterGraph size(int[] size) { - scatterSeries.setScale(size); - return this; - } - - public ScatterGraph color(Color color) { - scatterSeries.setColor(color); - return this; - } - - public ScatterGraph alpha(float alpha) { - scatterSeries.setAlpha(alpha); - return this; - } - - public ScatterSeries getMeta() { - return this.scatterSeries; - } - - public void build() { - StyleData styleData = new StyleData(); - styleData.setChartType(ChartType.SCATTER); - styleData.setScatterSeries(scatterSeries);; - this.styleDatas.add(styleData); - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/ScatterGraphBuilder.java b/src/main/java/io/github/manishdait/jplotlib/chart/ScatterGraphBuilder.java deleted file mode 100644 index 2e1ab43..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/chart/ScatterGraphBuilder.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.chart; - -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; - -import javax.swing.JPanel; - -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.plotter.Plotter; -import io.github.manishdait.jplotlib.style.color.BaseSeriesColor; - - -public class ScatterGraphBuilder implements Plotter { - - private Graphics2D g; - private JPanel context; - private SeriesData seriesData; - private ScatterSeries scatterSeries; - private int indx; - - public ScatterGraphBuilder( - Graphics g, - JPanel context, - SeriesData seriesData, - ScatterSeries scatterSeries, - int indx - ) { - this.g = (Graphics2D) g; - this.context = context; - this.seriesData = seriesData; - this.scatterSeries = scatterSeries; - this.indx = indx; - } - - @Override - public void draw() { - double[] xPoints = this.seriesData.getCoordinates().get(indx).getxPoints(); - double[] yPoints = this.seriesData.getCoordinates().get(indx).getyPoints(); - - this.g.setRenderingHint( - RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON - ); - - int yValDiff = seriesData.getyValDiff(); - int xValDiff = seriesData.getxValDiff(); - - int xIncrement = seriesData.getxIncrement(); - int yIncrement = seriesData.getyIncrement(); - - int xLowerBound = seriesData.getxLowerBound(); - int yLowerBound = seriesData.getyLowerBound(); - - int extraSpace = (int) (Math.max(xIncrement, yIncrement) * 0.25); - - Color color = this.scatterSeries.getColor(); - - if(color == null) { - color = BaseSeriesColor.getColor(indx); - } - - color = setAlpa(color); - - this.g.setColor(color); - - - for(int i = 0; i < yPoints.length; i++) { - int scale = scatterSeries.getScale() == null - ? 10 : scatterSeries.getScale()[i] * 5; - - if(scale < 5 || scale > 50) { - scale = 10; - } - - int x = (int) (xIncrement * (xPoints[i] - xLowerBound)) / xValDiff - scale/2; - int y = context.getHeight() - (int) (yIncrement * (yPoints[i] - yLowerBound)) / yValDiff - scale/2; - switch (scatterSeries.getMarker()) { - case NONE: - case CIRCLE: - this.g.fillOval( - x + extraSpace, - y - extraSpace, - scale, - scale - ); - break; - - case SQUARE: - this.g.fillRect( - x + extraSpace, - y - extraSpace, - scale, - scale - ); - break; - - default: - System.out.println("Error"); - } - - } - } - - private Color setAlpa(Color color) { - Color currColor = color; - float alpha = scatterSeries.getAlpha(); - if(alpha < 0 || alpha > 1) { - alpha = 1; - } - Color changeColor = new Color( - currColor.getRed(), - currColor.getGreen(), - currColor.getBlue(), - (int) (alpha * 255) - ); - return changeColor; - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/helper/ScatterGraphOptions.java b/src/main/java/io/github/manishdait/jplotlib/chart/helper/ScatterGraphOptions.java deleted file mode 100644 index b1403aa..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/chart/helper/ScatterGraphOptions.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.chart.helper; - -import io.github.manishdait.jplotlib.chart.ScatterGraph; - -public interface ScatterGraphOptions { - - public ScatterGraph scatter(double[] xPoints, double[] yPoints); - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraph.java b/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraph.java new file mode 100755 index 0000000..42f0651 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraph.java @@ -0,0 +1,84 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.bar; + +import java.awt.Color; + +import io.github.manishdait.jplotlib.charts.helper.Graph; +import io.github.manishdait.jplotlib.data.util.Data; +import io.github.manishdait.jplotlib.internals.util.ChartType; + +/** + * The BarGraph class represents a bar graph configuration containing data + * values and style settings + * for rendering a bar chart within the JPlotLib library. + * It implements the Graph interface and provides methods to access and modify + * bar graph properties. + * + */ +public class BarGraph implements Graph { + + private Data values; + private BarGraphStyle style; + private static final ChartType CHART_TYPE = ChartType.BAR; + + /** + * Constructs a BarGraph object with the provided data values and default style + * settings. + * + * @param values + * The Data object containing values for the bar graph. + */ + public BarGraph(Data values) { + this.values = values; + this.style = new BarGraphStyle(); + } + + public Data getValues() { + return values; + } + + public void setValues(Data values) { + this.values = values; + } + + public BarGraphStyle getStyle() { + return style; + } + + public void setStyle(BarGraphStyle style) { + this.style = style; + } + + public ChartType getChartType() { + return CHART_TYPE; + } + + public BarGraph color(Color color) { + style.setColor(color); + return this; + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/helper/BarGraphOptions.java b/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphOptions.java old mode 100644 new mode 100755 similarity index 56% rename from src/main/java/io/github/manishdait/jplotlib/chart/helper/BarGraphOptions.java rename to src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphOptions.java index 30fb248..18274cf --- a/src/main/java/io/github/manishdait/jplotlib/chart/helper/BarGraphOptions.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphOptions.java @@ -22,12 +22,35 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.chart.helper; - -import io.github.manishdait.jplotlib.chart.BarGraph; +package io.github.manishdait.jplotlib.charts.bar; +/** + * The BarGraphOptions interface provides methods for creating vertical (bar) + * and horizontal (barh) bar graphs + * within the JPlotLib library. + * + */ public interface BarGraphOptions { - - public BarGraph bar(String[] xLabels, double[] yPoints); + /** + * Create a vertical bar graph. + * + * @param labels + * Array of labels or categories for the bars. + * @param points + * Array of numerical data points corresponding to the labels. + * @return BarGraph representing the vertical bar graph. + */ + BarGraph bar(String[] labels, double[] points); + + /** + * Create a horizontal bar graph. + * + * @param labels + * Array of labels or categories for the bars. + * @param points + * Array of numerical data points corresponding to the labels. + * @return BarGraph representing the horizontal bar graph. + */ + BarGraph barh(String[] labels, double[] points); } diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphPlotter.java b/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphPlotter.java new file mode 100755 index 0000000..a3b14b7 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphPlotter.java @@ -0,0 +1,149 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.bar; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; + +import javax.swing.JPanel; + +import io.github.manishdait.jplotlib.charts.helper.Plotter; +import io.github.manishdait.jplotlib.data.GraphData; +import io.github.manishdait.jplotlib.defaults.color.PlotColor; +import io.github.manishdait.jplotlib.internals.components.axis.Config; + +/** + * The BarGraphPlotter class implements the Plotter interface and is responsible + * for rendering + * BarGraph objects by drawing bars on a JPanel based on the provided axis + * configuration and data. + * It handles the visualization of vertical and horizontal bar graphs within the + * JPlotLib library. + * + */ +public class BarGraphPlotter implements Plotter { + + private Graphics2D g; + private JPanel context; + private Config axisConfiguration; + private BarGraph barGraph; + private int indx; + + /** + * Constructs a BarGraphPlotter with necessary rendering context, axis + * configuration, + * BarGraph data, and an index for styling. + * + * @param g + * The Graphics object used for rendering. + * @param context + * The JPanel where the bars will be drawn. + * @param axisConfiguration + * The configuration for rendering the axis. + * @param barGraph + * The BarGraph object containing data and style settings. + * @param indx + * The index used for styling multiple bars. + */ + public BarGraphPlotter( + Graphics g, + JPanel context, + Config axisConfiguration, + BarGraph barGraph, + int indx) { + this.g = (Graphics2D) g; + this.context = context; + this.axisConfiguration = axisConfiguration; + this.barGraph = barGraph; + this.indx = indx; + } + + @Override + public void draw() { + double[] datas = ((GraphData) this.barGraph.getValues()).getData(); + String[] labels = ((GraphData) this.barGraph.getValues()).getLabels(); + + this.g.setRenderingHint( + RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + Color color = barGraph.getStyle().getColor(); + if (color == null) { + color = PlotColor.getColor(indx); + } + + this.g.setColor(color); + + if (!GraphData.isX()) { + int yLowerBound = axisConfiguration.getyLowerBound(); + + int xIncrement = axisConfiguration.getxIncrement(); + int xValDiff = context.getWidth() / (axisConfiguration.getBarLabelLen() * 2); + + int yIncrement = axisConfiguration.getyIncrement(); + int yValDiff = axisConfiguration.getyValDiff(); + + int extraSpace = (int) (Math.min(xIncrement, yIncrement) * 0.5); + + for (int i = 0; i < datas.length; i++) { + int x = ((xIncrement * (GraphData.getMap().get(labels[i]) * 2 + 1)) - (xValDiff / 2)); + int y = context.getHeight() - ((int) (yIncrement * (datas[i] - yLowerBound)) / yValDiff); + int h = (int) (yIncrement * (datas[i] - yLowerBound)) / yValDiff; + + this.g.fillRect( + x, + y - extraSpace, + xValDiff, + h + extraSpace); + } + } else { + int xLowerBound = axisConfiguration.getxLowerBound(); + + int yIncrement = axisConfiguration.getyIncrement(); + int yValDiff = context.getHeight() / (axisConfiguration.getBarLabelLen() * 2); + + int xIncrement = axisConfiguration.getxIncrement(); + int xValDiff = axisConfiguration.getxValDiff(); + + int extraSpace = (int) (Math.min(xIncrement, yIncrement) * 0.5); + + for (int i = 0; i < datas.length; i++) { + int y = context.getHeight() - (yIncrement * (GraphData.getMap().get(labels[i]) * 2 + 1)) + - (yValDiff / 2); + int x = 1; + int w = (int) (xIncrement * (datas[i] - xLowerBound)) / xValDiff; + this.g.fillRect( + x, + y, + w + extraSpace, + yValDiff); + } + } + + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphStyle.java b/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphStyle.java new file mode 100755 index 0000000..2fe8987 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphStyle.java @@ -0,0 +1,55 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.bar; + +import java.awt.Color; + +/** + * The BarGraphStyle class encapsulates style properties specific to a bar + * graph, + * allowing customization of visual attributes for rendering bars within the + * JPlotLib library. + * + */ +public class BarGraphStyle { + + private Color color; + + /** + * Constructs a BarGraphStyle with default style settings. + */ + public BarGraphStyle() { + this.color = null; + } + + public Color getColor() { + return color; + } + + public void setColor(Color color) { + this.color = color; + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/helper/LineGraphOptions.java b/src/main/java/io/github/manishdait/jplotlib/charts/helper/Graph.java old mode 100644 new mode 100755 similarity index 75% rename from src/main/java/io/github/manishdait/jplotlib/chart/helper/LineGraphOptions.java rename to src/main/java/io/github/manishdait/jplotlib/charts/helper/Graph.java index 70b5df5..acfda91 --- a/src/main/java/io/github/manishdait/jplotlib/chart/helper/LineGraphOptions.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/helper/Graph.java @@ -22,13 +22,14 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.chart.helper; - -import io.github.manishdait.jplotlib.chart.LineGraph; - -public interface LineGraphOptions { - - public LineGraph plot(double[] xPoints, double[] yPoints); - public LineGraph plot(double[] yPoints); +package io.github.manishdait.jplotlib.charts.helper; +/** + * The Graph interface defines the contract for different types of graphs in + * JPlotLib charts. Implementing classes are expected to represent various types + * of graphs like bar graphs, line graphs, etc. + * This interface serves as a base for different graph implementations. + * + */ +public interface Graph { } diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/helper/GraphPlotter.java b/src/main/java/io/github/manishdait/jplotlib/charts/helper/GraphPlotter.java new file mode 100755 index 0000000..a0f6e80 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/helper/GraphPlotter.java @@ -0,0 +1,88 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.helper; + +import java.awt.Graphics; +import java.util.List; + +import javax.swing.JPanel; + +import io.github.manishdait.jplotlib.charts.bar.BarGraph; +import io.github.manishdait.jplotlib.charts.bar.BarGraphPlotter; +import io.github.manishdait.jplotlib.charts.line.LineChart; +import io.github.manishdait.jplotlib.charts.line.LineChartPlotter; +import io.github.manishdait.jplotlib.charts.pie.PieChart; +import io.github.manishdait.jplotlib.charts.pie.PieChartPlotter; +import io.github.manishdait.jplotlib.charts.scatter.ScatterChart; +import io.github.manishdait.jplotlib.charts.scatter.ScatterChartPlotter; +import io.github.manishdait.jplotlib.internals.components.axis.Config; +import io.github.manishdait.jplotlib.internals.util.AxisType; + +/** + * The GraphPlotter class is responsible for drawing plots based on the + * provided AxisConfiguration and List of Graphs. + * + */ +public class GraphPlotter extends JPanel { + + private transient Config axisConfiguration; + private transient List graphs; + + /** + * Creates a new GraphPlotter with the given AxisConfiguration and List of + * Graphs. + * + * @param axisConfiguration + * the Configuration for rendering axis. + * @param graphs + * The style data of the graphs. + */ + public GraphPlotter(Config axisConfiguration, List graphs) { + this.axisConfiguration = axisConfiguration; + this.graphs = graphs; + } + + @Override + public void paintComponent(Graphics g) { + for (int i = 0; i < graphs.size(); i++) { + if (axisConfiguration.getAxisType() == AxisType.PIE && graphs.get(i) instanceof PieChart) { + new PieChartPlotter(g, this, (PieChart) graphs.get(i)).draw(); + } else if (axisConfiguration.getAxisType() != AxisType.PIE) { + if (graphs.get(i) instanceof LineChart) { + new LineChartPlotter(g, this, axisConfiguration, (LineChart) graphs.get(i), i).draw(); + } + + else if (graphs.get(i) instanceof ScatterChart) { + new ScatterChartPlotter(g, this, axisConfiguration, (ScatterChart) graphs.get(i), i).draw(); + } + + else if (graphs.get(i) instanceof BarGraph) { + new BarGraphPlotter(g, this, axisConfiguration, (BarGraph) graphs.get(i), i).draw(); + } + } + } + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/PieSeries.java b/src/main/java/io/github/manishdait/jplotlib/charts/helper/PlotLogger.java similarity index 67% rename from src/main/java/io/github/manishdait/jplotlib/chart/PieSeries.java rename to src/main/java/io/github/manishdait/jplotlib/charts/helper/PlotLogger.java index 81e9575..06fecdf 100644 --- a/src/main/java/io/github/manishdait/jplotlib/chart/PieSeries.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/helper/PlotLogger.java @@ -22,21 +22,29 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.chart; +package io.github.manishdait.jplotlib.charts.helper; -import java.awt.Color; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -public class PieSeries { - - private Color[] color; +/** + * The PlotLogger class provides a centralized logger instance for use across + * plotting-related functionalities within the JPlotLib library. + * + */ +public class PlotLogger { + + private PlotLogger() { + } + + private static Logger logger = LoggerFactory.getLogger(PlotLogger.class); - public PieSeries() {} + public static Logger getLogger() { + return logger; + } - public Color[] getColor() { - return this.color; - } - public void setColor(Color[] color) { - this.color = color; - } + public static void setLogger(Logger logger) { + PlotLogger.logger = logger; + } } diff --git a/src/main/java/io/github/manishdait/jplotlib/plotter/Plotter.java b/src/main/java/io/github/manishdait/jplotlib/charts/helper/Plotter.java old mode 100644 new mode 100755 similarity index 89% rename from src/main/java/io/github/manishdait/jplotlib/plotter/Plotter.java rename to src/main/java/io/github/manishdait/jplotlib/charts/helper/Plotter.java index d2d1a24..6a9c91f --- a/src/main/java/io/github/manishdait/jplotlib/plotter/Plotter.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/helper/Plotter.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.plotter; +package io.github.manishdait.jplotlib.charts.helper; /** * The Plotter interface provides a contract for classes that are responsible @@ -30,15 +30,12 @@ * * Classes that implement the Plotter interface must provide the 'draw()' method * to draw the plot on the specified context (e.g., JPanel or Graphics). - * * */ - public interface Plotter { - - /** - * Draws the plot on the specified context (e.g., JPanel or Graphics). - */ - void draw(); + /** + * Draws the plot on the specified context (e.g., JPanel or Graphics). + */ + void draw(); -} +} \ No newline at end of file diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChart.java b/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChart.java new file mode 100755 index 0000000..0e74d06 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChart.java @@ -0,0 +1,115 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.line; + +import java.awt.Color; + +import io.github.manishdait.jplotlib.charts.helper.Graph; +import io.github.manishdait.jplotlib.data.util.Data; +import io.github.manishdait.jplotlib.defaults.line.Stroke; +import io.github.manishdait.jplotlib.defaults.marker.Marker; +import io.github.manishdait.jplotlib.internals.util.ChartType; + +/** + * The LineChart class implements the Graph interface and represents a line + * chart. + * It allows plotting data using lines with customizable styles such as markers, + * colors, line styles, etc. + * + */ +public class LineChart implements Graph { + + private Data coordinates; + private LineChartStyle style; + private static final ChartType CHART_TYPE = ChartType.LINE; + + protected LineChart() { + } + + /** + * Constructs a LineChart with the provided data coordinates and initializes + * default style settings. + * + * @param coordinates + * The data coordinates to be plotted on the line chart. + */ + public LineChart(Data coordinates) { + this.coordinates = coordinates; + style = new LineChartStyle(); + } + + public Data getCoordinates() { + return coordinates; + } + + public void setCoordinates(Data coordinates) { + this.coordinates = coordinates; + } + + public LineChartStyle getStyle() { + return style; + } + + public void setStyle(LineChartStyle style) { + this.style = style; + } + + public ChartType getChartType() { + return CHART_TYPE; + } + + public LineChart marker(Marker marker) { + style.setMarker(marker); + return this; + } + + public LineChart color(Color color) { + style.setColor(color); + return this; + } + + public LineChart markerColor(Color color) { + style.setMarkerColor(color); + return this; + } + + public LineChart lineStyle(Stroke stroke) { + style.setLineStyle(stroke == null ? Stroke.NONE : stroke); + return this; + } + + public LineChart lineWidth(float width) { + width = width < 1 ? 1 : width; + width = width > 15 ? 15 : width; + style.setLineWidth(width); + return this; + } + + public LineChart markerSize(int size) { + style.setMarkerSize(size); + return this; + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/ScatterSeries.java b/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartOptions.java old mode 100644 new mode 100755 similarity index 56% rename from src/main/java/io/github/manishdait/jplotlib/chart/ScatterSeries.java rename to src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartOptions.java index 8bec8c7..b96fb44 --- a/src/main/java/io/github/manishdait/jplotlib/chart/ScatterSeries.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartOptions.java @@ -22,54 +22,34 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.chart; - -import java.awt.Color; - -import io.github.manishdait.jplotlib.style.marker.BaseMarker; - +package io.github.manishdait.jplotlib.charts.line; /** - * The ScatterSeries class represents the style and properties of a scatter plot - * series in a chart. + * The LineChartOptions interface defines methods for configuring and plotting + * line charts. + * Implementing classes can provide various options for plotting line charts + * based on data points. * */ +public interface LineChartOptions { + /** + * Plots a line chart using provided x and y data points. + * + * @param xPoints + * The array of x-axis data points. + * @param yPoints + * The array of y-axis data points. + * @return The LineChart object representing the plotted line chart. + */ + LineChart plot(double[] xPoints, double[] yPoints); + + /** + * Plots a line chart using only y-axis data points. + * + * @param yPoints + * The array of y-axis data points. + * @return The LineChart object representing the plotted line chart. + */ + LineChart plot(double[] yPoints); -public class ScatterSeries { - - private Color color; - private int[] scale; - private BaseMarker marker = BaseMarker.NONE; - private float alpha = 1F; - - public ScatterSeries() {} - - public Color getColor() { - return color; - } - public void setColor(Color color) { - this.color = color; - } - - public float getAlpha() { - return alpha; - } - public void setAlpha(float alpha) { - this.alpha = alpha; - } - - public BaseMarker getMarker() { - return marker; - } - public void setMarker(BaseMarker marker) { - this.marker = marker; - } - - public int[] getScale() { - return scale; - } - public void setScale(int[] scale) { - this.scale = scale; - } - } diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartPlotter.java b/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartPlotter.java new file mode 100755 index 0000000..d9527b3 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartPlotter.java @@ -0,0 +1,206 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.line; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.geom.Line2D; + +import javax.swing.JPanel; + +import io.github.manishdait.jplotlib.charts.helper.Plotter; +import io.github.manishdait.jplotlib.data.CartesianData; +import io.github.manishdait.jplotlib.defaults.color.PlotColor; +import io.github.manishdait.jplotlib.defaults.marker.Marker; +import io.github.manishdait.jplotlib.internals.components.axis.Config; +import io.github.manishdait.jplotlib.internals.util.Constants; + +/** + * The LineChartPlotter class implements the Plotter interface and is + * responsible for drawing a line chart. + * It uses provided data coordinates and style settings to render a line chart + * on the specified context. + * + */ +public class LineChartPlotter implements Plotter { + private Graphics2D g; + private LineChart lineChart; + private int indx; + + private int yValDiff; + private int xValDiff; + + private int xIncrement; + private int yIncrement; + + private int xLowerBound; + private int yLowerBound; + private double[] xPoints; + private double[] yPoints; + + private int heigth; + + /** + * Constructs a LineChartPlotter with the necessary information to draw a line + * chart. + * + * @param g2 + * The Graphics object to draw on. + * @param context + * The JPanel context where the chart is drawn. + * @param axisConfiguration + * The axis configuration for the chart. + * @param lineChart + * The LineChart object containing data and style + * settings. + * @param indx + * The index used for styling or identifying the chart. + */ + public LineChartPlotter( + Graphics g2, + JPanel context, + Config axisConfiguration, + LineChart lineChart, + int indx) { + this.g = (Graphics2D) g2; + this.lineChart = lineChart; + this.indx = indx; + + this.heigth = context.getHeight(); + + this.yValDiff = axisConfiguration.getyValDiff(); + this.xValDiff = axisConfiguration.getxValDiff(); + + this.xIncrement = axisConfiguration.getxIncrement(); + this.yIncrement = axisConfiguration.getyIncrement(); + + this.xLowerBound = axisConfiguration.getxLowerBound(); + this.yLowerBound = axisConfiguration.getyLowerBound(); + } + + @Override + public void draw() { + xPoints = ((CartesianData) this.lineChart.getCoordinates()).getxPoints(); + yPoints = ((CartesianData) this.lineChart.getCoordinates()).getyPoints(); + + this.g.setRenderingHint( + RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + int extraSpace = (int) (Math.min(xIncrement, yIncrement) * 0.5); + + for (int i = 0; i < yPoints.length - 1; i++) { + float lineWidth = this.lineChart.getStyle().getLineWidth(); + + Color color = this.lineChart.getStyle().getColor(); + + if (color == null) { + color = PlotColor.getColor(indx); + } + + if (this.lineChart.getStyle().getMarkerColor() == null) { + this.lineChart.getStyle().setMarkerColor(color); + } + + this.g.setColor(color); + + switch (this.lineChart.getStyle().getLineStyle()) { + case NONE: + this.g.setStroke(new BasicStroke(lineWidth)); + break; + + case DASHED: + float[] dashPattern = { 6F * (int) lineWidth, 6F * (int) lineWidth }; + BasicStroke dashedStroke = new BasicStroke( + lineWidth, BasicStroke.CAP_BUTT, + BasicStroke.JOIN_ROUND, + 0F, + dashPattern, + 0F); + g.setStroke(dashedStroke); + break; + + default: + this.g.setStroke(new BasicStroke(lineWidth)); + } + + double x1 = (xIncrement * (xPoints[i] - xLowerBound)) / xValDiff; + double x2 = (xIncrement * (xPoints[i + 1] - xLowerBound)) / xValDiff; + + double y1 = heigth - (yIncrement * (yPoints[i] - yLowerBound)) / yValDiff; + double y2 = heigth - (yIncrement * (yPoints[i + 1] - yLowerBound)) / yValDiff; + + Shape l = new Line2D.Double( + x1 + extraSpace, + y1 - extraSpace, + x2 + extraSpace, + y2 - extraSpace); + + g.draw(l); + } + + if (this.lineChart.getStyle().getMarker() != Marker.NONE) { + drawMarker(extraSpace); + } + } + + private void drawMarker(int extraSpace) { + int scale = this.lineChart.getStyle().getMarkerSize() * Constants.MIN_MARKER_SCALE; + + if (scale < Constants.MIN_MARKER_SCALE || scale > Constants.MAX_MARKER_SCALE) { + scale = Constants.DEFAULT_MARKER_SCALE; + } + + for (int j = 0; j < yPoints.length; j++) { + g.setColor(this.lineChart.getStyle().getMarkerColor()); + int x = (int) (xIncrement * (xPoints[j] - xLowerBound)) / xValDiff - (scale / 2); + int y = heigth - (int) (yIncrement * (yPoints[j] - yLowerBound)) / yValDiff - (scale / 2); + switch (this.lineChart.getStyle().getMarker()) { + case CIRCLE: + this.g.fillOval( + x + extraSpace, + y - extraSpace, + scale, + scale); + break; + + case SQUARE: + this.g.fillRect( + x + extraSpace, + y - extraSpace, + scale, + scale); + break; + + default: + throw new IllegalArgumentException("Unknown marker type: " + this.lineChart.getStyle().getMarker()); + } + } + } +} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/LineSeries.java b/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartStyle.java old mode 100644 new mode 100755 similarity index 56% rename from src/main/java/io/github/manishdait/jplotlib/chart/LineSeries.java rename to src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartStyle.java index 20aedc3..19f93c2 --- a/src/main/java/io/github/manishdait/jplotlib/chart/LineSeries.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartStyle.java @@ -21,66 +21,87 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - -package io.github.manishdait.jplotlib.chart; -import java.awt.Color; +package io.github.manishdait.jplotlib.charts.line; -import io.github.manishdait.jplotlib.style.line.BaseStroke; -import io.github.manishdait.jplotlib.style.marker.BaseMarker; +import java.awt.Color; +import io.github.manishdait.jplotlib.defaults.line.Stroke; +import io.github.manishdait.jplotlib.defaults.marker.Marker; -public class LineSeries { +/** + * The LineChartStyle class holds style properties for configuring the + * appearance of a line chart. + * It includes settings for markers, colors, line styles, and widths. + * + */ +public class LineChartStyle { - private BaseMarker marker = BaseMarker.NONE; + private Marker marker; private Color color; private Color markerColor; private int markerSize; - private BaseStroke lineStyle = BaseStroke.NONE; - private float lineWidth = 2F; - - public LineSeries() {} - - public BaseMarker getMarker() { - return marker; + private Stroke lineStyle; + private float lineWidth; + + /** + * Constructs a LineChartStyle with default style settings. + */ + public LineChartStyle() { + this.marker = Marker.NONE; + color = null; + markerColor = null; + lineStyle = Stroke.NONE; + lineWidth = 2F; + this.markerSize = 0; + } + + public Marker getMarker() { + return marker; } - public void setMarker(BaseMarker marker) { - this.marker = marker; + + public void setMarker(Marker marker) { + this.marker = marker; } - + public Color getColor() { - return color; + return color; } + public void setColor(Color color) { - this.color = color; - } - - public BaseStroke getLineStyle() { - return lineStyle; + this.color = color; } - public void setLineStyle(BaseStroke lineStyle) { - this.lineStyle = lineStyle; - } - + public Color getMarkerColor() { - return markerColor; + return markerColor; } + public void setMarkerColor(Color markerColor) { - this.markerColor = markerColor; + this.markerColor = markerColor; } - public float getLineWidth() { - return lineWidth; + public int getMarkerSize() { + return markerSize; } - public void setLineWidth(float lineWidth) { - this.lineWidth = lineWidth; + + public void setMarkerSize(int markerSize) { + this.markerSize = markerSize; } - public int getMarkerSize() { - return markerSize; + public Stroke getLineStyle() { + return lineStyle; } - public void setMarkerSize(int markerSize) { - this.markerSize = markerSize; + + public void setLineStyle(Stroke lineStyle) { + this.lineStyle = lineStyle; + } + + public float getLineWidth() { + return lineWidth; } + public void setLineWidth(float lineWidth) { + this.lineWidth = lineWidth; + } + } diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChart.java b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChart.java new file mode 100755 index 0000000..187df94 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChart.java @@ -0,0 +1,77 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.pie; + +import io.github.manishdait.jplotlib.charts.helper.Graph; +import io.github.manishdait.jplotlib.data.util.Data; +import io.github.manishdait.jplotlib.internals.util.ChartType; + +/** + * The PieChart class represents a pie chart configuration containing data + * values and style settings + * for rendering a pie chart within the JPlotLib library. + * It implements the Graph interface and provides methods to access and modify + * pie chart properties. + * + */ +public class PieChart implements Graph { + + private Data values; + private PieChartStyle style; + private static final ChartType CHART_TYPE = ChartType.PIE; + + /** + * Constructs a PieChart object with the provided data values and default style + * settings. + * + * @param values + * The Data object containing values for the pie chart. + */ + public PieChart(Data values) { + this.values = values; + this.style = new PieChartStyle(); + } + + public Data getValues() { + return values; + } + + public void setValues(Data values) { + this.values = values; + } + + public ChartType getChartType() { + return CHART_TYPE; + } + + public PieChartStyle getStyle() { + return style; + } + + public void setStyle(PieChartStyle style) { + this.style = style; + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/helper/PieChartOptions.java b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartOptions.java old mode 100644 new mode 100755 similarity index 64% rename from src/main/java/io/github/manishdait/jplotlib/chart/helper/PieChartOptions.java rename to src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartOptions.java index 99f41b0..9c4ee0f --- a/src/main/java/io/github/manishdait/jplotlib/chart/helper/PieChartOptions.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartOptions.java @@ -22,12 +22,25 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.chart.helper; - -import io.github.manishdait.jplotlib.chart.PieChart; +package io.github.manishdait.jplotlib.charts.pie; +/** + * The PieChartOptions interface provides a method to create a pie chart with + * data points. + * Implementations of this interface are expected to generate a PieChart object + * based on the provided data points. + * + */ public interface PieChartOptions { - - public PieChart pie(double[] dataPoints); + /** + * Creates a pie chart with the given data points. + * + * @param dataPoints + * An array of doubles representing the data points for the pie chart + * slices. + * @return PieChart A PieChart object representing a pie chart with the provided + * data points. + */ + PieChart pie(double[] dataPoints); } diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartPlotter.java b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartPlotter.java new file mode 100755 index 0000000..fc5e313 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartPlotter.java @@ -0,0 +1,123 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.pie; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; + +import javax.swing.JPanel; + +import io.github.manishdait.jplotlib.charts.helper.Plotter; +import io.github.manishdait.jplotlib.data.GraphData; +import io.github.manishdait.jplotlib.defaults.color.PlotColor; + +/** + * The PieChartPlotter class implements the Plotter interface and is responsible + * for rendering PieChart objects by drawing slices on a JPanel based on the + * provided data and context. + * It handles the visualization of pie charts within the JPlotLib library. + * + */ +public class PieChartPlotter implements Plotter { + + private Graphics2D g; + private JPanel context; + private PieChart pieChart; + + /** + * Constructs a PieChartPlotter with the necessary rendering context and + * PieChart object. + * + * @param g + * The Graphics object used for rendering. + * @param context + * The JPanel where the pie chart slices will be drawn. + * @param pieChart + * The PieChart object containing data and style settings. + */ + public PieChartPlotter( + Graphics g, + JPanel context, + PieChart pieChart) { + this.g = (Graphics2D) g; + this.context = context; + this.pieChart = pieChart; + } + + @Override + public void draw() { + double[] data = ((GraphData) pieChart.getValues()).getData(); + + this.g.setRenderingHint( + RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + int width = (context.getWidth()) / 2; + int height = (context.getHeight()) / 2; + + double sum = 0; + for (double i : data) { + sum += i; + } + + sum = sum == 0 ? 1 : sum; + double diff = 360 / sum; + int radius = Math.min(context.getHeight(), context.getWidth()) / 2 - 40; + + int prevAng = 0; + Color[] color = pieChart.getStyle().getColor(); + + for (int i = 0; i < data.length; i++) { + if (color == null) { + this.g.setColor(PlotColor.getColor(i)); + } else { + this.g.setColor(color[i]); + } + + this.g.fillArc( + width - radius, + height - radius, + radius * 2, + radius * 2, + prevAng, + (int) (data[i] * diff)); + + prevAng += (int) (data[i] * diff); + + if (i == data.length - 1 && prevAng != 360) { + this.g.fillArc( + width - radius, + height - radius, + radius * 2, + radius * 2, + prevAng, + 360 - prevAng); + } + } + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartStyle.java b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartStyle.java new file mode 100755 index 0000000..93cb843 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartStyle.java @@ -0,0 +1,54 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.pie; + +import java.awt.Color; + +/** + * The PieChartStyle class encapsulates style properties specific to a pie + * chart, allowing customization of visual attributes for rendering slices + * within the JPlotLib library. + * + */ +public class PieChartStyle { + + private Color[] color; + + /** + * Constructs a ScatterChartStyle with default style settings. + */ + public PieChartStyle() { + this.color = null; + } + + public Color[] getColor() { + return this.color; + } + + public void setColor(Color[] color) { + this.color = color; + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChart.java b/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChart.java new file mode 100755 index 0000000..c11b9ed --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChart.java @@ -0,0 +1,102 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package io.github.manishdait.jplotlib.charts.scatter; + +import java.awt.Color; + +import io.github.manishdait.jplotlib.charts.helper.Graph; +import io.github.manishdait.jplotlib.data.util.Data; +import io.github.manishdait.jplotlib.defaults.marker.Marker; +import io.github.manishdait.jplotlib.internals.util.ChartType; + +/** + * The ScatterChart class implements the Graph interface and represents a + * scatter chart. + * It enables plotting data points using markers with customizable styles such + * as markers, sizes, colors, etc. + * + */ +public class ScatterChart implements Graph { + + private Data coordinates; + private ScatterChartStyle style; + private static final ChartType CHART_TYPE = ChartType.SCATTER; + + public ScatterChart() { + } + + /** + * Constructs a ScatterChart with the provided data coordinates and initializes + * default style settings. + * + * @param coordinates + * The data coordinates to be plotted on the scatter chart. + */ + public ScatterChart(Data coordinates) { + this.coordinates = coordinates; + style = new ScatterChartStyle(); + } + + public Data getCoordinates() { + return coordinates; + } + + public void setCoordinates(Data coordinates) { + this.coordinates = coordinates; + } + + public ScatterChartStyle getStyle() { + return style; + } + + public void setStyle(ScatterChartStyle style) { + this.style = style; + } + + public ChartType getChartType() { + return CHART_TYPE; + } + + public ScatterChart marker(Marker marker) { + marker = marker == null ? Marker.NONE : marker; + style.setMarker(marker); + return this; + } + + public ScatterChart size(int[] size) { + style.setScale(size); + return this; + } + + public ScatterChart color(Color color) { + style.setColor(color); + return this; + } + + public ScatterChart alpha(float alpha) { + style.setAlpha(alpha); + return this; + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartOptions.java b/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartOptions.java new file mode 100755 index 0000000..efd99ea --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartOptions.java @@ -0,0 +1,49 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.scatter; + +/** + * The ScatterChartOptions interface defines methods related to creating scatter + * charts. + * Implementations of this interface are expected to provide functionality for + * generating + * ScatterChart objects based on given x and y data points. + * + */ +public interface ScatterChartOptions { + + /** + * Creates a ScatterChart with the provided x and y data points. + * + * @param xPoints + * An array of double values representing the x-axis data points. + * @param yPoints + * An array of double values representing the y-axis data points. + * @return ScatterChart An object representing a scatter chart constructed using + * the given data. + */ + ScatterChart scatter(double[] xPoints, double[] yPoints); + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartPlotter.java b/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartPlotter.java new file mode 100755 index 0000000..3f707be --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartPlotter.java @@ -0,0 +1,167 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.scatter; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; + +import javax.swing.JPanel; + +import io.github.manishdait.jplotlib.charts.helper.PlotLogger; +import io.github.manishdait.jplotlib.charts.helper.Plotter; +import io.github.manishdait.jplotlib.data.CartesianData; +import io.github.manishdait.jplotlib.defaults.color.PlotColor; +import io.github.manishdait.jplotlib.internals.components.axis.Config; + +/** + * The ScatterChartPlotter class is responsible for rendering ScatterChart + * objects on a JPanel by drawing + * individual data points based on the provided axis configuration and style + * information. + * + */ +public class ScatterChartPlotter implements Plotter { + + private Graphics2D g; + private Config axisConfiguration; + private ScatterChart scatterChart; + private int indx; + private int heigth; + + /** + * Constructs a ScatterChartPlotter with the necessary rendering context and + * chart data. + * + * @param g + * The Graphics object used for rendering. + * @param context + * The JPanel where the scatter chart will be drawn. + * @param axisConfiguration + * The configuration for rendering the axis. + * @param scatterChart + * The ScatterChart object containing data to be plotted. + * @param indx + * The index used for styling multiple charts. + */ + public ScatterChartPlotter( + Graphics g, + JPanel context, + Config axisConfiguration, + ScatterChart scatterChart, + int indx) { + this.g = (Graphics2D) g; + this.axisConfiguration = axisConfiguration; + this.scatterChart = scatterChart; + this.indx = indx; + this.heigth = context.getHeight(); + } + + @Override + public void draw() { + double[] xPoints = ((CartesianData) this.scatterChart.getCoordinates()).getxPoints(); + double[] yPoints = ((CartesianData) this.scatterChart.getCoordinates()).getyPoints(); + + this.g.setRenderingHint( + RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + int yValDiff = axisConfiguration.getyValDiff(); + int xValDiff = axisConfiguration.getxValDiff(); + + int xIncrement = axisConfiguration.getxIncrement(); + int yIncrement = axisConfiguration.getyIncrement(); + + int xLowerBound = axisConfiguration.getxLowerBound(); + int yLowerBound = axisConfiguration.getyLowerBound(); + + int extraSpace = (int) (Math.min(xIncrement, yIncrement) * 0.5); + + Color color = scatterChart.getStyle().getColor(); + + if (color == null) { + color = PlotColor.getColor(indx); + } + + color = setAlpa(color); + + this.g.setColor(color); + + for (int i = 0; i < yPoints.length; i++) { + int scale = scatterChart.getStyle().getScale() == null + ? 8 + : scatterChart.getStyle().getScale()[i] * 5; + + if (scale < 5 || scale > 50) { + scale = 8; + } + + int x = (int) (xIncrement * (xPoints[i] - xLowerBound)) / xValDiff - scale / 2; + int y = heigth- (int) (yIncrement * (yPoints[i] - yLowerBound)) / yValDiff - scale / 2; + switch (scatterChart.getStyle().getMarker()) { + case NONE: + case CIRCLE: + this.g.fillOval( + x + extraSpace, + y - extraSpace, + scale, + scale); + break; + + case SQUARE: + this.g.fillRect( + x + extraSpace, + y - extraSpace, + scale, + scale); + break; + + default: + PlotLogger.getLogger().error("Error Unknown Marker type {}", scatterChart.getStyle().getMarker()); + } + + } + } + + /** + * Adjusts the alpha (transparency) level of the provided color based on style + * information + * to ensure proper rendering of the scatter chart. + * + * @param color + * The input color for which alpha will be adjusted. + * @return Color The adjusted color with alpha transparency applied. + */ + private Color setAlpa(Color color) { + Color currColor = color; + float alpha = scatterChart.getStyle().getAlpha(); + if (alpha < 0 || alpha > 1) { + alpha = 1; + } + return new Color(currColor.getRed(), currColor.getGreen(), currColor.getBlue(), (int) (alpha * 255)); + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartStyle.java b/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartStyle.java new file mode 100755 index 0000000..70cfe90 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartStyle.java @@ -0,0 +1,83 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.charts.scatter; + +import java.awt.Color; + +import io.github.manishdait.jplotlib.defaults.marker.Marker; + +/** + * The ScatterChartStyle class defines the visual style properties for rendering + * a scatter chart. + * + */ +public class ScatterChartStyle { + private Color color; + private int[] scale; + private Marker marker; + private float alpha; + + /** + * Constructs a ScatterChartStyle with default style settings. + */ + public ScatterChartStyle() { + this.color = null; + this.scale = null; + this.marker = Marker.NONE; + this.alpha = 1F; + } + + public Color getColor() { + return color; + } + + public void setColor(Color color) { + this.color = color; + } + + public float getAlpha() { + return alpha; + } + + public void setAlpha(float alpha) { + this.alpha = alpha; + } + + public Marker getMarker() { + return marker; + } + + public void setMarker(Marker marker) { + this.marker = marker; + } + + public int[] getScale() { + return scale; + } + + public void setScale(int[] scale) { + this.scale = scale; + } +} diff --git a/src/main/java/io/github/manishdait/jplotlib/data/Coordinates.java b/src/main/java/io/github/manishdait/jplotlib/data/CartesianData.java old mode 100644 new mode 100755 similarity index 53% rename from src/main/java/io/github/manishdait/jplotlib/data/Coordinates.java rename to src/main/java/io/github/manishdait/jplotlib/data/CartesianData.java index 790b90c..1951ac1 --- a/src/main/java/io/github/manishdait/jplotlib/data/Coordinates.java +++ b/src/main/java/io/github/manishdait/jplotlib/data/CartesianData.java @@ -24,55 +24,44 @@ package io.github.manishdait.jplotlib.data; +import io.github.manishdait.jplotlib.data.util.Data; + /** - * The Coordinates class represents a set of x and y points for a series plot. - * + * The CartesianData class implements the Data interface and represents a set of + * Cartesian data points. It contains x and y coordinate arrays for plotting + * Cartesian coordinates. + * */ +public class CartesianData implements Data { + private double[] xPoints; + private double[] yPoints; -public class Coordinates { - - private double[] xPoints; - private double[] yPoints; - - /** - * Default constructor for Coordinates. - */ - public Coordinates() {} - - /** - * Get the x points array. - * - * @return The x points array. - */ - public double[] getxPoints() { - return this.xPoints; - } + /** + * Constructs a CartesianData object with the given x and y coordinate arrays. + * + * @param xPoints + * The array containing the x-coordinates. + * @param yPoints + * The array containing the y-coordinates. + */ + public CartesianData(double[] xPoints, double[] yPoints) { + this.xPoints = xPoints; + this.yPoints = yPoints; + } - /** - * Set the x points array. - * - * @param xPoints The x points array. - */ - public void setxPoints(double[] xPoints) { - this.xPoints = xPoints; - } + public double[] getxPoints() { + return xPoints; + } - /** - * Get the y points array. - * - * @return The y points array. - */ - public double[] getyPoints() { - return this.yPoints; - } + public void setxPoints(double[] xPoints) { + this.xPoints = xPoints; + } - /** - * Set the y points array. - * - * @param yPoints The y points array. - */ - public void setyPoints(double[] yPoints) { - this.yPoints = yPoints; - } + public double[] getyPoints() { + return yPoints; + } + public void setyPoints(double[] yPoints) { + this.yPoints = yPoints; + } } diff --git a/src/main/java/io/github/manishdait/jplotlib/data/GraphData.java b/src/main/java/io/github/manishdait/jplotlib/data/GraphData.java new file mode 100755 index 0000000..fc9440d --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/data/GraphData.java @@ -0,0 +1,105 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.data; + +import java.util.LinkedHashMap; +import java.util.Map; + +import io.github.manishdait.jplotlib.data.util.Data; + +/** + * The GraphData class implements the Data interface and represents data for a + * graph. It contains labels and data points for plotting graphs. + * + */ +public class GraphData implements Data { + private String[] labels; + private double[] data; + private static boolean isX; + private static LinkedHashMap map; + private static int indx; + + /** + * Static block to initialize the LinkedHashMap and index. + */ + static { + map = new LinkedHashMap<>(); + indx = 0; + } + + /** + * Constructs a GraphData object with the given labels and data points. + * + * @param labels + * The array containing labels for the data points. + * @param data + * The array containing the data points. + */ + public GraphData(String[] labels, double[] data) { + this.labels = labels; + this.data = data; + } + + public String[] getLabels() { + return labels; + } + + public void setLabels(String[] labels) { + this.labels = labels; + } + + public static boolean isX() { + return isX; + } + + public static void setX(boolean isX) { + GraphData.isX = isX; + } + + public static Map getMap() { + return map; + } + + public static void setMap(Map map) { + GraphData.map = (LinkedHashMap) map; + } + + public static int getIndx() { + return indx; + } + + public static void setIndx(int indx) { + GraphData.indx = indx; + } + + public double[] getData() { + return data; + } + + public void setData(double[] data) { + this.data = data; + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/data/SeriesData.java b/src/main/java/io/github/manishdait/jplotlib/data/SeriesData.java deleted file mode 100644 index 8398add..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/data/SeriesData.java +++ /dev/null @@ -1,379 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.data; - -import java.util.List; - -import io.github.manishdait.jplotlib.internal.util.AxisType; - - -/** - * The SeriesData class represents the data for a series plot in Jplotlib. - * - */ - -public class SeriesData { - - public AxisType axisType; - private String title = ""; - private String xLabel = ""; - private String yLabel = ""; - - private int xIncrement; - private int yIncrement; - - private int xUpperBound; - private int yUpperBound; - - private int xLowerBound; - private int yLowerBound; - - private int xValDiff; - private int yValDiff; - - private boolean xGrid; - private boolean yGrid; - - private String[] label; - - private List coordinates; - - private double[] pieData; - - /** - * Default constructor for Coordinates. - */ - public SeriesData() {} - - - /** - * Get the axis type of the series data. - * - * @return The axis type. - */ - public AxisType getAxisType() { - return axisType; - } - - /** - * Set the axis type of the series data. - * - * @param axisType The axis type. - */ - public void setAxisType(AxisType axisType) { - this.axisType = axisType; - } - - /** - * Get the title of the series data. - * - * @return The title. - */ - public String getTitle() { - return title; - } - - /** - * Set the title of the series data. - * - * @param title The axis title. - */ - public void setTitle(String title) { - this.title = title; - } - - /** - * Get the xLabel of the series data. - * - * @return The xLabel. - */ - public String getxLabel() { - return xLabel; - } - - /** - * Set the xLabel of the series data. - * - * @param xLabel The axis xLabel. - */ - public void setxLabel(String xLabel) { - this.xLabel = xLabel; - } - - /** - * Get the yLabel of the series data. - * - * @return The yLabel. - */ - public String getyLabel() { - return yLabel; - } - - /** - * Set the yLabel of the series data. - * - * @param yLabel The axis yLabel. - */ - public void setyLabel(String yLabel) { - this.yLabel = yLabel; - } - - /** - * Get the xIncrement value of the series data. - * - * @return The xIncrement. - */ - public int getxIncrement() { - return xIncrement; - } - - /** - * Set the xIncrement value of the series data. - * - * @param xIncrement The axis xIncrement. - */ - public void setxIncrement(int xIncrement) { - this.xIncrement = xIncrement; - } - - /** - * Get the yIncrement value of the series data. - * - * @return The yIncrement. - */ - public int getyIncrement() { - return yIncrement; - } - - /** - * Set the yIncrement value of the series data. - * - * @param yIncrement The axis yIncrement. - */ - public void setyIncrement(int yIncrement) { - this.yIncrement = yIncrement; - } - - /** - * Get the UpperBound value of xAxis. - * - * @return The xUpperBound. - */ - public int getxUpperBound() { - return xUpperBound; - } - - /** - * Set the UpperBound value of the xAxis. - * - * @param xUpperBound The xAxis UpperBound. - */ - public void setxUpperBound(int xUpperBound) { - this.xUpperBound = xUpperBound; - } - - /** - * Get the UpperBound value of yAxis. - * - * @return The yUpperBound. - */ - public int getyUpperBound() { - return yUpperBound; - } - - /** - * Set the UpperBound value of the yAxis. - * - * @param yUpperBound The yAxis UpperBound. - */ - public void setyUpperBound(int yUpperBound) { - this.yUpperBound = yUpperBound; - } - - /** - * Get the LowerBound value of xAxis. - * - * @return The xLowerBound. - */ - public int getxLowerBound() { - return xLowerBound; - } - - /** - * Set the LowerBound value of the xAxis. - * - * @param xLowerBound The xAxis LowerBound. - */ - public void setxLowerBound(int xLowerBound) { - this.xLowerBound = xLowerBound; - } - - /** - * Get the LowerBound value of yAxis. - * - * @return The yLowerBound. - */ - public int getyLowerBound() { - return yLowerBound; - } - - /** - * Set the LowerBound value of the yAxis. - * - * @param yLowerBound The yAxis LowerBound. - */ - public void setyLowerBound(int yLowerBound) { - this.yLowerBound = yLowerBound; - } - - - /** - * Get the ValDiff value of xAxis. - * - * @return The xValDiff. - */ - public int getxValDiff() { - return xValDiff; - } - - /** - * Set the xValDiff of the series data. - * - * @param xValDiff The xAxis ValDiff. - */ - public void setxValDiff(int xValDiff) { - this.xValDiff = xValDiff; - } - - /** - * Get the ValDiff value of yAxis. - * - * @return The yValDiff. - */ - public int getyValDiff() { - return yValDiff; - } - - /** - * Set the yValDiff of the series data. - * - * @param yValDiff The yAxis ValDiff. - */ - public void setyValDiff(int yValDiff) { - this.yValDiff = yValDiff; - } - - /** - * Get the isGrid value of xAxis. - * - * @return The xGrid. - */ - public boolean isxGrid() { - return xGrid; - } - - /** - * Set the xGrid of the series data. - * - * @param xGrid The axis Grid. - */ - public void setxGrid(boolean xGrid) { - this.xGrid = xGrid; - } - - /** - * Get the isGrid value of yAxis. - * - * @return The yGrid. - */ - public boolean isyGrid() { - return yGrid; - } - - /** - * Set the yGrid of the series data. - * - * @param yGrid The axis Grid. - */ - public void setyGrid(boolean yGrid) { - this.yGrid = yGrid; - } - - - /** - * Get the list of coordinates for the series plot. - * - * @return The list of coordinates. - */ - public List getCoordinates() { - return this.coordinates; - } - - /** - * Set the list of coordinates for the series plot. - * - * @param coordinates The list of coordinates. - */ - public void setCoordinates(List coordinates) { - this.coordinates = coordinates; - } - - /** - * Get the array of labels for the series plot. - * - * @return The array of labels. - */ - public String[] getLabel() { - return label; - } - - /** - * Set the array of labels for the series plot (Bar Graph). - * - * @param label The array of labels. - */ - public void setLabel(String[] label) { - this.label = label; - } - - /** - * Get the data for the pie chart. - * - * @return The data for the pie chart. - */ - public double[] getPieData() { - return pieData; - } - - /** - * Set the data for the pie chart. - * - * @param pieData The data for the pie chart. - */ - public void setPieData(double[] pieData) { - this.pieData = pieData; - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/data/StyleData.java b/src/main/java/io/github/manishdait/jplotlib/data/StyleData.java deleted file mode 100644 index af59c99..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/data/StyleData.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.data; - -import io.github.manishdait.jplotlib.chart.BarSeries; -import io.github.manishdait.jplotlib.chart.LineSeries; -import io.github.manishdait.jplotlib.chart.PieSeries; -import io.github.manishdait.jplotlib.chart.ScatterSeries; -import io.github.manishdait.jplotlib.internal.util.ChartType; - - -/** - * The StyleData class represents the style and type of a chart series. - * - */ - -public class StyleData extends Coordinates { - - private ChartType chartType; - - private LineSeries lineSeries; - private ScatterSeries scatterSeries; - private BarSeries barSeries; - private PieSeries pieSeries; - - public StyleData() {} - - /** - * Get the chart type of the style data. - * - * @return The chart type. - */ - public ChartType getChartType() { - return chartType; - } - - /** - * Set the chart type of the style data. - * - * @param chartType The chart type to set. - */ - public void setChartType(ChartType chartType) { - this.chartType = chartType; - } - - /** - * Get the line series associated with the style data. - * - * @return The line series. - */ - public LineSeries getLineSeries() { - return lineSeries; - } - - /** - * Set the line series associated with the style data. - * - * @param lineSeries The line series to set. - */ - public void setLineSeries(LineSeries lineSeries) { - this.lineSeries = lineSeries; - } - - /** - * Get the scatter series associated with the style data. - * - * @return The scatter series. - */ - public ScatterSeries getScatterSeries() { - return scatterSeries; - } - - /** - * Set the scatter series associated with the style data. - * - * @param scatterSeries The scatter series to set. - */ - public void setScatterSeries(ScatterSeries scatterSeries) { - this.scatterSeries = scatterSeries; - } - - /** - * Get the bar series associated with the style data. - * - * @return The bar series. - */ - public BarSeries getBarSeries() { - return barSeries; - } - - /** - * Set the bar series associated with the style data. - * - * @param barSeries The bar series to set. - */ - public void setBarSeries(BarSeries barSeries) { - this.barSeries = barSeries; - } - - /** - * Get the pie series associated with the style data. - * - * @return The pie series. - */ - public PieSeries getPieSeries() { - return pieSeries; - } - - /** - * Set the pie series associated with the style data. - * - * @param pieSeries The pie series to set. - */ - public void setPieSeries(PieSeries pieSeries) { - this.pieSeries = pieSeries; - } - -} - diff --git a/src/main/java/io/github/manishdait/jplotlib/chart/BarSeries.java b/src/main/java/io/github/manishdait/jplotlib/data/util/Data.java old mode 100644 new mode 100755 similarity index 76% rename from src/main/java/io/github/manishdait/jplotlib/chart/BarSeries.java rename to src/main/java/io/github/manishdait/jplotlib/data/util/Data.java index 72d61a7..1cc408a --- a/src/main/java/io/github/manishdait/jplotlib/chart/BarSeries.java +++ b/src/main/java/io/github/manishdait/jplotlib/data/util/Data.java @@ -22,22 +22,13 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.chart; - -import java.awt.Color; - -public class BarSeries { - - private Color color; - - public BarSeries() {} - - public Color getColor() { - return color; - } - - public void setColor(Color color) { - this.color = color; - } +package io.github.manishdait.jplotlib.data.util; +/** + * The Data interface defines a contract for data-related classes within the + * JplotLib library. Classes implementing this interface are expected to handle + * data management or representation. + * This interface serves as a base for various data-related functionalities. + */ +public interface Data { } diff --git a/src/main/java/io/github/manishdait/jplotlib/data/util/DataDiff.java b/src/main/java/io/github/manishdait/jplotlib/data/util/DataDiffer.java old mode 100644 new mode 100755 similarity index 64% rename from src/main/java/io/github/manishdait/jplotlib/data/util/DataDiff.java rename to src/main/java/io/github/manishdait/jplotlib/data/util/DataDiffer.java index 6423fc5..e5938be --- a/src/main/java/io/github/manishdait/jplotlib/data/util/DataDiff.java +++ b/src/main/java/io/github/manishdait/jplotlib/data/util/DataDiffer.java @@ -28,31 +28,34 @@ * The DataDiff class provides utility methods to calculate data differences. * */ +public class DataDiffer { -public class DataDiff { - - /** - * Calculate the value difference based on the given points and length. - * - * @param points The array of points. - * @param length The length of the data. - * @return The value difference. - */ - public static int getValDiff(double[] points, int length) { - double max = 1; - for(double j: points) { - if(j > max) { - max = j; + private DataDiffer() { + } + + static final int MAX_TICKS = 24; + + /** + * Calculate the value difference based on the given range and totalLength of + * data. + * + * @param range + * the difference between Upper and Lower bound. + * @param totalLength + * The total length of the data. + * @return The value difference. + */ + public static int getValDiff(double range, int totalLength) { + int valDiff = (int) range / totalLength; + + if (totalLength > 24) { + valDiff = (int) range / MAX_TICKS; } - } - - - int valDiff = (int) max / length; - if(max % points.length != 0) { - return ++valDiff; + if (range % totalLength != 0) { + valDiff = valDiff + 1; + } + return valDiff; } - return valDiff; - } - + } diff --git a/src/main/java/io/github/manishdait/jplotlib/data/util/PreProcessor.java b/src/main/java/io/github/manishdait/jplotlib/data/util/PreProcessor.java deleted file mode 100644 index 73388fd..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/data/util/PreProcessor.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.data.util; - -import java.util.ArrayList; -import java.util.List; - -import io.github.manishdait.jplotlib.data.Coordinates; - -/** - * The PreProcessor class provides utility methods for preprocessing data before - * plotting. - * - */ - -public class PreProcessor { - - /** - * Default Constuctor for PreProcessor. - */ - public PreProcessor () {} - - /** - * Process the x-coordinates from the given list of coordinates. - * - * @param coordinates The list of coordinates. - * @return The processed x-coordinates as an array of double. - */ - public double[] processX(List coordinates) { - List xPoints = new ArrayList(); - - for(int i = 0; i < coordinates.size(); i++) { - for(int j = 0; j < coordinates.get(i).getxPoints().length; j++) { - xPoints.add(coordinates.get(i).getxPoints()[j]); - } - } - - return transform(xPoints); - } - - /** - * Process the y-coordinates from the given list of coordinates. - * - * @param coordinates The list of coordinates. - * @return The processed y-coordinates as an array of double. - */ - public double[] processY(List coordinates) { - List yPoints = new ArrayList(); - - for(int i = 0; i < coordinates.size(); i++) { - for(int j = 0; j < coordinates.get(i).getyPoints().length; j++) { - yPoints.add(coordinates.get(i).getyPoints()[j]); - } - } - - return transform(yPoints); - } - - /** - * Convert List<> to double[] array. - * @param points List of points. - * @return array - */ - private double[] transform(List points) { - double[] data = new double[points.size()]; - - for(int i = 0; i < points.size(); i++) { - data[i] = points.get(i); - } - - return data; - } - - /** - * Get the maximum length of x-coordinates from the given list of coordinates. - * - * @param coordinates The list of coordinates. - * @return The maximum length of x-coordinates. - */ - public int getMaxLengthX(List coordinates) { - int len = 0; - - for(int i = 0; i < coordinates.size(); i++) { - if(len < coordinates.get(i).getxPoints().length) { - len = coordinates.get(i).getxPoints().length; - } - } - - return len; - } - - /** - * Get the maximum length of y-coordinates from the given list of coordinates. - * - * @param coordinates The list of coordinates. - * @return The maximum length of y-coordinates. - */ - public int getMaxLengthY(List coordinates) { - int len = 0; - - for(int i = 0; i < coordinates.size(); i++) { - if(len < coordinates.get(i).getyPoints().length) { - len = coordinates.get(i).getyPoints().length; - } - } - - return len; - } - - /** - * Get the upper bound of values from the given array of points. - * - * @param points The array of points. - * @return The upper bound value. - */ - public int getUpperBound(double[] points) { - int max = 1; - for(int i = 0; i < points.length; i++) { - if(points[i] > max) { - max = (int) points[i]; - } - } - - return max; - } - - /** - * Get the lower bound of values from the given array of points. - * - * @param points The array of points. - * @return The lower bound value. - */ - public int getLowerBound(double[] points) { - int min = Integer.MAX_VALUE; - for(int i = 0; i < points.length; i++) { - if(min > points[i]) { - min = (int) points[i]; - } - } - return min; - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/style/color/BaseColor.java b/src/main/java/io/github/manishdait/jplotlib/defaults/color/LibColor.java old mode 100644 new mode 100755 similarity index 88% rename from src/main/java/io/github/manishdait/jplotlib/style/color/BaseColor.java rename to src/main/java/io/github/manishdait/jplotlib/defaults/color/LibColor.java index 7659513..dfb4aa5 --- a/src/main/java/io/github/manishdait/jplotlib/style/color/BaseColor.java +++ b/src/main/java/io/github/manishdait/jplotlib/defaults/color/LibColor.java @@ -22,15 +22,15 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.style.color; +package io.github.manishdait.jplotlib.defaults.color; import java.awt.Color; /** - * The BaseColor enum represents a set of predefined colors. + * The LibColor enum represents a set of predefined colors. * */ -public enum BaseColor { +public enum LibColor { BLUE(new Color(31, 119, 181)), ORANGE(new Color(251, 127, 15)), @@ -45,12 +45,12 @@ public enum BaseColor { private Color color; - BaseColor(Color color) { + LibColor(Color color) { this.color = color; } /** - * Get the color associated with the BaseColor. + * Get the color associated with the LibColor. * * @return The color. */ diff --git a/src/main/java/io/github/manishdait/jplotlib/style/color/BaseSeriesColor.java b/src/main/java/io/github/manishdait/jplotlib/defaults/color/PlotColor.java old mode 100644 new mode 100755 similarity index 91% rename from src/main/java/io/github/manishdait/jplotlib/style/color/BaseSeriesColor.java rename to src/main/java/io/github/manishdait/jplotlib/defaults/color/PlotColor.java index 2f1b52f..38a7ed4 --- a/src/main/java/io/github/manishdait/jplotlib/style/color/BaseSeriesColor.java +++ b/src/main/java/io/github/manishdait/jplotlib/defaults/color/PlotColor.java @@ -22,16 +22,16 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.style.color; +package io.github.manishdait.jplotlib.defaults.color; import java.awt.Color; /** - * The BaseSeriesColor class provides a set of predefined colors for series in a + * The PLotColor class provides a set of predefined colors for series in a * chart. * */ -public class BaseSeriesColor { +public class PlotColor { private static final Color[] colors = { new Color(31, 119, 181), diff --git a/src/main/java/io/github/manishdait/jplotlib/style/line/BaseStroke.java b/src/main/java/io/github/manishdait/jplotlib/defaults/line/Stroke.java old mode 100644 new mode 100755 similarity index 89% rename from src/main/java/io/github/manishdait/jplotlib/style/line/BaseStroke.java rename to src/main/java/io/github/manishdait/jplotlib/defaults/line/Stroke.java index 78ff2db..980058c --- a/src/main/java/io/github/manishdait/jplotlib/style/line/BaseStroke.java +++ b/src/main/java/io/github/manishdait/jplotlib/defaults/line/Stroke.java @@ -22,13 +22,13 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.style.line; +package io.github.manishdait.jplotlib.defaults.line; /** - * The BaseStroke enum represents different types of line strokes. + * The Stroke enum represents different types of line strokes. * */ -public enum BaseStroke { +public enum Stroke { /** * No line stroke. diff --git a/src/main/java/io/github/manishdait/jplotlib/style/marker/BaseMarker.java b/src/main/java/io/github/manishdait/jplotlib/defaults/marker/Marker.java old mode 100644 new mode 100755 similarity index 89% rename from src/main/java/io/github/manishdait/jplotlib/style/marker/BaseMarker.java rename to src/main/java/io/github/manishdait/jplotlib/defaults/marker/Marker.java index fd3f1f1..686d48e --- a/src/main/java/io/github/manishdait/jplotlib/style/marker/BaseMarker.java +++ b/src/main/java/io/github/manishdait/jplotlib/defaults/marker/Marker.java @@ -22,14 +22,14 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.style.marker; +package io.github.manishdait.jplotlib.defaults.marker; /** - * The BaseMarker enum represents different types of markers for data points in + * The Marker enum represents different types of markers for data points in * a chart. * */ -public enum BaseMarker { +public enum Marker { /** * No marker. diff --git a/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Axis.java b/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Axis.java deleted file mode 100644 index 60d2860..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Axis.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.internal.component.axis; - -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Graphics2D; - -import javax.swing.JPanel; - -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.internal.util.Constants; - - -/** - * The Axis class represents a base class for building and drawing axes in - * Jplotlib charts. - * - * This class is used to create and draw the axes (X-axis and Y-axis) for - * Jplotlib charts. It provides - * functionality to build and render the axes with borders, ticks, and labels, - * based on the provided Graphics object, SeriesData, and JPanel context. - * - * The Axis class is not intended for direct instantiation, as it serves as a - * base class for specific axis implementations. Instead, specific axis classes - * such as HorizontalAxis and VerticalAxis extend this class to create and draw - * the respective axes. - * - * - */ - - -class Axis { - - protected Graphics2D g; - protected SeriesData seriesData; - protected JPanel context; - - /** - * Constructs a new Axis object with the specified Graphics, JPanel context, - * and SeriesData. - * - * @param g the Graphics object used for drawing the axis. - * @param context the JPanel context within which the axis will be drawn. - * @param seriesData the SeriesData containing data points for the chart. - */ - - public Axis(Graphics g, JPanel context, SeriesData seriesData) { - this.g = (Graphics2D) g; - this.seriesData = seriesData; - this.context = context; - } - - /** - * Builds and draws the borders for the X-axis and Y-axis of the chart. - */ - public void buildBorder() { - this.g.setStroke(new BasicStroke(1.2F)); - this.g.setColor(Color.BLACK); - - int height = this.context.getHeight(); - int width = this.context.getWidth(); - - this.g.drawLine( - Constants.MARGIN, - height - Constants.MARGIN, - width - Constants.MARGIN, - height - Constants.MARGIN - ); - this.g.drawLine( - Constants.MARGIN, - Constants.MARGIN, - width - Constants.MARGIN, - Constants.MARGIN - ); - - this.g.drawLine( - Constants.MARGIN, - Constants.MARGIN, - Constants.MARGIN, - height - Constants.MARGIN - ); - this.g.drawLine( - width - Constants.MARGIN, - Constants.MARGIN, - width - Constants.MARGIN, - height - Constants.MARGIN - ); - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/AxisBuilder.java b/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/AxisBuilder.java deleted file mode 100644 index b498869..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/AxisBuilder.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.internal.component.axis; - -import java.awt.Graphics; - -import javax.swing.JPanel; - -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.internal.util.AxisType; - -/** - * The AxisBuilder class is responsible for building and rendering the axis - * components for Jplotlib charts. - * - * This class extends the Coordinate class, which provides the functionality for - * drawing and labeling the X-axis and Y-axis. The AxisBuilder further enhances - * this functionality by adding a border and grid for non-pie charts. - * - * The AxisBuilder is not intended for direct instantiation, as it is used - * internally by Jplotlib to render the axis components. - * - * - */ - -public class AxisBuilder extends Coordinate { - - /** - * Constructs a new AxisBuilder object with the specified Graphics, JPanel - * context, and SeriesData. - * - * @param g the Graphics object used for drawing the axis components. - * @param context the JPanel context within which the axis components will be - * drawn. - * @param seriesData the SeriesData containing data points for the chart. - */ - public AxisBuilder(Graphics g, JPanel context, SeriesData seriesData) { - super(g, context, seriesData); - } - - /** - * Builds and renders the axis components, including the border and grid - * (if applicable) for non-pie charts. - */ - public void buildAxis() { - if(seriesData.getAxisType() != AxisType.PIE) { - buildBorder(); - drawCoordinates(); - - new Grid(g, context, seriesData).buildGrid(); - } - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Coordinate.java b/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Coordinate.java deleted file mode 100644 index 34cb92d..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Coordinate.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.internal.component.axis; - -import java.awt.Graphics; -import java.awt.RenderingHints; - -import javax.swing.JPanel; - -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.data.util.DataDiff; -import io.github.manishdait.jplotlib.data.util.PreProcessor; -import io.github.manishdait.jplotlib.internal.util.AxisType; -import io.github.manishdait.jplotlib.internal.util.Constants; - - - -/** - * The Coordinate class represents an axis layout and labeling component for - * Jplotlib charts. - * - * This class is responsible for drawing and labeling the X-axis and Y-axis of - * Jplotlib charts. It calculates the axis bounds, increments, and labels based - * on the provided Graphics, JPanel context, and SeriesData. The layout and - * labels are rendered dynamically based on the data points and chart type. - * - * The Coordinate class is not intended for direct instantiation, as it is used - * internally by other Jplotlib components. It extends the Axis class, which is - * a base class for building and drawing axes in Jplotlib charts. - * - * - */ - -class Coordinate extends Axis { - private int yUpperBound; - private int xUpperBound; - - private int yLowerBound; - private int xLowerBound; - - private double[] xPoints; - private double[] yPoints; - - private PreProcessor preProcessor; - - /** - * Constructs a new Coordinate object with the specified Graphics, JPanel - * context, and SeriesData. - * - * @param g the Graphics object used for drawing the axes. - * @param context the JPanel context within which the axes will be drawn. - * @param seriesData the SeriesData containing data points for the chart. - */ - public Coordinate(Graphics g, JPanel context, SeriesData seriesData) { - super(g, context, seriesData); - this.preProcessor = new PreProcessor(); - } - - /** - * Draws the X-axis and Y-axis coordinates, labels, and ticks based on the - * SeriesData. - */ - public void drawCoordinates() { - this.xPoints = preProcessor.processX(seriesData.getCoordinates()); - this.yPoints = preProcessor.processY(seriesData.getCoordinates()); - - this.xUpperBound = preProcessor.getUpperBound(xPoints); - this.yUpperBound = preProcessor.getUpperBound(yPoints); - - this.xLowerBound = preProcessor.getLowerBound(xPoints); - this.yLowerBound = preProcessor.getLowerBound(yPoints); - - seriesData.setxUpperBound(this.xUpperBound); - seriesData.setyUpperBound(this.yUpperBound); - - seriesData.setyLowerBound(this.yLowerBound); - seriesData.setxLowerBound(this.xLowerBound); - - this.g.setRenderingHint( - RenderingHints.KEY_TEXT_ANTIALIASING, - RenderingHints.VALUE_TEXT_ANTIALIAS_ON - ); - this.g.setRenderingHint( - RenderingHints.KEY_RENDERING, - RenderingHints.VALUE_RENDER_QUALITY - ); - - if(seriesData.getAxisType() != AxisType.BAR) { - baseLayout(); - } else { - barLayout(); - } - } - - private void baseLayout() { - int xBound = xUpperBound - xLowerBound; - int xValDiff = DataDiff.getValDiff( - xPoints, - preProcessor.getMaxLengthX(seriesData.getCoordinates()) - ); - int totalX = xBound / xValDiff; - totalX = (xBound % xValDiff) == 0 ? totalX : totalX + 1; - int xIncrement = getIncrement(this.context.getWidth(), totalX); - - seriesData.setxValDiff(xValDiff); - seriesData.setxIncrement(xIncrement); - - int yBound = yUpperBound - yLowerBound; - int yValDiff = DataDiff.getValDiff( - yPoints, - preProcessor.getMaxLengthY(seriesData.getCoordinates()) - ); - int totalY = yBound / yValDiff; - totalY = (yBound % yValDiff) == 0 ? totalY : totalY + 1; - int yIncrement = getIncrement(this.context.getHeight(), totalY); - - seriesData.setyValDiff(yValDiff); - seriesData.setyIncrement(yIncrement); - - int extraSpace = (int) (Math.max(xIncrement, yIncrement) * 0.25); - - for(int i = 0; i <= totalX; i ++) { - int x = Constants.MARGIN + xIncrement * i; - int y = this.context.getHeight() - Constants.MARGIN + 20; - int val = xValDiff * i + xLowerBound; - this.g.drawString(Integer.toString(val), x + extraSpace, y); - } - - for(int i = 0; i <= (totalY); i ++) { - int x = Constants.MARGIN - 30; - int y = this.context.getHeight() - Constants.MARGIN - yIncrement * i; - int val = yValDiff * i + yLowerBound; - this.g.drawString(Integer.toString(val), x, y - extraSpace ); - } - } - - private void barLayout() { - int totalX = seriesData.getLabel().length; - int xIncrement = getIncrement(this.context.getWidth(), totalX * 2); - - for(int i = 0; i < totalX; i++) { - int x = Constants.MARGIN + (xIncrement * (i * 2 + 1)); - int y = this.context.getHeight() - Constants.MARGIN + 20; - this.g.drawString(seriesData.getLabel()[i], x, y); - } - - seriesData.setxIncrement(xIncrement); - - int yBound = yUpperBound - yLowerBound; - int yValDiff = DataDiff.getValDiff( - yPoints, - preProcessor.getMaxLengthY(seriesData.getCoordinates()) - ); - int totalY = yBound / yValDiff; - totalY = (yBound % yValDiff) == 0 ? totalY : totalY + 1; - int yIncrement = getIncrement(this.context.getHeight(), totalY); - - seriesData.setyValDiff(yValDiff); - seriesData.setxValDiff(yValDiff); - seriesData.setyIncrement(yIncrement); - - int extraSpace = (int) (Math.max(xIncrement, yIncrement) * 0.25); - - for(int i = 0; i <= totalY; i ++) { - int x = Constants.MARGIN - 30; - int y = this.context.getHeight() - Constants.MARGIN - yIncrement * i; - int val = yValDiff * i + yLowerBound; - this.g.drawString(Integer.toString(val), x, y - extraSpace ); - } - } - - - private int getIncrement(int width, int total) { - return (width - Constants.MARGIN * 2) / (total + 1); - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Grid.java b/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Grid.java deleted file mode 100644 index 7051cec..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/internal/component/axis/Grid.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.internal.component.axis; - -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Graphics2D; - -import javax.swing.JPanel; - -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.internal.util.AxisType; -import io.github.manishdait.jplotlib.internal.util.Constants; - - -/** - * The Grid class is responsible for drawing the grid lines on the chart. - * - * This class provides methods to build the grid lines for different chart types, - * including regular plot charts and bar charts. The grid lines are drawn based - * on the data points and axis bounds provided in the SeriesData object. - * - * The Grid class is used internally by the Jplotlib library and is not intended - * to be used directly by users - * - * - */ - -class Grid { - - private Graphics2D g; - private SeriesData seriesData; - private JPanel context; - - int xTotalPoints; - int yTotalPoints; - - int xBounds; - int yBounds; - - int xValDiff; - int yValDiff; - - /** - * Constructs a Grid object with the specified graphics context, chart context, - * and series data. - * - * @param g the graphics context for drawing the grid lines. - * @param context the chart context (JPanel) where the grid lines will be - * drawn. - * @param seriesData the series data containing the data points and axis - * bounds. - */ - public Grid(Graphics g, JPanel context, SeriesData seriesData) { - this.g = (Graphics2D) g; - this.seriesData = seriesData; - this.context = context; - } - - /** - * Builds the grid lines for the chart based on the chart type (plot or bar). - */ - public void buildGrid() { - - this.g.setColor(new Color(176, 176, 176, 255)); - - xBounds = seriesData.getxUpperBound() - seriesData.getxLowerBound(); - yBounds = seriesData.getyUpperBound() - seriesData.getyLowerBound(); - - xValDiff = seriesData.getxValDiff(); - yValDiff = seriesData.getyValDiff(); - - xTotalPoints = xBounds / xValDiff; - yTotalPoints = yBounds / yValDiff; - - xTotalPoints = (xBounds % xValDiff) == 0 ? xTotalPoints : xTotalPoints + 1; - yTotalPoints = (yBounds % yValDiff) == 0 ? yTotalPoints : yTotalPoints + 1; - - if(seriesData.getAxisType() != AxisType.BAR) { - baseGrid(); - } else { - barGrid(); - } - - } - - /** - * Draws the grid lines for regular plot charts. - */ - private void baseGrid() { - int xIncrement = this.seriesData.getxIncrement(); - int yIncrement = this.seriesData.getyIncrement(); - - int extraSpace = (int) (Math.max(xIncrement, yIncrement) * 0.25); - - if (this.seriesData.isxGrid()) { - for(int i = 0; i <= xTotalPoints; i ++) { - int x = Constants.MARGIN + (xIncrement * i) + extraSpace; - this.g.drawLine( - x, - Constants.MARGIN, - x, - this.context.getHeight() - Constants.MARGIN - ); - } - } - - if (this.seriesData.isyGrid()) { - for(int i = 0; i <= yTotalPoints; i ++) { - int y = this.context.getHeight() - Constants.MARGIN - (yIncrement * i); - this.g.drawLine( - Constants.MARGIN, - y - extraSpace, - this.context.getWidth() - Constants.MARGIN, - y - extraSpace - ); - } - } - } - - /** - * Draws the grid lines for bar charts. - */ - private void barGrid() { - int xIncrement = this.seriesData.getxIncrement(); - int yIncrement = this.seriesData.getyIncrement(); - - int extraSpace = (int) (Math.max(xIncrement, yIncrement) * 0.25); - - if (this.seriesData.isxGrid()) { - for(int i = 0; i < seriesData.getLabel().length; i ++) { - int x = Constants.MARGIN + (xIncrement * (i*2+1)); - this.g.drawLine( - x, - Constants.MARGIN, - x, - this.context.getHeight() - Constants.MARGIN - ); - } - } - - if (this.seriesData.isyGrid()) { - for(int i = 0; i <= yTotalPoints; i ++) { - int y = this.context.getHeight() - Constants.MARGIN - (yIncrement * i); - this.g.drawLine( - Constants.MARGIN, - y - extraSpace, - this.context.getWidth() - Constants.MARGIN, - y - extraSpace - ); - } - } - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Axis.java b/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Axis.java new file mode 100755 index 0000000..1688d76 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Axis.java @@ -0,0 +1,89 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.internals.components.axis; + +import java.awt.Graphics; +import java.awt.Graphics2D; + +import javax.swing.JPanel; + +import io.github.manishdait.jplotlib.internals.util.AxisType; + +/** + * The Axis class is responsible for building and rendering the axis components + * for Jplotlib charts. + * + * This class calls the functions of Border and Coordinate class, which provides + * the functionality for drawing and labeling the X-axis and Y-axis. The Axis + * further enhances + * this functionality by adding a grid for non-pie charts. + * + * The Axis is not intended for direct instantiation, as it is used internally + * by Jplotlib to render the axis components. + * + * + */ +public class Axis { + + private Graphics2D g; + private JPanel context; + private Config axisConfiguration; + + /** + * Constructs a new Axis object with the specified Graphics, JPanel + * context, and AxisConfiguration. + * + * @param g + * the Graphics object used for drawing the axis + * components. + * @param context + * the JPanel context within which the axis components + * will be + * drawn. + * @param axisConfiguration + * the Configuration for rendering axis. + */ + public Axis(Graphics g, JPanel context, Config axisConfiguration) { + this.g = (Graphics2D) g; + this.context = context; + this.axisConfiguration = axisConfiguration; + } + + /** + * Builds and renders the axis components, including the border, coordinate and + * grid (if applicable) for non-pie charts. + */ + public void drawAxis() { + if (axisConfiguration.getAxisType() != AxisType.PIE) { + new Border(g, context).drawBorder(); + new Coordinate(g, context, axisConfiguration).drawCoordinates(); + new Grid(g, context, axisConfiguration).buildGrid(); + } else { + axisConfiguration.setyLabel(""); + axisConfiguration.setxLabel(""); + } + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Border.java b/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Border.java new file mode 100755 index 0000000..80f652c --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Border.java @@ -0,0 +1,89 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.internals.components.axis; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; + +import javax.swing.JPanel; + +import io.github.manishdait.jplotlib.internals.util.Constants; + +/** + * The Border class represents a class for building and drawing axis border in + * Jplotlib charts. + * + * This class is used to create and draw the axis (X-axis and Y-axis) for + * Jplotlib charts. It provides functionality to build and render the axis with + * borders based on the provided Graphics object, AxisConfiguration, and JPanel + * context. + * + * The Border class is not intended for direct instantiation, as it serves as a + * class for specific axis implementations. + * + */ +class Border { + protected Graphics2D g; + protected JPanel context; + + /** + * Constructs a new Border object with the specified Graphics, JPanel context. + * + * @param g + * the Graphics object used for drawing the axis. + * @param context + * the JPanel context within which the axis will be + * drawn. + */ + public Border(Graphics g, JPanel context) { + this.g = (Graphics2D) g; + this.context = context; + } + + /** + * Draws the borders for the X-axis and Y-axis of the chart. + */ + public void drawBorder() { + this.g.setStroke(new BasicStroke(1.4F)); + this.g.setColor(Color.BLACK); + + int height = this.context.getHeight(); + int width = this.context.getWidth(); + + this.g.drawLine( + Constants.MARGIN, + height - Constants.MARGIN, + width - Constants.MARGIN, + height - Constants.MARGIN); + + this.g.drawLine( + Constants.MARGIN, + Constants.MARGIN, + Constants.MARGIN, + height - Constants.MARGIN); + } +} diff --git a/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Config.java b/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Config.java new file mode 100755 index 0000000..e88b0f6 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Config.java @@ -0,0 +1,215 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.internals.components.axis; + +import io.github.manishdait.jplotlib.internals.util.AxisType; + +/** + * Configuration class for defining axis properties in a chart. + */ +public class Config { + + private AxisType axisType; + private String title = ""; + private String xLabel = ""; + private String yLabel = ""; + + private int xIncrement; + private int yIncrement; + + private int xUpperBound = 0; + private int yUpperBound = 0; + + private int xLowerBound = Integer.MAX_VALUE; + private int yLowerBound = Integer.MAX_VALUE; + + private int xValDiff; + private int yValDiff; + + private int maxXLength = 0; + private int maxYLength = 0; + + private int totalXLength = 0; + private int totalYLength = 0; + + private int barLabelLen = 0; + + private boolean xGrid; + private boolean yGrid; + + public AxisType getAxisType() { + return axisType; + } + + public void setAxisType(AxisType axisType) { + this.axisType = axisType; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getxLabel() { + return xLabel; + } + + public void setxLabel(String xLabel) { + this.xLabel = xLabel; + } + + public String getyLabel() { + return yLabel; + } + + public void setyLabel(String yLabel) { + this.yLabel = yLabel; + } + + public int getxIncrement() { + return xIncrement; + } + + public void setxIncrement(int xIncrement) { + this.xIncrement = xIncrement; + } + + public int getyIncrement() { + return yIncrement; + } + + public void setyIncrement(int yIncrement) { + this.yIncrement = yIncrement; + } + + public int getxUpperBound() { + return xUpperBound; + + } + + public void setxUpperBound(int xUpperBound) { + this.xUpperBound = xUpperBound; + } + + public int getyUpperBound() { + return yUpperBound; + } + + public void setyUpperBound(int yUpperBound) { + this.yUpperBound = yUpperBound; + } + + public int getxLowerBound() { + return xLowerBound; + } + + public void setxLowerBound(int xLowerBound) { + this.xLowerBound = xLowerBound; + } + + public int getyLowerBound() { + return yLowerBound; + } + + public void setyLowerBound(int yLowerBound) { + this.yLowerBound = yLowerBound; + } + + public int getMaxXLength() { + return maxXLength; + } + + public void setMaxXLength(int maxXLength) { + this.maxXLength = maxXLength; + } + + public int getMaxYLength() { + return maxYLength; + } + + public void setMaxYLength(int maxYLength) { + this.maxYLength = maxYLength; + } + + public int getTotalXLength() { + return totalXLength; + } + + public void setTotalXLength(int totalXLength) { + this.totalXLength = totalXLength; + } + + public int getTotalYLength() { + return totalYLength; + } + + public void setTotalYLength(int totalYLength) { + this.totalYLength = totalYLength; + } + + public int getxValDiff() { + return xValDiff; + } + + public void setxValDiff(int xValDiff) { + this.xValDiff = xValDiff; + } + + public int getyValDiff() { + return yValDiff; + } + + public void setyValDiff(int yValDiff) { + this.yValDiff = yValDiff; + } + + public int getBarLabelLen() { + return barLabelLen; + } + + public void setBarLabelLen(int barLabelsLen) { + this.barLabelLen = barLabelsLen; + } + + public boolean isxGrid() { + return xGrid; + } + + public void setxGrid(boolean xGrid) { + this.xGrid = xGrid; + } + + public boolean isyGrid() { + return yGrid; + } + + public void setyGrid(boolean yGrid) { + this.yGrid = yGrid; + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Coordinate.java b/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Coordinate.java new file mode 100755 index 0000000..5df71a8 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Coordinate.java @@ -0,0 +1,218 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.internals.components.axis; + +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.util.Map; + +import javax.swing.JPanel; + +import io.github.manishdait.jplotlib.data.GraphData; +import io.github.manishdait.jplotlib.data.util.DataDiffer; +import io.github.manishdait.jplotlib.internals.util.AxisType; +import io.github.manishdait.jplotlib.internals.util.Constants; + +/** + * The Coordinate class represents an axis layout and labeling component for + * Jplotlib charts. + * + * This class is responsible for labeling coordinates of the X-axis and Y-axis + * of Jplotlib charts. It calculates the axis tange, increments, and ticks based + * on the provided Graphics, JPanel context, and AxisConfiguration data. + * The coordinates are rendered dynamically based on the data points and chart + * type. + * + * The Coordinate class is not intended for direct instantiation, as it is + * internally used by Jplotlib. + * + */ +class Coordinate { + + private Graphics2D g; + private Config axisConfiguration; + private int heigth; + private int width; + + protected Coordinate() { + } + + /** + * Constructs a new Coordinate object with the specified Graphics, JPanel + * context, and AxisConfiguration. + * + * @param g + * the Graphics object used for drawing the axes. + * @param context + * the JPanel context within which the axes will be + * drawn. + * @param axisConfiguration + * the Configuration for rendering axis. + */ + public Coordinate(Graphics g, JPanel context, Config axisConfiguration) { + this.g = (Graphics2D) g; + this.axisConfiguration = axisConfiguration; + this.g.setRenderingHint( + RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + this.g.setRenderingHint( + RenderingHints.KEY_RENDERING, + RenderingHints.VALUE_RENDER_QUALITY); + this.heigth = context.getHeight(); + this.width = context.getWidth(); + } + + /** + * Draws the X-axis and Y-axis coordinates,and ticks based on the + * AxisConfiguration. + */ + public void drawCoordinates() { + if (axisConfiguration.getAxisType() != AxisType.BAR) { + baseLayout(); + } else { + barLayout(); + } + } + + private void baseLayout() { + int xRange = axisConfiguration.getxUpperBound() - axisConfiguration.getxLowerBound(); + int xValDiff = DataDiffer.getValDiff(xRange, axisConfiguration.getTotalXLength()); + + int totalX = getTotalTicks(xRange, xValDiff); + int xIncrement = getIncrement(width, totalX); + + axisConfiguration.setxValDiff(xValDiff); + axisConfiguration.setxIncrement(xIncrement); + + int yRange = axisConfiguration.getyUpperBound() - axisConfiguration.getyLowerBound(); + int yValDiff = DataDiffer.getValDiff(yRange, axisConfiguration.getTotalYLength()); + + int totalY = getTotalTicks(yRange, yValDiff); + int yIncrement = getIncrement(heigth, totalY); + + axisConfiguration.setyValDiff(yValDiff); + axisConfiguration.setyIncrement(yIncrement); + + int extraSpace = (int) (Math.min(xIncrement, yIncrement) * 0.5) - 2; + g.setFont(new Font("Arial", Font.PLAIN, 11)); + + for (int i = 0; i <= totalX; i++) { + int x = Constants.MARGIN + xIncrement * i; + int y = heigth - Constants.MARGIN + 14; + int val = xValDiff * i + axisConfiguration.getxLowerBound(); + this.g.drawString(Integer.toString(val), x + extraSpace, y); + } + + for (int i = 0; i <= (totalY); i++) { + int y = heigth - Constants.MARGIN - yIncrement * i; + int val = yValDiff * i + axisConfiguration.getyLowerBound(); + int x = Constants.MARGIN - (String.valueOf(val).length() * 8); + this.g.drawString(Integer.toString(val), x, y - extraSpace); + } + } + + private void barLayout() { + g.setFont(new Font("Arial", Font.PLAIN, 11)); + if (!GraphData.isX()) { + int totalX = axisConfiguration.getBarLabelLen(); + int xIncrement = getIncrement(width, totalX * 2); + + int indx = 0; + for (Map.Entry set : GraphData.getMap().entrySet()) { + int x = Constants.MARGIN + (xIncrement * (indx * 2 + 1)); + int y = heigth - Constants.MARGIN + 20; + this.g.drawString(set.getKey(), x, y); + indx += 1; + } + + axisConfiguration.setxIncrement(xIncrement); + + int yRange = axisConfiguration.getyUpperBound() - axisConfiguration.getyLowerBound(); + int yValDiff = DataDiffer.getValDiff( + yRange, + axisConfiguration.getTotalYLength()); + int totalY = getTotalTicks(yRange, yValDiff); + int yIncrement = getIncrement(this.heigth, totalY); + + axisConfiguration.setyValDiff(yValDiff); + axisConfiguration.setxValDiff(yValDiff); + axisConfiguration.setyIncrement(yIncrement); + + int extraSpace = (int) (Math.min(xIncrement, yIncrement) * 0.5); + + for (int i = 0; i <= totalY; i++) { + int y = heigth - Constants.MARGIN - yIncrement * i; + int val = yValDiff * i + axisConfiguration.getyLowerBound(); + int x = Constants.MARGIN - (String.valueOf(val).length() * 9); + this.g.drawString(Integer.toString(val), x, y - extraSpace); + } + } else { + int totalY = axisConfiguration.getBarLabelLen(); + int yIncrement = getIncrement(heigth, totalY * 2); + + int indx = 0; + for (Map.Entry set : GraphData.getMap().entrySet()) { + String val = set.getKey(); + int x = Constants.MARGIN - (String.valueOf(val).length() * 9); + int y = this.heigth - Constants.MARGIN - yIncrement * (indx * 2 + 1); + this.g.drawString(val, x, y); + indx += 1; + } + + axisConfiguration.setyIncrement(yIncrement); + + int xRange = axisConfiguration.getxUpperBound() - axisConfiguration.getxLowerBound(); + int xValDiff = DataDiffer.getValDiff( + xRange, + axisConfiguration.getTotalXLength()); + int totalX = getTotalTicks(xRange, xValDiff); + int xIncrement = getIncrement(this.width, totalX); + + axisConfiguration.setyValDiff(xValDiff); + axisConfiguration.setxValDiff(xValDiff); + axisConfiguration.setxIncrement(xIncrement); + + int extraSpace = (int) (Math.min(xIncrement, yIncrement) * 0.5); + + for (int i = 0; i <= totalX; i++) { + int x = Constants.MARGIN + xIncrement * i; + int y = heigth - Constants.MARGIN + 14; + int val = xValDiff * i + axisConfiguration.getxLowerBound(); + this.g.drawString(Integer.toString(val), x + extraSpace, y); + } + } + } + + protected int getIncrement(int width, int total) { + return (width - Constants.MARGIN * 2) / (total + 1); + } + + protected int getTotalTicks(int range, int valDiff) { + return (range % valDiff) == 0 ? (range / valDiff) : (range / valDiff) + 1; + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Grid.java b/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Grid.java new file mode 100755 index 0000000..73c46a6 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/internals/components/axis/Grid.java @@ -0,0 +1,209 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.internals.components.axis; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; + +import javax.swing.JPanel; + +import io.github.manishdait.jplotlib.data.GraphData; +import io.github.manishdait.jplotlib.internals.util.AxisType; +import io.github.manishdait.jplotlib.internals.util.Constants; + +/** + * The Grid class is responsible for drawing the grid lines on the chart. + * + * This class provides methods to build the grid lines for different chart + * types, including regular plot charts and bar charts. The grid lines are drawn + * based on the data points and axis bounds provided in the AixsConfiguration + * object. + * + * The Grid class is used internally by the Jplotlib library and is not intended + * to be used directly by users. + * + */ +class Grid { + + private Graphics2D g; + private Config axisConfiguration; + private JPanel context; + + int xTotalPoints; + int yTotalPoints; + + int xBounds; + int yBounds; + + int xValDiff; + int yValDiff; + + /** + * Constructs a Grid object with the specified graphics, JPanel context, + * and axisConfiguration. + * + * @param g + * the graphics context for drawing the grid lines. + * @param context + * the chart context (JPanel) where the grid lines will + * be + * drawn. + * @param axisConfiguration + * the Configuration for rendering axis. + */ + public Grid(Graphics g, JPanel context, Config axisConfiguration) { + this.g = (Graphics2D) g; + this.axisConfiguration = axisConfiguration; + this.context = context; + } + + /** + * Builds the grid lines for the chart based on the chart type (plot or bar). + */ + public void buildGrid() { + + this.g.setColor(new Color(231, 231, 231)); + this.g.setStroke(new BasicStroke(1.4F)); + + xBounds = axisConfiguration.getxUpperBound() - axisConfiguration.getxLowerBound(); + yBounds = axisConfiguration.getyUpperBound() - axisConfiguration.getyLowerBound(); + + xValDiff = axisConfiguration.getxValDiff(); + yValDiff = axisConfiguration.getyValDiff(); + + xTotalPoints = xBounds / xValDiff; + yTotalPoints = yBounds / yValDiff; + + xTotalPoints = (xBounds % xValDiff) == 0 ? xTotalPoints : xTotalPoints + 1; + yTotalPoints = (yBounds % yValDiff) == 0 ? yTotalPoints : yTotalPoints + 1; + + if (axisConfiguration.getAxisType() != AxisType.BAR) { + baseGrid(); + } else { + barGrid(); + } + + } + + /** + * Draws the grid lines for regular plot charts. + */ + private void baseGrid() { + int xIncrement = this.axisConfiguration.getxIncrement(); + int yIncrement = this.axisConfiguration.getyIncrement(); + + int extraSpace = (int) (Math.min(xIncrement, yIncrement) * 0.5); + + if (this.axisConfiguration.isxGrid()) { + for (int i = 0; i <= xTotalPoints; i++) { + int x = Constants.MARGIN + (xIncrement * i) + extraSpace; + this.g.drawLine( + x, + Constants.MARGIN + 1, + x, + this.context.getHeight() - Constants.MARGIN - 1); + } + } + + if (this.axisConfiguration.isyGrid()) { + for (int i = 0; i <= yTotalPoints; i++) { + int y = this.context.getHeight() - Constants.MARGIN - (yIncrement * i); + this.g.drawLine( + Constants.MARGIN + 1, + y - extraSpace, + this.context.getWidth() - Constants.MARGIN - 1, + y - extraSpace); + } + } + } + + /** + * Draws the grid lines for bar charts. + */ + private void barGrid() { + if (!GraphData.isX()) { + plotBarGridForX(); + } else { + int xIncrement = this.axisConfiguration.getxIncrement(); + int yIncrement = this.axisConfiguration.getyIncrement(); + + int extraSpace = (int) (Math.min(xIncrement, yIncrement) * 0.5); + + if (this.axisConfiguration.isxGrid()) { + for (int i = 0; i <= xTotalPoints; i++) { + int x = Constants.MARGIN + xIncrement * i; + this.g.drawLine( + x + extraSpace, + Constants.MARGIN, + x + extraSpace, + this.context.getHeight() - Constants.MARGIN); + } + } + + if (this.axisConfiguration.isyGrid()) { + for (int i = 0; i < axisConfiguration.getBarLabelLen(); i++) { + int y = this.context.getHeight() - Constants.MARGIN - yIncrement * (i * 2 + 1); + this.g.drawLine( + Constants.MARGIN, + y, + this.context.getWidth() - Constants.MARGIN, + y); + } + } + } + } + + private void plotBarGridForX() { + int xIncrement = this.axisConfiguration.getxIncrement(); + int yIncrement = this.axisConfiguration.getyIncrement(); + + int extraSpace = (int) (Math.min(xIncrement, yIncrement) * 0.5); + + if (this.axisConfiguration.isxGrid()) { + for (int i = 0; i < axisConfiguration.getBarLabelLen(); i++) { + int x = Constants.MARGIN + (xIncrement * (i * 2 + 1)); + this.g.drawLine( + x, + Constants.MARGIN, + x, + this.context.getHeight() - Constants.MARGIN); + } + } + + if (this.axisConfiguration.isyGrid()) { + for (int i = 0; i <= yTotalPoints; i++) { + int y = this.context.getHeight() - Constants.MARGIN - (yIncrement * i); + this.g.drawLine( + Constants.MARGIN, + y - extraSpace, + this.context.getWidth() - Constants.MARGIN, + y - extraSpace); + } + } + } + +} diff --git a/src/main/java/io/github/manishdait/jplotlib/internal/component/label/AxisLabel.java b/src/main/java/io/github/manishdait/jplotlib/internals/components/label/AxisLabel.java old mode 100644 new mode 100755 similarity index 84% rename from src/main/java/io/github/manishdait/jplotlib/internal/component/label/AxisLabel.java rename to src/main/java/io/github/manishdait/jplotlib/internals/components/label/AxisLabel.java index e6e1672..cacc4ae --- a/src/main/java/io/github/manishdait/jplotlib/internal/component/label/AxisLabel.java +++ b/src/main/java/io/github/manishdait/jplotlib/internals/components/label/AxisLabel.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.internal.component.label; +package io.github.manishdait.jplotlib.internals.components.label; import java.awt.Font; @@ -38,19 +38,17 @@ * * The AxisLabel is not intended for direct instantiation, as it is used * internally by Jplotlib to create axis labels. - * * */ - public class AxisLabel extends JLabel { - - /** - * Constructs a new AxisLabel with default settings. - */ - public AxisLabel() { - super(); - super.setHorizontalAlignment(CENTER); - super.setFont(new Font("Arial", Font.BOLD, 12)); - } + + /** + * Constructs a new AxisLabel with default settings. + */ + public AxisLabel() { + super(); + super.setHorizontalAlignment(CENTER); + super.setFont(new Font("Arial", Font.BOLD, 12)); + } } diff --git a/src/main/java/io/github/manishdait/jplotlib/internal/component/label/TitleLabel.java b/src/main/java/io/github/manishdait/jplotlib/internals/components/label/TitleLabel.java old mode 100644 new mode 100755 similarity index 82% rename from src/main/java/io/github/manishdait/jplotlib/internal/component/label/TitleLabel.java rename to src/main/java/io/github/manishdait/jplotlib/internals/components/label/TitleLabel.java index 3ee8eb9..8495149 --- a/src/main/java/io/github/manishdait/jplotlib/internal/component/label/TitleLabel.java +++ b/src/main/java/io/github/manishdait/jplotlib/internals/components/label/TitleLabel.java @@ -22,35 +22,33 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.internal.component.label; +package io.github.manishdait.jplotlib.internals.components.label; import java.awt.Font; import javax.swing.JLabel; /** - * The TitleLabel class represents a label used for chart titles in Jplotlib + * The TitleLabel class represents a label used for chart titles in Jplotlib * charts. * - * This class extends the JLabel class and provides additional functionality - * specific to chart titles, such as centering the text and setting a default + * This class extends the JLabel class and provides additional functionality + * specific to chart titles, such as centering the text and setting a default * font. * - * The TitleLabel is not intended for direct instantiation, as it is used + * The TitleLabel is not intended for direct instantiation, as it is used * internally by Jplotlib to create chart titles. * - * */ - public class TitleLabel extends JLabel { - - /** - * Constructs a new TitleLabel with default settings. - */ - public TitleLabel() { - super(); - super.setHorizontalAlignment(CENTER); - super.setFont(new Font("Arial", Font.BOLD, 16)); - } + + /** + * Constructs a new TitleLabel with default settings. + */ + public TitleLabel() { + super(); + super.setHorizontalAlignment(CENTER); + super.setFont(new Font("Arial", Font.BOLD, 16)); + } } diff --git a/src/main/java/io/github/manishdait/jplotlib/internal/component/label/VerticalAxisLabel.java b/src/main/java/io/github/manishdait/jplotlib/internals/components/label/VerticalAxisLabel.java old mode 100644 new mode 100755 similarity index 66% rename from src/main/java/io/github/manishdait/jplotlib/internal/component/label/VerticalAxisLabel.java rename to src/main/java/io/github/manishdait/jplotlib/internals/components/label/VerticalAxisLabel.java index 67565dc..36de6c8 --- a/src/main/java/io/github/manishdait/jplotlib/internal/component/label/VerticalAxisLabel.java +++ b/src/main/java/io/github/manishdait/jplotlib/internals/components/label/VerticalAxisLabel.java @@ -22,14 +22,14 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.internal.component.label; +package io.github.manishdait.jplotlib.internals.components.label; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; /** - * The VerticalAxisLabel class represents a label used for vertical axis titles + * The VerticalAxisLabel class represents a label used for vertical axis titles * in Jplotlib charts. * * This class extends the AxisLabel class and provides additional functionality @@ -39,39 +39,36 @@ * The VerticalAxisLabel is not intended for direct instantiation, as it is used * internally by Jplotlib to create vertical axis labels. * - * */ - public class VerticalAxisLabel extends AxisLabel { - /** - * Constructs a new VerticalAxisLabel with default settings. - */ - public VerticalAxisLabel() { - super(); - super.setHorizontalAlignment(CENTER); - super.setVerticalAlignment(TOP); - } - - @Override - public void paintComponent(Graphics g) { - Graphics2D g2d = (Graphics2D) g.create(); - int labelWidth = getWidth(); - int labelHeight = getHeight(); - int centerX = labelWidth / 2; - int centerY = labelHeight / 2; + /** + * Constructs a new VerticalAxisLabel with default settings. + */ + public VerticalAxisLabel() { + super(); + super.setHorizontalAlignment(CENTER); + super.setVerticalAlignment(TOP); + } - g2d.translate(centerX, centerY); + @Override + public void paintComponent(Graphics g) { + Graphics2D g2d = (Graphics2D) g.create(); + int labelWidth = getWidth(); + int labelHeight = getHeight(); + int centerX = labelWidth / 2; + int centerY = labelHeight / 2; - g2d.rotate(Math.toRadians(-90)); + g2d.translate(centerX, centerY); - FontMetrics fm = g2d.getFontMetrics(); - int textWidth = fm.stringWidth(getText()); - int textHeight = fm.getHeight(); - g2d.drawString(getText(), -textWidth / 2, textHeight / 4); + g2d.rotate(Math.toRadians(-90)); - g2d.dispose(); + FontMetrics fm = g2d.getFontMetrics(); + int textWidth = fm.stringWidth(getText()); + int textHeight = fm.getHeight(); + g2d.drawString(getText(), -textWidth / 2, textHeight / 4); - } + g2d.dispose(); + } } diff --git a/src/main/java/io/github/manishdait/jplotlib/internal/util/AxisType.java b/src/main/java/io/github/manishdait/jplotlib/internals/util/AxisType.java old mode 100644 new mode 100755 similarity index 64% rename from src/main/java/io/github/manishdait/jplotlib/internal/util/AxisType.java rename to src/main/java/io/github/manishdait/jplotlib/internals/util/AxisType.java index 3b6f0c3..41264d4 --- a/src/main/java/io/github/manishdait/jplotlib/internal/util/AxisType.java +++ b/src/main/java/io/github/manishdait/jplotlib/internals/util/AxisType.java @@ -22,58 +22,55 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.internal.util; +package io.github.manishdait.jplotlib.internals.util; /** * The AxisType enum represents the types of axes used in Jplotlib charts. * - * This enum provides three values for different chart types: PLOT, BAR, and + * This enum provides three values for different chart types: PLOT, BAR, and * PIE. Each value has a corresponding priority, which determines the order in * which the axes are rendered. * * The AxisType enum is used to indicate the type of axis to be used in a * particular chart. * - * */ - public enum AxisType { - - /** - * The PLOT axis type represents a regular plot chart with X and Y axes. - */ - PLOT(1), - /** - * The BAR axis type represents a bar chart with X and Y axes. - */ - BAR(2), + /** + * The PLOT axis type represents a regular plot chart with X and Y axes. + */ + PLOT(1), - /** - * The PIE axis type represents a pie chart with no traditional X and Y axes. - */ - PIE(3); - - private int priority; + /** + * The BAR axis type represents a bar chart with X and Y axes. + */ + BAR(2), + /** + * The PIE axis type represents a pie chart with no traditional X and Y axes. + */ + PIE(3); + private int priority; - /** - * Constructs an AxisType enum with the specified priority. - * - * @param priority the priority of the axis type, used for rendering order. - */ - AxisType(int priority) { - this.priority = priority; - } + /** + * Constructs an AxisType enum with the specified priority. + * + * @param priority + * the priority of the axis type, used for rendering order. + */ + AxisType(int priority) { + this.priority = priority; + } - /** - * Gets the priority value of the axis type. - * - * @return the priority value. - */ - public int getPriority() { - return this.priority; - } + /** + * Gets the priority value of the axis type. + * + * @return the priority value. + */ + public int getPriority() { + return this.priority; + } } diff --git a/src/main/java/io/github/manishdait/jplotlib/internal/util/ChartType.java b/src/main/java/io/github/manishdait/jplotlib/internals/util/ChartType.java old mode 100644 new mode 100755 similarity index 78% rename from src/main/java/io/github/manishdait/jplotlib/internal/util/ChartType.java rename to src/main/java/io/github/manishdait/jplotlib/internals/util/ChartType.java index 99b9079..d5f5ce4 --- a/src/main/java/io/github/manishdait/jplotlib/internal/util/ChartType.java +++ b/src/main/java/io/github/manishdait/jplotlib/internals/util/ChartType.java @@ -22,42 +22,40 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.internal.util; +package io.github.manishdait.jplotlib.internals.util; /** - * The ChartType enum represents the types of charts that can be created using + * The ChartType enum represents the types of charts that can be created using * Jplotlib. * * This enum provides four values for different chart types: LINE, SCATTER, BAR, - * and PIE. Each value corresponds to a specific type of chart that can be + * and PIE. Each value corresponds to a specific type of chart that can be * generated using Jplotlib. * - * The ChartType enum is used to specify the type of chart to be created in + * The ChartType enum is used to specify the type of chart to be created in * Jplotlib. * - * */ - public enum ChartType { - /** - * The LINE chart type represents a line plot. - */ - LINE, - - /** - * The SCATTER chart type represents a scatter plot. - */ - SCATTER, - - /** - * The BAR chart type represents a bar chart. - */ - BAR, - - /** - * The PIE chart type represents a pie chart. - */ - PIE; + /** + * The LINE chart type represents a line plot. + */ + LINE, + + /** + * The SCATTER chart type represents a scatter plot. + */ + SCATTER, + + /** + * The BAR chart type represents a bar chart. + */ + BAR, + + /** + * The PIE chart type represents a pie chart. + */ + PIE; } diff --git a/src/main/java/io/github/manishdait/jplotlib/internal/util/Constants.java b/src/main/java/io/github/manishdait/jplotlib/internals/util/Constants.java old mode 100644 new mode 100755 similarity index 61% rename from src/main/java/io/github/manishdait/jplotlib/internal/util/Constants.java rename to src/main/java/io/github/manishdait/jplotlib/internals/util/Constants.java index 2ccce5c..f424957 --- a/src/main/java/io/github/manishdait/jplotlib/internal/util/Constants.java +++ b/src/main/java/io/github/manishdait/jplotlib/internals/util/Constants.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package io.github.manishdait.jplotlib.internal.util; +package io.github.manishdait.jplotlib.internals.util; /** * The Constants class contains various constant values used in the Jplotlib @@ -36,42 +36,44 @@ * * */ - public class Constants { - - /** - * The name of the chart provider (Jplotlib). - */ - public static final String PROVIDER = "io.github.manishdait.jplotlib.Jplotlib"; + private Constants() { + throw new IllegalStateException("Constant class can not be instantiated"); + } + + /** + * The name of the chart provider (Jplotlib). + */ + public static final String PROVIDER = "io.github.manishdait.jplotlib.Jplotlib"; - /** - * The default width of the chart. - */ - public static final int WIDTH = 750; + /** + * The default width of the chart. + */ + public static final int WIDTH = 750; - /** - * The default height of the chart. - */ - public static final int HEIGTH = 600; + /** + * The default height of the chart. + */ + public static final int HEIGTH = 600; - /** - * The margin size for the chart. - */ - public static final int MARGIN = 90; + /** + * The margin size for the chart. + */ + public static final int MARGIN = 90; - /** - * The minimum scale value for markers. - */ - public static final int MIN_MARKER_SCALE = 5; + /** + * The minimum scale value for markers. + */ + public static final int MIN_MARKER_SCALE = 5; - /** - * The maximum scale value for markers. - */ - public static final int MAX_MARKER_SCALE = 50; + /** + * The maximum scale value for markers. + */ + public static final int MAX_MARKER_SCALE = 50; - /** - * The default scale value for markers. - */ - public static final int DEFAULT_MARKER_SCALE = 10; + /** + * The default scale value for markers. + */ + public static final int DEFAULT_MARKER_SCALE = 10; } diff --git a/src/main/java/io/github/manishdait/jplotlib/plotter/SeriesPlotter.java b/src/main/java/io/github/manishdait/jplotlib/plotter/SeriesPlotter.java deleted file mode 100644 index 4f1794b..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/plotter/SeriesPlotter.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.plotter; - -import java.awt.Graphics; -import java.util.List; - -import javax.swing.JPanel; - -import io.github.manishdait.jplotlib.chart.BarGraphBuilder; -import io.github.manishdait.jplotlib.chart.LineGraphBuilder; -import io.github.manishdait.jplotlib.chart.PieChartBuilder; -import io.github.manishdait.jplotlib.chart.ScatterGraphBuilder; -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.data.StyleData; -import io.github.manishdait.jplotlib.internal.util.AxisType; - - -/** - * The SeriesPlotter class is responsible for drawing series plots based on the - * provided SeriesData and StyleData. - * - * - */ - -public class SeriesPlotter extends JPanel { - - private SeriesData seriesData; - private List styleData; - - /** - * Creates a new SeriesPlotter with the given SeriesData and StyleData. - * - * @param seriesData The data for the series plot. - * @param styleData The style data for the series plot. - */ - public SeriesPlotter(SeriesData seriesData, List styleData) { - this.seriesData = seriesData; - this.styleData = styleData; - } - - @Override - public void paintComponent(Graphics g) { - if(seriesData.axisType != AxisType.PIE) { - for(int i = 0; i < styleData.size(); i++) { - switch (styleData.get(i).getChartType()) { - case LINE: - new LineGraphBuilder( - g, - this, - seriesData, - styleData.get(i).getLineSeries(), - i - ).draw(); - break; - - case SCATTER: - new ScatterGraphBuilder( - g, - this, - seriesData, - styleData.get(i).getScatterSeries(), - i - ).draw(); - break; - - case BAR: - new BarGraphBuilder( - g, - this, - seriesData, - styleData.get(i).getBarSeries(), - i - ).draw(); - break; - - default: - throw new UnsupportedOperationException( - "Unimplemented method 'draw'" - ); - } - } - } - - else { - new PieChartBuilder( - g, - this, - seriesData, - styleData.get(0).getPieSeries() - ).draw(); - } - - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/ui/BaseFrame.java b/src/main/java/io/github/manishdait/jplotlib/ui/BaseFrame.java deleted file mode 100644 index cc13547..0000000 --- a/src/main/java/io/github/manishdait/jplotlib/ui/BaseFrame.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2023 Manish Dait - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package io.github.manishdait.jplotlib.ui; - -import java.util.List; - -import javax.swing.JFrame; - -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.data.StyleData; -import io.github.manishdait.jplotlib.internal.util.Constants; - - -/** - * The BaseFrame class represents a custom JFrame that serves as the base window - * for displaying Jplotlib charts. - * - * This class extends the standard JFrame class and is used to create a window - * that contains a ChartPanel for rendering the Jplotlib charts. It provides a - * customizable interface for displaying various types of plots and data - * visualizations. - * - * The BaseFrame is created with a specific SeriesData and a List of StyleData, - * which define the data and styles for the charts to be displayed in the frame. - * - * - */ - -public class BaseFrame extends JFrame { - - private ChartPanel chartPanel; - - /** - * Constructs a new BaseFrame with the specified SeriesData and List of - * StyleData. - * - * @param seriesData the SeriesData containing the data points for the charts. - * @param styleData the List of StyleData containing style information for the - * charts. - */ - - public BaseFrame(SeriesData seriesData, List styleData) { - this.setTitle(Constants.PROVIDER); - this.setSize(Constants.WIDTH, Constants.HEIGTH); - this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - this.chartPanel = new ChartPanel(seriesData, styleData); - this.chartPanel.setBounds(0, 0, this.getWidth(), this.getHeight()); - this.add(this.chartPanel); - } - -} diff --git a/src/main/java/io/github/manishdait/jplotlib/ui/ChartPanel.java b/src/main/java/io/github/manishdait/jplotlib/ui/ChartPanel.java old mode 100644 new mode 100755 index a19776e..3d0928a --- a/src/main/java/io/github/manishdait/jplotlib/ui/ChartPanel.java +++ b/src/main/java/io/github/manishdait/jplotlib/ui/ChartPanel.java @@ -24,122 +24,110 @@ package io.github.manishdait.jplotlib.ui; +import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.util.List; +import javax.swing.BorderFactory; import javax.swing.JPanel; -import io.github.manishdait.jplotlib.data.SeriesData; -import io.github.manishdait.jplotlib.data.StyleData; -import io.github.manishdait.jplotlib.internal.component.axis.AxisBuilder; -import io.github.manishdait.jplotlib.internal.component.label.AxisLabel; -import io.github.manishdait.jplotlib.internal.component.label.TitleLabel; -import io.github.manishdait.jplotlib.internal.component.label.VerticalAxisLabel; -import io.github.manishdait.jplotlib.internal.util.Constants; -import io.github.manishdait.jplotlib.plotter.SeriesPlotter; - +import io.github.manishdait.jplotlib.charts.helper.Graph; +import io.github.manishdait.jplotlib.charts.helper.GraphPlotter; +import io.github.manishdait.jplotlib.internals.components.axis.Axis; +import io.github.manishdait.jplotlib.internals.components.axis.Config; +import io.github.manishdait.jplotlib.internals.components.label.AxisLabel; +import io.github.manishdait.jplotlib.internals.components.label.TitleLabel; +import io.github.manishdait.jplotlib.internals.components.label.VerticalAxisLabel; +import io.github.manishdait.jplotlib.internals.util.Constants; /** - * The ChartPanel class represents a custom JPanel used for rendering Jplotlib + * The ChartPanel class represents a custom JPanel used for rendering Jplotlib * charts and data visualizations. * - * This class extends the standard JPanel and provides functionality to display - * a Jplotlib chart within a JPanel container. It dynamically renders the chart - * based on the provided SeriesData and StyleData, ensuring that the chart is - * properly displayed with the appropriate title, axis labels, and data points. + * This class extends the standard JPanel and provides functionality to display + * a Jplotlib chart within a JPanel container. It dynamically renders the chart + * based on the provided AxisConfiguration and Graphs, ensuring that the chart + * is properly displayed with the appropriate title, axis labels, and data points. * - * The ChartPanel handles the rendering of the chart by using the provided - * Graphics object. It sets the title, x-axis label, and y-axis label, and then - * plots the data points using the SeriesPlotter class. + * The ChartPanel handles the rendering of the chart by using the provided + * Graphics object. It sets the title, x-axis label, and y-axis label, and then + * plots the data points using the GraphPlotter class. * * */ - public class ChartPanel extends JPanel { - private SeriesData seriesData; - - private List styleData; - - private TitleLabel title = new TitleLabel(); - private AxisLabel xLabel = new AxisLabel(); - private VerticalAxisLabel yLabel = new VerticalAxisLabel(); - - private JPanel graph = new JPanel(); - - /** - * Constructs a new ChartPanel with the specified SeriesData and List of - * StyleData. - * - * @param seriesData the SeriesData containing the data points for the chart. - * @param styleData the List of StyleData containing style information for the - * chart. - */ - - public ChartPanel(SeriesData seriesData, List styleData) { - super.setBackground(new Color(255, 255, 255, 255)); - this.seriesData = seriesData; - this.styleData = styleData; - } - - @Override - public void paintComponent(Graphics g) { - super.paintComponent(g); - - // Set title label - this.title.setBounds( - 0, - 60, - this.getWidth(), - 20 - ); - this.title.setText(this.seriesData.getTitle()); - this.add(title); - - // Set xLabel label - this.xLabel.setBounds( - 0, - this.getHeight() - 60, - this.getWidth(), - 20 - ); - this.xLabel.setText(this.seriesData.getxLabel()); - this.add(xLabel); - - // Set yLabel label - this.yLabel.setBounds( - 0, - 0, - 40, - this.getHeight() - ); - this.yLabel.setText(this.seriesData.getyLabel()); - this.add(yLabel); - - // Build and draw axes - new AxisBuilder(g, this, seriesData).buildAxis(); - - // Plot and draw graph - setGraph(this.graph); - plotGraph(); - } - - private void setGraph(JPanel graph) { - this.remove(this.graph); - this.graph = graph; - this.graph.setBounds( - Constants.MARGIN, - Constants.MARGIN, - this.getWidth() - (Constants.MARGIN * 2), - this.getHeight() - (Constants.MARGIN * 2) - ); - this.add(graph); - } - - private void plotGraph() { - JPanel graph = new SeriesPlotter(seriesData, styleData); - setGraph(graph); - } + private transient Config axisConfiguration; + private transient List graphs; + + private TitleLabel title = new TitleLabel(); + private AxisLabel xLabel = new AxisLabel(); + private VerticalAxisLabel yLabel = new VerticalAxisLabel(); + + private JPanel graph = new JPanel(); + private BorderLayout borderlayout = new BorderLayout(); + + /** + * Constructs a new ChartPanel with the specified AxisConfiguration and List of + * Graphs. + * + * @param axisConfiguration + * the AxisConfiguration defining rendering properties for the axis. + * @param graphs + * the List of Graphs containing style and data + * information + * for the charts. + * + */ + public ChartPanel(Config axisConfiguration, List graphs) { + super.setBackground(new Color(255, 255, 255, 255)); + this.axisConfiguration = axisConfiguration; + this.graphs = graphs; + this.setLayout(borderlayout); + this.setBorder(BorderFactory.createEmptyBorder(40, 10, 40, 10)); + + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + + // Set title label + this.title.setText(this.axisConfiguration.getTitle()); + this.add(title, BorderLayout.NORTH); + + // Set xLabel label + this.xLabel.setText(this.axisConfiguration.getxLabel()); + this.add(xLabel, BorderLayout.SOUTH); + + // Set yLabel label + this.yLabel.setText(this.axisConfiguration.getyLabel()); + this.add(yLabel, BorderLayout.LINE_START); + + new Axis(g, this, axisConfiguration).drawAxis(); + setGraph(this.graph); + // Build and draw axis + // Plot and draw graph + plotGraph(); + + } + + private void setGraph(JPanel graph) { + this.remove(this.graph); + this.graph = graph; + this.graph.setBounds( + Constants.MARGIN, + Constants.MARGIN, + this.getWidth() - (Constants.MARGIN * 2), + this.getHeight() - (Constants.MARGIN * 2)); + this.add(graph, BorderLayout.CENTER); + } + + private void plotGraph() { + JPanel plot = new GraphPlotter(axisConfiguration, graphs); + setGraph(plot); + this.repaint(); + } } diff --git a/src/main/java/io/github/manishdait/jplotlib/ui/Window.java b/src/main/java/io/github/manishdait/jplotlib/ui/Window.java new file mode 100755 index 0000000..4d4e0fc --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/ui/Window.java @@ -0,0 +1,76 @@ +/* + * MIT License + * + * Copyright (c) 2023 Manish Dait + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package io.github.manishdait.jplotlib.ui; + +import java.awt.BorderLayout; +import java.util.List; + +import javax.swing.JFrame; + +import io.github.manishdait.jplotlib.charts.helper.Graph; +import io.github.manishdait.jplotlib.internals.components.axis.Config; +import io.github.manishdait.jplotlib.internals.util.Constants; + +/** + * The Window class represents a custom JFrame that serves as the base window + * for displaying Jplotlib charts. + * + * This class extends the standard JFrame class and is used to create a window + * that contains a ChartPanel for rendering the Jplotlib charts. It provides an + * interface for displaying various types of plots and data visualizations. + * + * The Window is created with a specific AxisConfiguration and a List of Graphs, + * which define the data and styles for the charts/graph to be displayed in the + * frame. + * + */ +public class Window extends JFrame { + + private ChartPanel chartPanel; + private BorderLayout borderLayout = new BorderLayout(); + + /** + * Constructs a new Window with the specified AxisConfiguration and List of + * Graphs. + * + * @param axisConfiguration + * the AxisConfiguration defining rendering properties + * for the axis. + * @param graphs + * the List of Graph containing style and data + * information for the charts. + * + */ + public Window(Config axisConfiguration, List graphs) { + this.setTitle(Constants.PROVIDER); + this.setSize(Constants.WIDTH, Constants.HEIGTH); + this.setLayout(borderLayout); + this.setDefaultCloseOperation(EXIT_ON_CLOSE); + + this.chartPanel = new ChartPanel(axisConfiguration, graphs); + this.add(this.chartPanel, BorderLayout.CENTER); + } + +} diff --git a/src/test/java/io/github/manishdait/jplotlib/JplotlibTest.java b/src/test/java/io/github/manishdait/jplotlib/JplotlibTest.java old mode 100644 new mode 100755 index 37d4faa..b9dc13d --- a/src/test/java/io/github/manishdait/jplotlib/JplotlibTest.java +++ b/src/test/java/io/github/manishdait/jplotlib/JplotlibTest.java @@ -1,15 +1,88 @@ package io.github.manishdait.jplotlib; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.junit.Test; -/** - * Unit test for Jplotlib. - */ +import io.github.manishdait.jplotlib.charts.bar.BarGraph; +import io.github.manishdait.jplotlib.charts.line.LineChart; +import io.github.manishdait.jplotlib.charts.pie.PieChart; +import io.github.manishdait.jplotlib.charts.scatter.ScatterChart; + public class JplotlibTest { + + @Test + public void testTitle() { + Jplotlib jplot = new Jplotlib(); + jplot.title("Test Title"); + assertEquals("Test Title", jplot.axisConfiguration.getTitle()); + } + + @Test + public void testXLabel() { + Jplotlib jplot = new Jplotlib(); + jplot.xLabel("X Label Test"); + assertEquals("X Label Test", jplot.axisConfiguration.getxLabel()); + } + + @Test + public void testYLabel() { + Jplotlib jplot = new Jplotlib(); + jplot.yLabel("Y Label Test"); + assertEquals("Y Label Test", jplot.axisConfiguration.getyLabel()); + } + + @Test + public void testGrid() { + Jplotlib jplot = new Jplotlib(); + jplot.grid(); + assertTrue(jplot.axisConfiguration.isxGrid()); + assertTrue(jplot.axisConfiguration.isyGrid()); + } + + @Test + public void testGridX() { + Jplotlib jplot = new Jplotlib(); + jplot.grid(true, false); + assertTrue(jplot.axisConfiguration.isxGrid()); + assertTrue(!jplot.axisConfiguration.isyGrid()); + } + + @Test + public void testGridY() { + Jplotlib jplot = new Jplotlib(); + jplot.grid(false, true); + assertTrue(!jplot.axisConfiguration.isxGrid()); + assertTrue(jplot.axisConfiguration.isyGrid()); + } + + @Test + public void testPlot() { + Jplotlib jplot = new Jplotlib(); + LineChart lineChart = jplot.plot(new double[]{1, 2, 3}, new double[]{4, 5, 6}); + assertNotNull(lineChart); + } + + @Test + public void testScatter() { + Jplotlib jplot = new Jplotlib(); + ScatterChart scatterChart = jplot.scatter(new double[]{1, 2, 3}, new double[]{4, 5, 6}); + assertNotNull(scatterChart); + } + + @Test + public void testBar() { + Jplotlib jplot = new Jplotlib(); + BarGraph barGraph = jplot.bar(new String[]{"A", "B", "C"}, new double[]{10, 20, 30}); + assertNotNull(barGraph); + } + @Test - public void shouldAnswerWithTrue() { - assertTrue( true ); + public void testPie() { + Jplotlib jplot = new Jplotlib(); + PieChart pieChart = jplot.pie(new double[]{10, 20, 30}); + assertNotNull(pieChart); } } diff --git a/src/test/java/io/github/manishdait/jplotlib/data/CoordinatesTest.java b/src/test/java/io/github/manishdait/jplotlib/data/CoordinatesTest.java deleted file mode 100644 index 4824799..0000000 --- a/src/test/java/io/github/manishdait/jplotlib/data/CoordinatesTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.github.manishdait.jplotlib.data; - -import static org.junit.Assert.assertArrayEquals; - -import org.junit.Test; - -public class CoordinatesTest { - - private double[] testX = {1, 2, 3, 4, 5}; - private double[] testY = {20, 40, 60, 80, 100}; - - @Test - public void testGetXPoints() { - Coordinates coordinates = new Coordinates(); - coordinates.setxPoints(testX); - - assertArrayEquals(testX, coordinates.getxPoints(), 0); - } - - @Test - public void testGetYPoints() { - Coordinates coordinates = new Coordinates(); - coordinates.setyPoints(testY); - - assertArrayEquals(testY, coordinates.getyPoints(), 0); - } - -} diff --git a/src/test/java/io/github/manishdait/jplotlib/data/DiffCalTest.java b/src/test/java/io/github/manishdait/jplotlib/data/DiffCalTest.java new file mode 100755 index 0000000..6058ac9 --- /dev/null +++ b/src/test/java/io/github/manishdait/jplotlib/data/DiffCalTest.java @@ -0,0 +1,30 @@ +package io.github.manishdait.jplotlib.data; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import io.github.manishdait.jplotlib.data.util.DataDiffer; + +public class DiffCalTest { + @Test + public void shouldReturnOne() { + int range = 10; + int totalLength = 10; + assertEquals(1, DataDiffer.getValDiff(range, totalLength)); + } + + @Test + public void shouldReturnTen() { + int range = 100; + int totalLength = 10; + assertEquals(10, DataDiffer.getValDiff(range, totalLength)); + } + + @Test + public void shouldReturnFive() { + int range = 100; + int totalLength = 24; + assertEquals(5, DataDiffer.getValDiff(range, totalLength)); + } +} diff --git a/src/test/java/io/github/manishdait/jplotlib/data/util/DataDiffTest.java b/src/test/java/io/github/manishdait/jplotlib/data/util/DataDiffTest.java deleted file mode 100644 index 06f393f..0000000 --- a/src/test/java/io/github/manishdait/jplotlib/data/util/DataDiffTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.manishdait.jplotlib.data.util; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - -public class DataDiffTest { - - @Test - public void testGetValDiff1() { - double arr[] = {1, 2, 3, 4, 5}; - int expected = 1; - assertEquals(expected, DataDiff.getValDiff(arr, arr.length)); - } - - @Test - public void testGetValDiff2() { - double arr[] = {1, 2, 3, 4, 20}; - int expected = 4; - assertEquals(expected, DataDiff.getValDiff(arr, arr.length)); - } - - @Test - public void testGetValDiff3() { - double arr[] = {0, 0, 0, 0, 0, 0}; - int expected = 1; - assertEquals(expected, DataDiff.getValDiff(arr, arr.length)); - } - -} diff --git a/src/test/java/io/github/manishdait/jplotlib/data/util/PreProcessorTest.java b/src/test/java/io/github/manishdait/jplotlib/data/util/PreProcessorTest.java deleted file mode 100644 index 50ff2e1..0000000 --- a/src/test/java/io/github/manishdait/jplotlib/data/util/PreProcessorTest.java +++ /dev/null @@ -1,95 +0,0 @@ -package io.github.manishdait.jplotlib.data.util; - -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.Test; - -import io.github.manishdait.jplotlib.data.Coordinates; - -public class PreProcessorTest { - - private double[] arr1 = {1, 2, 3, 4}; - private double[] arr2 = {10, 20, 30, 40, 50}; - List list = new ArrayList(); - - @Test - public void textProcessX() { - Coordinates coordinates1 = new Coordinates(); - coordinates1.setxPoints(arr1); - - Coordinates coordinates2 = new Coordinates(); - coordinates2.setxPoints(arr2); - - list.add(coordinates1); - list.add(coordinates2); - - double[] expected = {1, 2, 3, 4, 10, 20, 30, 40, 50}; - - assertArrayEquals(expected, new PreProcessor().processX(list), 0); - } - - @Test - public void textProcessY() { - Coordinates coordinates1 = new Coordinates(); - coordinates1.setyPoints(arr2); - - Coordinates coordinates2 = new Coordinates(); - coordinates2.setyPoints(arr1); - - list.add(coordinates1); - list.add(coordinates2); - - double[] expected = {10, 20, 30, 40, 50, 1, 2, 3, 4}; - - assertArrayEquals(expected, new PreProcessor().processY(list), 0); - } - - @Test - public void testGetMaxLengthX() { - Coordinates coordinates1 = new Coordinates(); - coordinates1.setxPoints(arr1); - - Coordinates coordinates2 = new Coordinates(); - coordinates2.setxPoints(arr2); - - list.add(coordinates1); - list.add(coordinates2); - - int expected = 5; - - assertEquals(expected, new PreProcessor().getMaxLengthX(list)); - } - - @Test - public void testGetMaxLengthY() { - Coordinates coordinates1 = new Coordinates(); - coordinates1.setyPoints(arr2); - - Coordinates coordinates2 = new Coordinates(); - coordinates2.setyPoints(arr1); - - list.add(coordinates1); - list.add(coordinates2); - - int expected = 5; - - assertEquals(expected, new PreProcessor().getMaxLengthY(list)); - } - - @Test - public void testGetUpperBound() { - int expected = 50; - assertEquals(expected, new PreProcessor().getUpperBound(arr2)); - } - - @Test - public void testGetLowerBound() { - int expected = 10; - assertEquals(expected, new PreProcessor().getLowerBound(arr2)); - } - -} diff --git a/src/test/java/io/github/manishdait/jplotlib/internals/components/axis/CoordinateTest.java b/src/test/java/io/github/manishdait/jplotlib/internals/components/axis/CoordinateTest.java new file mode 100755 index 0000000..f5435f7 --- /dev/null +++ b/src/test/java/io/github/manishdait/jplotlib/internals/components/axis/CoordinateTest.java @@ -0,0 +1,32 @@ +package io.github.manishdait.jplotlib.internals.components.axis; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import io.github.manishdait.jplotlib.data.util.DataDiffer; + +public class CoordinateTest { + @Test + public void shouldReturnTwentyOne() { + int range = 10; + int totalLenght = 10; + int diff = DataDiffer.getValDiff(range, totalLenght); + assertEquals(10, new Coordinate().getTotalTicks(range, diff)); + } + + @Test + public void shouldReturnTwentyFive() { + int range = 100; + int totalLenght = 100; + int diff = DataDiffer.getValDiff(range, totalLenght); + assertEquals(25, new Coordinate().getTotalTicks(range, diff)); + } + + @Test + public void shouldReturnEleven() { + int width = 358; + int total = 25; + assertEquals(6, new Coordinate().getIncrement(width, total)); + } +} diff --git a/src/test/java/io/github/manishdait/jplotlib/internals/util/AxisTypeTest.java b/src/test/java/io/github/manishdait/jplotlib/internals/util/AxisTypeTest.java new file mode 100755 index 0000000..802261a --- /dev/null +++ b/src/test/java/io/github/manishdait/jplotlib/internals/util/AxisTypeTest.java @@ -0,0 +1,16 @@ +package io.github.manishdait.jplotlib.internals.util; + +import static org.junit.Assert.assertArrayEquals; + +import org.junit.Test; + +public class AxisTypeTest { + + @Test + public void shouldReturnProperPriorites() { + int[] expeccted = {1, 2, 3}; + int[] priorites = {AxisType.PLOT.getPriority(), AxisType.BAR.getPriority(), AxisType.PIE.getPriority()}; + assertArrayEquals(expeccted, priorites); + } + +} From 87e39199bb3c5b0dcf92bac4f0f3474ebac6bfad Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Sat, 16 Dec 2023 16:31:32 +0530 Subject: [PATCH 02/12] refactor: Change formating of defaults package --- .../jplotlib/defaults/color/LibColor.java | 46 ++++++++----------- .../jplotlib/defaults/color/PlotColor.java | 46 ++++++++++--------- .../jplotlib/defaults/line/Stroke.java | 16 +++---- .../jplotlib/defaults/marker/Marker.java | 26 +++++------ 4 files changed, 66 insertions(+), 68 deletions(-) diff --git a/src/main/java/io/github/manishdait/jplotlib/defaults/color/LibColor.java b/src/main/java/io/github/manishdait/jplotlib/defaults/color/LibColor.java index dfb4aa5..fc5f2de 100755 --- a/src/main/java/io/github/manishdait/jplotlib/defaults/color/LibColor.java +++ b/src/main/java/io/github/manishdait/jplotlib/defaults/color/LibColor.java @@ -31,31 +31,25 @@ * */ public enum LibColor { - - BLUE(new Color(31, 119, 181)), - ORANGE(new Color(251, 127, 15)), - GREEN(new Color(46, 161, 47)), - RED(new Color(215, 42, 44)), - PURPLE(new Color(148, 104, 189)), - BROWN(new Color(141, 86, 75)), - PINK(new Color(227, 119, 194)), - GREY(new Color(127, 127, 127)), - LIME(new Color(188, 189, 35)), - SKY(new Color(44, 193, 209)); - - private Color color; - - LibColor(Color color) { - this.color = color; - } - - /** - * Get the color associated with the LibColor. - * - * @return The color. - */ - public Color getColor() { - return this.color; - } + + BLUE(new Color(31, 119, 181)), ORANGE(new Color(251, 127, 15)), GREEN(new Color(46, 161, 47)), RED( + new Color(215, 42, 44)), PURPLE(new Color(148, 104, 189)), BROWN(new Color(141, 86, 75)), PINK( + new Color(227, 119, 194)), GREY( + new Color(127, 127, 127)), LIME(new Color(188, 189, 35)), SKY(new Color(44, 193, 209)); + + private Color color; + + LibColor(Color color) { + this.color = color; + } + + /** + * Get the color associated with the LibColor. + * + * @return The color. + */ + public Color getColor() { + return this.color; + } } diff --git a/src/main/java/io/github/manishdait/jplotlib/defaults/color/PlotColor.java b/src/main/java/io/github/manishdait/jplotlib/defaults/color/PlotColor.java index 38a7ed4..1f3577d 100755 --- a/src/main/java/io/github/manishdait/jplotlib/defaults/color/PlotColor.java +++ b/src/main/java/io/github/manishdait/jplotlib/defaults/color/PlotColor.java @@ -33,27 +33,31 @@ */ public class PlotColor { - private static final Color[] colors = { - new Color(31, 119, 181), - new Color(251, 127, 15), - new Color(46, 161, 47), - new Color(215, 42, 44), - new Color(148, 104, 189), - new Color(141, 86, 75), - new Color(227, 119, 194), - new Color(127, 127, 127), - new Color(188, 189, 35), - new Color(44, 193, 209) - }; + private PlotColor() { + } - /** - * Get the color associated with the given index. - * - * @param index The index of the color to retrieve. - * @return The color associated with the index. - */ - public static Color getColor(int indx) { - return colors[indx]; - } + private static final Color[] colors = { + new Color(31, 119, 181), + new Color(251, 127, 15), + new Color(46, 161, 47), + new Color(215, 42, 44), + new Color(148, 104, 189), + new Color(141, 86, 75), + new Color(227, 119, 194), + new Color(127, 127, 127), + new Color(188, 189, 35), + new Color(44, 193, 209) + }; + + /** + * Get the color associated with the given index. + * + * @param index + * The index of the color to retrieve. + * @return The color associated with the index. + */ + public static Color getColor(int indx) { + return colors[indx]; + } } diff --git a/src/main/java/io/github/manishdait/jplotlib/defaults/line/Stroke.java b/src/main/java/io/github/manishdait/jplotlib/defaults/line/Stroke.java index 980058c..8a7d98b 100755 --- a/src/main/java/io/github/manishdait/jplotlib/defaults/line/Stroke.java +++ b/src/main/java/io/github/manishdait/jplotlib/defaults/line/Stroke.java @@ -30,14 +30,14 @@ */ public enum Stroke { - /** - * No line stroke. - */ - NONE, + /** + * No line stroke. + */ + NONE, - /** - * Dashed line stroke. - */ - DASHED; + /** + * Dashed line stroke. + */ + DASHED; } diff --git a/src/main/java/io/github/manishdait/jplotlib/defaults/marker/Marker.java b/src/main/java/io/github/manishdait/jplotlib/defaults/marker/Marker.java index 686d48e..3ef6980 100755 --- a/src/main/java/io/github/manishdait/jplotlib/defaults/marker/Marker.java +++ b/src/main/java/io/github/manishdait/jplotlib/defaults/marker/Marker.java @@ -30,20 +30,20 @@ * */ public enum Marker { - - /** - * No marker. - */ - NONE, - /** - * Circular marker. - */ - CIRCLE, + /** + * No marker. + */ + NONE, - /** - * Square marker. - */ - SQUARE; + /** + * Circular marker. + */ + CIRCLE, + + /** + * Square marker. + */ + SQUARE; } From f1b7a05f057bef7d18dcd933e39ac1a9d38ab69a Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Sat, 16 Dec 2023 17:06:40 +0530 Subject: [PATCH 03/12] refactor: Change acess modifier of chart styles --- .../io/github/manishdait/jplotlib/charts/bar/BarGraphStyle.java | 2 +- .../github/manishdait/jplotlib/charts/line/LineChartStyle.java | 2 +- .../io/github/manishdait/jplotlib/charts/pie/PieChartStyle.java | 2 +- .../manishdait/jplotlib/charts/scatter/ScatterChartStyle.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphStyle.java b/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphStyle.java index 2fe8987..5cf6443 100755 --- a/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphStyle.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/bar/BarGraphStyle.java @@ -33,7 +33,7 @@ * JPlotLib library. * */ -public class BarGraphStyle { +class BarGraphStyle { private Color color; diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartStyle.java b/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartStyle.java index 19f93c2..6cb246e 100755 --- a/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartStyle.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/line/LineChartStyle.java @@ -35,7 +35,7 @@ * It includes settings for markers, colors, line styles, and widths. * */ -public class LineChartStyle { +class LineChartStyle { private Marker marker; private Color color; diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartStyle.java b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartStyle.java index 93cb843..ca831d5 100755 --- a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartStyle.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartStyle.java @@ -32,7 +32,7 @@ * within the JPlotLib library. * */ -public class PieChartStyle { +class PieChartStyle { private Color[] color; diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartStyle.java b/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartStyle.java index 70cfe90..b950b8d 100755 --- a/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartStyle.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/scatter/ScatterChartStyle.java @@ -33,7 +33,7 @@ * a scatter chart. * */ -public class ScatterChartStyle { +class ScatterChartStyle { private Color color; private int[] scale; private Marker marker; From ea5381e150cebd0e64f8d58cc124f661038310e3 Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Fri, 22 Dec 2023 13:49:54 +0530 Subject: [PATCH 04/12] refactor: Rename filename for error and created constants for error. --- ...MissMatchException.java => JplotlibError.java} | 15 +++++---------- .../jplotlib/error/util/ErrorConstants.java | 12 ++++++++++++ 2 files changed, 17 insertions(+), 10 deletions(-) rename src/main/java/io/github/manishdait/jplotlib/error/{ArrayLengthMissMatchException.java => JplotlibError.java} (70%) create mode 100644 src/main/java/io/github/manishdait/jplotlib/error/util/ErrorConstants.java diff --git a/src/main/java/io/github/manishdait/jplotlib/error/ArrayLengthMissMatchException.java b/src/main/java/io/github/manishdait/jplotlib/error/JplotlibError.java similarity index 70% rename from src/main/java/io/github/manishdait/jplotlib/error/ArrayLengthMissMatchException.java rename to src/main/java/io/github/manishdait/jplotlib/error/JplotlibError.java index 038990d..3e645ce 100644 --- a/src/main/java/io/github/manishdait/jplotlib/error/ArrayLengthMissMatchException.java +++ b/src/main/java/io/github/manishdait/jplotlib/error/JplotlibError.java @@ -25,26 +25,21 @@ package io.github.manishdait.jplotlib.error; /** - * The ArrayLengthMissMatchException is a custom runtime exception that is - * thrown when there is a mismatch in the lengths of arrays during data plotting - * in Jplotlib. - * - * This exception indicates that the input arrays used for plotting do not have - * the same length, which is a requirement for plotting data points correctly. - * + * The JplotlibError is a custom runtime exception that is thrown when there is + * any issue for data plotting in Jplotlib. * */ -public class ArrayLengthMissMatchException extends RuntimeException { +public class JplotlibError extends RuntimeException { /** - * Constructs a new ArrayLengthMissMatchException with the specified detail + * Constructs a new JplotlibError with the specified detail * message. * * @param message the detail message. */ - public ArrayLengthMissMatchException(String message) { + public JplotlibError(String message) { super(message); } diff --git a/src/main/java/io/github/manishdait/jplotlib/error/util/ErrorConstants.java b/src/main/java/io/github/manishdait/jplotlib/error/util/ErrorConstants.java new file mode 100644 index 0000000..67bb6c0 --- /dev/null +++ b/src/main/java/io/github/manishdait/jplotlib/error/util/ErrorConstants.java @@ -0,0 +1,12 @@ +package io.github.manishdait.jplotlib.error.util; + +public class ErrorConstants { + + private ErrorConstants() { + } + + public static final String UNMATCH_DIMENSION_LENGTH_ERROR = "The number of xPoints does not match the number of yPoints."; + public static final String MISSMATCH_LABELDATA_LENGTH_ERROR = "The number of labels does not match the number of data points."; + public static final String NULL_DATA_ERROR = "The provided data point is null."; + +} From fdd76c26e529fcc2d3b522cd30aa985567a73208 Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Fri, 22 Dec 2023 13:53:11 +0530 Subject: [PATCH 05/12] refactor: Put comment to proper line. --- src/main/java/io/github/manishdait/jplotlib/ui/ChartPanel.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/manishdait/jplotlib/ui/ChartPanel.java b/src/main/java/io/github/manishdait/jplotlib/ui/ChartPanel.java index 3d0928a..d18abb4 100755 --- a/src/main/java/io/github/manishdait/jplotlib/ui/ChartPanel.java +++ b/src/main/java/io/github/manishdait/jplotlib/ui/ChartPanel.java @@ -105,9 +105,10 @@ public void paintComponent(Graphics g) { this.yLabel.setText(this.axisConfiguration.getyLabel()); this.add(yLabel, BorderLayout.LINE_START); + // Build and draw axis new Axis(g, this, axisConfiguration).drawAxis(); setGraph(this.graph); - // Build and draw axis + // Plot and draw graph plotGraph(); From 7c3717f8fcd634367389f12b842e11f53ad2a966 Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Fri, 22 Dec 2023 13:53:52 +0530 Subject: [PATCH 06/12] refactor: Added new JplotlibError with Constants. --- .../github/manishdait/jplotlib/Jplotlib.java | 79 +++++++++++-------- 1 file changed, 47 insertions(+), 32 deletions(-) diff --git a/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java b/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java index f6f896d..c08aa7c 100755 --- a/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java +++ b/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java @@ -37,7 +37,8 @@ import io.github.manishdait.jplotlib.charts.scatter.ScatterChart; import io.github.manishdait.jplotlib.charts.scatter.ScatterChartOptions; import io.github.manishdait.jplotlib.data.GraphData; -import io.github.manishdait.jplotlib.error.ArrayLengthMissMatchException; +import io.github.manishdait.jplotlib.error.JplotlibError; +import io.github.manishdait.jplotlib.error.util.ErrorConstants; import io.github.manishdait.jplotlib.data.CartesianData; import io.github.manishdait.jplotlib.internals.components.axis.Config; import io.github.manishdait.jplotlib.internals.util.AxisType; @@ -62,33 +63,31 @@ * jplot.pie(new double[]{10, 20, 30, 40}); * jplot.show(); * - * Note: The show() method will display the chart only if it has data points + * Note: The show() method will display the chart only if it has data points * (coordinates or pieData). * * @author Manish Dait * @version 1.0.0 */ -public final class Jplotlib implements - LineChartOptions, - ScatterChartOptions, - BarGraphOptions, - PieChartOptions -{ +public final class Jplotlib implements + LineChartOptions, + ScatterChartOptions, + BarGraphOptions, + PieChartOptions { protected Window window; protected Config axisConfiguration; protected List graphs; - - public Jplotlib() { this.axisConfiguration = new Config(); this.graphs = new ArrayList<>(); } public final void show() { - if(((axisConfiguration.getTotalXLength() == 0 || axisConfiguration.getTotalYLength() == 0) && axisConfiguration.getBarLabelLen() == 0) && !axisConfiguration.getAxisType().equals(AxisType.PIE)) { + if (((axisConfiguration.getTotalXLength() == 0 || axisConfiguration.getTotalYLength() == 0) + && axisConfiguration.getBarLabelLen() == 0) && !axisConfiguration.getAxisType().equals(AxisType.PIE)) { return; } this.window = new Window(this.axisConfiguration, this.graphs); @@ -117,13 +116,9 @@ public final void grid(final boolean xGrid, final boolean yGrid) { this.axisConfiguration.setyGrid(yGrid); } - - private void setAxisType(AxisType axisType) { - if ( - axisConfiguration.getAxisType() == null || - axisConfiguration.getAxisType().getPriority() < axisType.getPriority() - ) { + if (axisConfiguration.getAxisType() == null || + axisConfiguration.getAxisType().getPriority() < axisType.getPriority()) { axisConfiguration.setAxisType(axisType); } } @@ -147,7 +142,7 @@ private void setAxisParameters(String[] labels, double[] data, boolean isX) { } else { setYData(data); } - + for (String label : labels) { if (!GraphData.getMap().containsKey(label)) { GraphData.getMap().put(label, GraphData.getIndx()); @@ -166,9 +161,10 @@ private void setYData(double[] data) { max = max > i ? max : i; min = min < i ? min : i; } - axisConfiguration.setyUpperBound((int)max); - axisConfiguration.setyLowerBound((int)min); - axisConfiguration.setMaxYLength(axisConfiguration.getMaxYLength() > data.length ? axisConfiguration.getMaxYLength() : data.length); + axisConfiguration.setyUpperBound((int) max); + axisConfiguration.setyLowerBound((int) min); + axisConfiguration.setMaxYLength( + axisConfiguration.getMaxYLength() > data.length ? axisConfiguration.getMaxYLength() : data.length); axisConfiguration.setTotalYLength(axisConfiguration.getTotalYLength() + data.length); } @@ -176,19 +172,23 @@ private void setXData(double[] data) { double max = axisConfiguration.getxUpperBound(); double min = axisConfiguration.getxLowerBound(); for (double i : data) { - max = max > i? max:i; - min = min < i? min:i; + max = max > i ? max : i; + min = min < i ? min : i; } - axisConfiguration.setxUpperBound((int)max); - axisConfiguration.setxLowerBound((int)min); - axisConfiguration.setMaxXLength(axisConfiguration.getMaxXLength() > data.length? axisConfiguration.getMaxXLength():data.length); + axisConfiguration.setxUpperBound((int) max); + axisConfiguration.setxLowerBound((int) min); + axisConfiguration.setMaxXLength( + axisConfiguration.getMaxXLength() > data.length ? axisConfiguration.getMaxXLength() : data.length); axisConfiguration.setTotalXLength(axisConfiguration.getTotalXLength() + data.length); } - //Line Chart + // Line Chart @Override public LineChart plot(double[] yPoints) { + if (yPoints == null) { + throw new JplotlibError(ErrorConstants.NULL_DATA_ERROR); + } double[] xPoints = createTempArr(yPoints); setAxisType(AxisType.PLOT); setAxisParameters(xPoints, yPoints); @@ -199,8 +199,11 @@ public LineChart plot(double[] yPoints) { @Override public LineChart plot(double[] xPoints, double[] yPoints) { + if (xPoints == null || yPoints == null) { + throw new JplotlibError(ErrorConstants.NULL_DATA_ERROR); + } if (xPoints.length != yPoints.length) { - throw new ArrayLengthMissMatchException("The length of xPoints is not equal to the yPoints."); + throw new JplotlibError(ErrorConstants.UNMATCH_DIMENSION_LENGTH_ERROR); } setAxisType(AxisType.PLOT); setAxisParameters(xPoints, yPoints); @@ -213,8 +216,11 @@ public LineChart plot(double[] xPoints, double[] yPoints) { @Override public ScatterChart scatter(double[] xPoints, double[] yPoints) { + if (xPoints == null || yPoints == null) { + throw new JplotlibError(ErrorConstants.NULL_DATA_ERROR); + } if (xPoints.length != yPoints.length) { - throw new ArrayLengthMissMatchException("The length of xPoints is not equal to the yPoints."); + throw new JplotlibError(ErrorConstants.UNMATCH_DIMENSION_LENGTH_ERROR); } setAxisType(AxisType.PLOT); setAxisParameters(xPoints, yPoints); @@ -227,8 +233,11 @@ public ScatterChart scatter(double[] xPoints, double[] yPoints) { @Override public BarGraph bar(String[] labels, double[] points) { + if (labels == null || points == null) { + throw new JplotlibError(ErrorConstants.NULL_DATA_ERROR); + } if (labels.length != points.length) { - throw new ArrayLengthMissMatchException("The length of labels is not equal to the data points."); + throw new JplotlibError(ErrorConstants.MISSMATCH_LABELDATA_LENGTH_ERROR); } setAxisType(AxisType.BAR); setAxisParameters(labels, points, false); @@ -236,11 +245,14 @@ public BarGraph bar(String[] labels, double[] points) { graphs.add(barGraph); return barGraph; } - + @Override public BarGraph barh(String[] labels, double[] points) { + if (labels == null || points == null) { + throw new JplotlibError(ErrorConstants.NULL_DATA_ERROR); + } if (labels.length != points.length) { - throw new ArrayLengthMissMatchException("The length of labels is not equal to the data points."); + throw new JplotlibError(ErrorConstants.MISSMATCH_LABELDATA_LENGTH_ERROR); } setAxisType(AxisType.BAR); setAxisParameters(labels, points, true); @@ -253,6 +265,9 @@ public BarGraph barh(String[] labels, double[] points) { @Override public PieChart pie(double[] dataPoints) { + if (dataPoints == null) { + throw new JplotlibError(ErrorConstants.NULL_DATA_ERROR); + } setAxisType(AxisType.PIE); PieChart pieChart = new PieChart(new GraphData(null, dataPoints)); graphs.add(pieChart); From 19d6e09dd54684f2ddf244cd6af49cd5b1c634cb Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Fri, 22 Dec 2023 14:06:21 +0530 Subject: [PATCH 07/12] refactor: Added a marker for show() method. --- .../io/github/manishdait/jplotlib/Jplotlib.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java b/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java index c08aa7c..4b43037 100755 --- a/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java +++ b/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java @@ -80,14 +80,15 @@ public final class Jplotlib implements protected Config axisConfiguration; protected List graphs; + private boolean isPlotable; + public Jplotlib() { this.axisConfiguration = new Config(); this.graphs = new ArrayList<>(); } public final void show() { - if (((axisConfiguration.getTotalXLength() == 0 || axisConfiguration.getTotalYLength() == 0) - && axisConfiguration.getBarLabelLen() == 0) && !axisConfiguration.getAxisType().equals(AxisType.PIE)) { + if (!isPlotable) { return; } this.window = new Window(this.axisConfiguration, this.graphs); @@ -117,8 +118,8 @@ public final void grid(final boolean xGrid, final boolean yGrid) { } private void setAxisType(AxisType axisType) { - if (axisConfiguration.getAxisType() == null || - axisConfiguration.getAxisType().getPriority() < axisType.getPriority()) { + if (axisConfiguration.getAxisType() == null + || axisConfiguration.getAxisType().getPriority() < axisType.getPriority()) { axisConfiguration.setAxisType(axisType); } } @@ -194,6 +195,7 @@ public LineChart plot(double[] yPoints) { setAxisParameters(xPoints, yPoints); LineChart lineChart = new LineChart(new CartesianData(xPoints, yPoints)); graphs.add(lineChart); + isPlotable = true; return lineChart; } @@ -209,6 +211,7 @@ public LineChart plot(double[] xPoints, double[] yPoints) { setAxisParameters(xPoints, yPoints); LineChart lineChart = new LineChart(new CartesianData(xPoints, yPoints)); graphs.add(lineChart); + isPlotable = true; return lineChart; } @@ -226,6 +229,7 @@ public ScatterChart scatter(double[] xPoints, double[] yPoints) { setAxisParameters(xPoints, yPoints); ScatterChart scatterChart = new ScatterChart(new CartesianData(xPoints, yPoints)); graphs.add(scatterChart); + isPlotable = true; return scatterChart; } @@ -243,6 +247,7 @@ public BarGraph bar(String[] labels, double[] points) { setAxisParameters(labels, points, false); BarGraph barGraph = new BarGraph(new GraphData(labels, points)); graphs.add(barGraph); + isPlotable = true; return barGraph; } @@ -258,6 +263,7 @@ public BarGraph barh(String[] labels, double[] points) { setAxisParameters(labels, points, true); BarGraph barGraph = new BarGraph(new GraphData(labels, points)); graphs.add(barGraph); + isPlotable = true; return barGraph; } @@ -271,6 +277,7 @@ public PieChart pie(double[] dataPoints) { setAxisType(AxisType.PIE); PieChart pieChart = new PieChart(new GraphData(null, dataPoints)); graphs.add(pieChart); + isPlotable = true; return pieChart; } } From 4155937589fcc2ada6d1723b1d8cc3e2eac60d58 Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Fri, 22 Dec 2023 20:18:21 +0530 Subject: [PATCH 08/12] feat: Added label functionality to pie chart --- .../github/manishdait/jplotlib/Jplotlib.java | 14 ++++- .../jplotlib/charts/pie/PieChartOptions.java | 22 +++++++- .../jplotlib/charts/pie/PieChartPlotter.java | 51 ++++++++++++++++--- 3 files changed, 78 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java b/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java index 4b43037..cd0a479 100755 --- a/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java +++ b/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java @@ -67,7 +67,7 @@ * (coordinates or pieData). * * @author Manish Dait - * @version 1.0.0 + * @version 1.1.0 */ public final class Jplotlib implements @@ -280,4 +280,16 @@ public PieChart pie(double[] dataPoints) { isPlotable = true; return pieChart; } + + @Override + public PieChart pie(double[] dataPoints, String[] labels) { + if (dataPoints == null) { + throw new JplotlibError(ErrorConstants.NULL_DATA_ERROR); + } + setAxisType(AxisType.PIE); + PieChart pieChart = new PieChart(new GraphData(labels, dataPoints)); + graphs.add(pieChart); + isPlotable = true; + return pieChart; + } } diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartOptions.java b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartOptions.java index 9c4ee0f..bb1b6c1 100755 --- a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartOptions.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartOptions.java @@ -36,11 +36,29 @@ public interface PieChartOptions { * Creates a pie chart with the given data points. * * @param dataPoints - * An array of doubles representing the data points for the pie chart - * slices. + * An array of doubles representing the data points for the + * pie chart + * slices. * @return PieChart A PieChart object representing a pie chart with the provided * data points. */ PieChart pie(double[] dataPoints); + /** + * Creates a pie chart with labeled segments using the given data points and + * labels. + * + * @param dataPoints + * An array of doubles representing the data points for the + * pie chart slices. + * @param labels + * An array of Strings providing labels for the corresponding + * data points. + * Each data point in the chart will be labeled accordingly. + * @return PieChart + * A PieChart object representing a labeled pie chart with the provided + * data points and labels. + */ + PieChart pie(double[] dataPoints, String[] labels); + } diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartPlotter.java b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartPlotter.java index fc5e313..0713b1d 100755 --- a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartPlotter.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChartPlotter.java @@ -53,11 +53,11 @@ public class PieChartPlotter implements Plotter { * PieChart object. * * @param g - * The Graphics object used for rendering. + * The Graphics object used for rendering. * @param context - * The JPanel where the pie chart slices will be drawn. + * The JPanel where the pie chart slices will be drawn. * @param pieChart - * The PieChart object containing data and style settings. + * The PieChart object containing data and style settings. */ public PieChartPlotter( Graphics g, @@ -71,11 +71,19 @@ public PieChartPlotter( @Override public void draw() { double[] data = ((GraphData) pieChart.getValues()).getData(); + String[] labels = ((GraphData) pieChart.getValues()).getLabels(); this.g.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + this.g.setRenderingHint( + RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + this.g.setRenderingHint( + RenderingHints.KEY_RENDERING, + RenderingHints.VALUE_RENDER_QUALITY); + int width = (context.getWidth()) / 2; int height = (context.getHeight()) / 2; @@ -86,7 +94,7 @@ public void draw() { sum = sum == 0 ? 1 : sum; double diff = 360 / sum; - int radius = Math.min(context.getHeight(), context.getWidth()) / 2 - 40; + int radius = Math.min(context.getHeight(), context.getWidth()) / 2 - 50; int prevAng = 0; Color[] color = pieChart.getStyle().getColor(); @@ -98,15 +106,21 @@ public void draw() { this.g.setColor(color[i]); } + int angle = (int) (data[i] * diff); + this.g.fillArc( width - radius, height - radius, radius * 2, radius * 2, prevAng, - (int) (data[i] * diff)); + angle); + + int midAngle = prevAng + angle / 2; + + int[] labelDistance = findLabelDistance(angle, midAngle, width, height, radius); - prevAng += (int) (data[i] * diff); + prevAng += angle; if (i == data.length - 1 && prevAng != 360) { this.g.fillArc( @@ -117,7 +131,32 @@ public void draw() { prevAng, 360 - prevAng); } + + if (labels != null) { + String label = labels[i]; + if (labelDistance[0] < width) { + labelDistance[0] = labelDistance[0] - label.length() * 8; + } + g.setColor(Color.black); + this.g.drawString(label, labelDistance[0], labelDistance[1]); + + } + } + } + + private int[] findLabelDistance(int angle, int midAngle, int width, int height, int radius) { + int labelX = 0; + int labelY = 0; + + // Calculate label position + if (angle < 180) { + labelX = (int) (width + (radius * 1.1 * Math.cos(Math.toRadians(midAngle)))); + labelY = (int) (height - (radius * 1.1 * Math.sin(Math.toRadians(midAngle)))); + } else { + labelX = (int) (width + (radius * 1.1 * Math.cos(Math.toRadians(midAngle)))); + labelY = (int) (height + (radius * 1.1 * Math.sin(Math.toRadians(midAngle)))); } + return new int[] { labelX, labelY }; } } From 24f56a08293e5764e69b024a76fc1532997a47bd Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Fri, 22 Dec 2023 20:20:03 +0530 Subject: [PATCH 09/12] fix: Add mismatch error for pie --- src/main/java/io/github/manishdait/jplotlib/Jplotlib.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java b/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java index cd0a479..fb503b3 100755 --- a/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java +++ b/src/main/java/io/github/manishdait/jplotlib/Jplotlib.java @@ -283,9 +283,12 @@ public PieChart pie(double[] dataPoints) { @Override public PieChart pie(double[] dataPoints, String[] labels) { - if (dataPoints == null) { + if (dataPoints == null || labels == null) { throw new JplotlibError(ErrorConstants.NULL_DATA_ERROR); } + if (labels.length != dataPoints.length) { + throw new JplotlibError(ErrorConstants.MISSMATCH_LABELDATA_LENGTH_ERROR); + } setAxisType(AxisType.PIE); PieChart pieChart = new PieChart(new GraphData(labels, dataPoints)); graphs.add(pieChart); From 74afb86c9d67a17ee71b3d2a7d30447afe4634dc Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Sat, 23 Dec 2023 06:00:53 +0530 Subject: [PATCH 10/12] fix: Added misiing color impl. --- .../io/github/manishdait/jplotlib/charts/pie/PieChart.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChart.java b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChart.java index 187df94..e8e96af 100755 --- a/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChart.java +++ b/src/main/java/io/github/manishdait/jplotlib/charts/pie/PieChart.java @@ -24,6 +24,8 @@ package io.github.manishdait.jplotlib.charts.pie; +import java.awt.Color; + import io.github.manishdait.jplotlib.charts.helper.Graph; import io.github.manishdait.jplotlib.data.util.Data; import io.github.manishdait.jplotlib.internals.util.ChartType; @@ -74,4 +76,9 @@ public void setStyle(PieChartStyle style) { this.style = style; } + public PieChart color(Color[] colors) { + style.setColor(colors); + return this; + } + } From 9a31bb03c1448419c39b82dbec67c51350906956 Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Sat, 23 Dec 2023 06:46:35 +0530 Subject: [PATCH 11/12] refactor: Update docs and readme for new impl of Jplotlib. --- README.md | 11 +++-- docs/BAR.md | 44 ++++++++++++++---- docs/BASE_COLOR.md | 46 ------------------- docs/BASE_STROKE.md | 37 --------------- docs/GETTING_STARTED.md | 8 ++-- docs/LIB_COLOR.md | 47 +++++++++++++++++++ docs/MARKER.md | 49 +++++++++----------- docs/PIE.md | 51 +++++++++++++++------ docs/PLOT.md | 67 ++++++++++++---------------- docs/SCATTER.md | 57 ++++++++++------------- docs/STROKE.md | 34 ++++++++++++++ docs/assets/bar/bar_EG1.png | Bin 0 -> 10721 bytes docs/assets/bar/bar_EG2.png | Bin 0 -> 10721 bytes docs/assets/bar/bar_EG3.png | Bin 0 -> 10677 bytes docs/assets/bar/bar_eg1.png | Bin 8126 -> 0 bytes docs/assets/bar/bar_eg2.png | Bin 8126 -> 0 bytes docs/assets/base_color_eg1.png | Bin 19001 -> 0 bytes docs/assets/base_eg1.png | Bin 21610 -> 0 bytes docs/assets/base_eg2.png | Bin 30490 -> 0 bytes docs/assets/base_stroke_eg1.png | Bin 14149 -> 0 bytes docs/assets/marker/marker_EG1.png | Bin 0 -> 30831 bytes docs/assets/marker/marker_EG2.png | Bin 0 -> 25839 bytes docs/assets/marker/marker_EG3.png | Bin 0 -> 23552 bytes docs/assets/marker/marker_eg1.png | Bin 26471 -> 0 bytes docs/assets/marker/marker_eg2.png | Bin 22324 -> 0 bytes docs/assets/marker/marker_eg3.png | Bin 20192 -> 0 bytes docs/assets/pie/pie.EG3.png | Bin 0 -> 23119 bytes docs/assets/pie/pie_EG1.png | Bin 0 -> 20152 bytes docs/assets/pie/pie_EG2.png | Bin 0 -> 18879 bytes docs/assets/pie/pie_eg1.png | Bin 20380 -> 0 bytes docs/assets/pie/pie_eg2.png | Bin 18851 -> 0 bytes docs/assets/plot/plot_EG1.png | Bin 0 -> 20765 bytes docs/assets/plot/plot_EG2.png | Bin 0 -> 18784 bytes docs/assets/plot/plot_EG3.png | Bin 0 -> 22100 bytes docs/assets/plot/plot_EG4.png | Bin 0 -> 16825 bytes docs/assets/plot/plot_EG5.png | Bin 0 -> 20995 bytes docs/assets/plot/plot_EG6.png | Bin 0 -> 28725 bytes docs/assets/plot/plot_EG7.png | Bin 0 -> 27320 bytes docs/assets/plot/plot_eg1.png | Bin 18356 -> 0 bytes docs/assets/plot/plot_eg2.png | Bin 16397 -> 0 bytes docs/assets/plot/plot_eg3.png | Bin 19608 -> 0 bytes docs/assets/plot/plot_eg4.png | Bin 14421 -> 0 bytes docs/assets/plot/plot_eg5.png | Bin 18509 -> 0 bytes docs/assets/plot/plot_eg6.png | Bin 27551 -> 0 bytes docs/assets/plot/plot_eg7.png | Bin 22112 -> 0 bytes docs/assets/readme_EG1.png | Bin 0 -> 23935 bytes docs/assets/readme_EG2.png | Bin 0 -> 32119 bytes docs/assets/scatter/scatter_EG1.png | Bin 0 -> 15804 bytes docs/assets/scatter/scatter_EG2.png | Bin 0 -> 19158 bytes docs/assets/scatter/scatter_EG3.png | Bin 0 -> 19276 bytes docs/assets/scatter/scatter_EG4.png | Bin 0 -> 19776 bytes docs/assets/scatter/scatter_EG5.png | Bin 0 -> 19691 bytes docs/assets/scatter/scatter_EG6.png | Bin 0 -> 18128 bytes docs/assets/scatter/scatter_eg1.png | Bin 10931 -> 0 bytes docs/assets/scatter/scatter_eg2.png | Bin 12427 -> 0 bytes docs/assets/scatter/scatter_eg3.png | Bin 12321 -> 0 bytes docs/assets/scatter/scatter_eg4.png | Bin 15001 -> 0 bytes docs/assets/scatter/scatter_eg5.png | Bin 14987 -> 0 bytes docs/assets/scatter/scatter_eg6.png | Bin 11419 -> 0 bytes 59 files changed, 237 insertions(+), 214 deletions(-) delete mode 100644 docs/BASE_COLOR.md delete mode 100644 docs/BASE_STROKE.md create mode 100644 docs/LIB_COLOR.md create mode 100644 docs/STROKE.md create mode 100644 docs/assets/bar/bar_EG1.png create mode 100644 docs/assets/bar/bar_EG2.png create mode 100644 docs/assets/bar/bar_EG3.png delete mode 100644 docs/assets/bar/bar_eg1.png delete mode 100644 docs/assets/bar/bar_eg2.png delete mode 100644 docs/assets/base_color_eg1.png delete mode 100644 docs/assets/base_eg1.png delete mode 100644 docs/assets/base_eg2.png delete mode 100644 docs/assets/base_stroke_eg1.png create mode 100644 docs/assets/marker/marker_EG1.png create mode 100644 docs/assets/marker/marker_EG2.png create mode 100644 docs/assets/marker/marker_EG3.png delete mode 100644 docs/assets/marker/marker_eg1.png delete mode 100644 docs/assets/marker/marker_eg2.png delete mode 100644 docs/assets/marker/marker_eg3.png create mode 100644 docs/assets/pie/pie.EG3.png create mode 100644 docs/assets/pie/pie_EG1.png create mode 100644 docs/assets/pie/pie_EG2.png delete mode 100644 docs/assets/pie/pie_eg1.png delete mode 100644 docs/assets/pie/pie_eg2.png create mode 100644 docs/assets/plot/plot_EG1.png create mode 100644 docs/assets/plot/plot_EG2.png create mode 100644 docs/assets/plot/plot_EG3.png create mode 100644 docs/assets/plot/plot_EG4.png create mode 100644 docs/assets/plot/plot_EG5.png create mode 100644 docs/assets/plot/plot_EG6.png create mode 100644 docs/assets/plot/plot_EG7.png delete mode 100644 docs/assets/plot/plot_eg1.png delete mode 100644 docs/assets/plot/plot_eg2.png delete mode 100644 docs/assets/plot/plot_eg3.png delete mode 100644 docs/assets/plot/plot_eg4.png delete mode 100644 docs/assets/plot/plot_eg5.png delete mode 100644 docs/assets/plot/plot_eg6.png delete mode 100644 docs/assets/plot/plot_eg7.png create mode 100644 docs/assets/readme_EG1.png create mode 100644 docs/assets/readme_EG2.png create mode 100644 docs/assets/scatter/scatter_EG1.png create mode 100644 docs/assets/scatter/scatter_EG2.png create mode 100644 docs/assets/scatter/scatter_EG3.png create mode 100644 docs/assets/scatter/scatter_EG4.png create mode 100644 docs/assets/scatter/scatter_EG5.png create mode 100644 docs/assets/scatter/scatter_EG6.png delete mode 100644 docs/assets/scatter/scatter_eg1.png delete mode 100644 docs/assets/scatter/scatter_eg2.png delete mode 100644 docs/assets/scatter/scatter_eg3.png delete mode 100644 docs/assets/scatter/scatter_eg4.png delete mode 100644 docs/assets/scatter/scatter_eg5.png delete mode 100644 docs/assets/scatter/scatter_eg6.png diff --git a/README.md b/README.md index 3ff6341..09cc358 100644 --- a/README.md +++ b/README.md @@ -36,13 +36,12 @@ public class App { jplotlib.title("Line Plot"); jplotlib.xLabel("xLabel"); jplotlib.yLabel("yLabel"); - jplotlib.plot(y).build(); + jplotlib.plot(y); jplotlib.show(); - } } ``` -base_eg1.png +readme_eg1.png Another Example to draw **MultiLine Plot** @@ -59,14 +58,14 @@ public class App { jplotlib.title("Line Plot"); jplotlib.xLabel("xLabel"); jplotlib.yLabel("yLabel"); - jplotlib.plot(y1).build(); + jplotlib.plot(y1); + jplotlib.plot(y2); jplotlib.show(); - } } ``` -base_eg2.png +readme_eg2.png Learn More about Jplotlib in [GETTING_STARTED.md](docs/GETTING_STARTED.md) diff --git a/docs/BAR.md b/docs/BAR.md index 1109fc6..8a80e83 100644 --- a/docs/BAR.md +++ b/docs/BAR.md @@ -19,15 +19,14 @@ public class App { Jplotlib jplotlib = new Jplotlib(); String[] x = {"A", "B", "C", "D"}; double[] y = {3, 8, 1, 10}; - jplotlib.bar(x, y) - .build(); + jplotlib.bar(x, y); jplotlib.show(); } } ``` In this example, we use the `bar()` method to create a bar graph using `x` as the labels for the x-coordinates and `y` as the y-coordinates. Each bar in the graph represents a category defined by the labels, and its height corresponds to the respective value from `y`. -bar_eg1.png +bar_eg1.png Bar graphs are particularly useful for comparing the values of different categories and displaying discrete data. They are commonly used to visualize categorical data and show how different groups or items compare with each other. @@ -40,7 +39,7 @@ In Jplotlib, similar to `.plot()`[.color()](PLOT.md) you can customize the color ```java import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.color.BaseColor; +import io.github.manishdait.jplotlib.defaults.color.LibColor; public class App { public static void main(String[] args) { @@ -48,16 +47,45 @@ public class App { String[] x = {"A", "B", "C", "D"}; double[] y = {3, 8, 1, 10}; jplotlib.bar(x, y) - .color(BaseColor.PINK.getColor()) - .build(); + .color(LibColor.PINK.getColor()); jplotlib.show(); } } ``` -In this example, we use the `.color(BaseColor.PINK.getColor())` method with the `bar()` method to set the color of the bars in the bar graph to pink. You can use the `BaseColor` enum to choose from a variety of predefined colors like `BaseColor.RED`, `BaseColor.GREEN`, `BaseColor`.ORANGE, and more. +In this example, we use the `.color(LibColor.PINK.getColor())` method with the `bar()` method to set the color of the bars in the bar graph to pink. You can use the `LibColor` enum to choose from a variety of predefined colors like `LibColor.RED`, `LibColor.GREEN`, `LibColorColor.ORANGE`, and more. -bar_eg2.png +bar_eg2.png You can also use the java.awt.Color class to specify custom colors using RGB values, like `.color(new Color(255, 0, 0))` for red. +# Jplotlib.barh() + +The `barh()` method in `Jplotlib` allows you to create Horizonta; 2D bar graphs. It has all similar features like above `bar()` method. + +### Method Signature: + +```java +barh(String[] xLabels, double[] yPoints) +``` +The `barh()` method requires two arrays: `xLabels` containing labels for the x-coordinates (in String format) and `yPoints` containing the corresponding y-coordinates. + +### Example Usage: + +```java +import io.github.manishdait.jplotlib.Jplotlib; + +public class App { + public static void main(String[] args) { + Jplotlib jplotlib = new Jplotlib(); + String[] x = {"A", "B", "C", "D"}; + double[] y = {3, 8, 1, 10}; + jplotlib.barh(x, y); + jplotlib.show(); + } +} +``` + +In this example, we use the `barh()` method to create a bar graph using `x` as the labels for the x-coordinates and `y` as the y-coordinates. Each bar in the graph represents a category defined by the labels, and its width corresponds to the respective value from `x`. + +bar_eg3.png \ No newline at end of file diff --git a/docs/BASE_COLOR.md b/docs/BASE_COLOR.md deleted file mode 100644 index d2efc19..0000000 --- a/docs/BASE_COLOR.md +++ /dev/null @@ -1,46 +0,0 @@ -# BaseColor Enum - -The `BaseColor` enum in Jplotlib provides a set of predefined colors that you can use to customize the appearance of your plots. - -### Available BaseColor: - -- `BaseColor.BLUE` -- `BaseColor.ORANGE` -- `BaseColor.GREEN` -- `BaseColor.RED` -- `BaseColor.PURPLE` -- `BaseColor.BROWN` -- `BaseColor.PINK` -- `BaseColor.GREY` -- `BaseColor.LIME` -- `BaseColor.SKY` - -### Example Usage: - -```java - import io.github.manishdait.jplotlib.Jplotlib; - import io.github.manishdait.jplotlib.style.color.BaseColor; - import io.github.manishdait.jplotlib.style.marker.BaseMarker; - - public class App { - public static void main(String[] args) { - double[] x = {1, 2, 3, 4}; - double[] y = {2, 5, 3, 6}; - - Jplotlib jplotlib = new Jplotlib(); - jplotlib.plot(x, y) - .marker(BaseMarker.CIRCLE) - .color(BaseColor.BLUE.getColor()) - .markerColor(BaseColor.RED.getColor()) - .build(); - jplotlib.show(); - } - } -``` -In this example, we use the `.color(BaseColor.BLUE.getColor())` method to set the line color to blue and `.markerColor(BaseColor.RED.getColor())` to set marker color red using `BaseColor` from Jplotlib. The `BaseColor.BLUE` constant provides the predefined blue color and `BaseColor.RED` constant provides predefine red color. - -base_stroke_eg1.png - -You can use any of the available BaseColor constants to customize the color of lines, markers, or other visual elements in your plot according to your preferences. - - diff --git a/docs/BASE_STROKE.md b/docs/BASE_STROKE.md deleted file mode 100644 index d0dc38f..0000000 --- a/docs/BASE_STROKE.md +++ /dev/null @@ -1,37 +0,0 @@ -# BaseStroke Enum - -The `BaseStroke` enum in Jplotlib provides options to customize the style of lines in plots. - -### Available Styles: - -Currently, the `BaseStoke` enum in Jplotlib provides two values for line style: - -- `BaseStroke.NONE`: This value sets the line style to a solid line with no special decoration (default style). - -- `BaseStroke.DASHED`: This value sets the line style to a dashed line. - -### Example Usage: - -```java -import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.line.BaseStroke; - -public class App { - public static void main(String[] args) { - double[] x = {1, 2, 3, 4}; - double[] y = {2.5, 5.1, 3.9, 6.2}; - - Jplotlib jplotlib = new Jplotlib(); - jplotlib.plot(x, y) - .lineStyle(BaseStroke.DASHED) - .build(); - jplotlib.show(); - } -} -``` - -In this example, we use the `.lineStyle(BaseStroke.DASHED)` method to set the line style to dashed, overriding the default style which is `BaseStroke.NONE`. - -base_color_eg1.png - -You can use the `BaseStroke` enum to change the appearance of lines in your plots according to your preferences. If no specific style is set, it will use the default `BaseStroke.NONE`, which is a solid line. \ No newline at end of file diff --git a/docs/GETTING_STARTED.md b/docs/GETTING_STARTED.md index 9c4ff59..2d4c9b3 100644 --- a/docs/GETTING_STARTED.md +++ b/docs/GETTING_STARTED.md @@ -33,7 +33,7 @@ double[] y = {2.5, 5.1, 3.9, 6.2}; ``` 4. Plot the data using the plot() method: ```java -jplotlib.plot(x, y).build(); +jplotlib.plot(x, y); ``` 5. Add optional elements like grid, labels, and title: ```java @@ -56,7 +56,7 @@ For more details and additional customization options, you can refer to the [PLO To create a 2D scatter plot using Jplotlib, follow the same steps as above, but instead of using the `plot()` method, use the `scatter()` method: ```java -jplotlib.scatter(x, y).build(); +jplotlib.scatter(x, y); ``` You can find more information about scatter plots in the [SCATTER.md](SCATTER.md) document. @@ -69,7 +69,7 @@ To create a 2D bar graph using Jplotlib, follow the same initial steps and then String[] xLabels = {"A", "B", "C", "D"}; double[] yData = {25.0, 42.0, 30.5, 18.7}; -jplotlib.bar(xLabels, yData).build(); +jplotlib.bar(xLabels, yData); ``` For more details and options for bar graphs, refer to the [BAR.md](BAR.md) document. @@ -83,7 +83,7 @@ To create a 2D pie chart using Jplotlib, follow the same initial steps and then ```java double[] dataPoints = {35.0, 25.0, 15.0, 25.0}; -jplotlib.pie(dataPoints).build(); +jplotlib.pie(dataPoints); ``` More information about pie charts can be found in the [PIE.md](PIE.md) document. diff --git a/docs/LIB_COLOR.md b/docs/LIB_COLOR.md new file mode 100644 index 0000000..52a2f16 --- /dev/null +++ b/docs/LIB_COLOR.md @@ -0,0 +1,47 @@ +# LibColor Enum + +The `LibColor` enum in Jplotlib provides a set of predefined colors that you can use to customize the appearance of your plots. + +### Available LibColor: + +- `LibColor.BLUE` +- `LibColor.ORANGE` +- `LibColor.GREEN` +- `LibColor.RED` +- `LibColor.PURPLE` +- `LibColor.BROWN` +- `LibColor.PINK` +- `LibColor.GREY` +- `LibColor.LIME` +- `LibColor.SKY` + +### Example Usage: + +```java + import io.github.manishdait.jplotlib.Jplotlib; + import io.github.manishdait.jplotlib.defaults.color.LibColor; + import io.github.manishdait.jplotlib.defaults.marker.Marker; + + public class App { + public static void main(String[] args) { + double[] y1 = {0, 3, 4, 7}; + double[] y2 = {2.5, 5.1, 3.9, 6.2}; + + Jplotlib jplotlib = new Jplotlib(); + jplotlib.plot(y1) + .marker(Marker.CIRCLE) + .markerColor(LibColor.GREEN.getColor()); + jplotlib.plot(y2) + .marker(Marker.SQUARE) + .markerColor(Color.MAGENTA); + jplotlib.show(); + } + } +``` +In this example, we use the `.color(LibColor.BLUE.getColor())` method to set the line color to blue and `.markerColor(LibColor.RED.getColor())` to set marker color red using `LibColor` from Jplotlib. The `LibColor.BLUE` constant provides the predefined blue color and `LibColor.RED` constant provides predefine red color. + +base_stroke_eg1.png + +You can use any of the available LibColor constants to customize the color of lines, markers, or other visual elements in your plot according to your preferences. + + diff --git a/docs/MARKER.md b/docs/MARKER.md index 9f2f315..1acb473 100644 --- a/docs/MARKER.md +++ b/docs/MARKER.md @@ -18,7 +18,7 @@ Currently, Jplotlib provides three marker types: ```java import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.marker.BaseMarker; +import io.github.manishdait.jplotlib.defaults.marker.Marker; public class App { public static void main(String[] args) { @@ -28,27 +28,24 @@ public class App { Jplotlib jplotlib = new Jplotlib(); jplotlib.plot(y1) - .marker(BaseMarker.NONE) - .build(); + .marker(Marker.NONE); jplotlib.plot(y2) - .marker(BaseMarker.CIRCLE) - .build(); + .marker(Marker.CIRCLE); jplotlib.plot(y3) - .marker(BaseMarker.SQUARE) - .build(); + .marker(Marker.SQUARE); jplotlib.show(); } } ``` -In above example we use `.marker(BaseMarker.Circle)` to set marker as circle , `.marker(BaseMarker.Square)` to set marker as square and `.marker(BaseMarker.NONE)` to set no marker, `BaseMarker.NONE` is the default marker style. +In above example we use `.marker(Marker.Circle)` to set marker as circle , `.marker(Marker.Square)` to set marker as square and `.marker(Marker.NONE)` to set no marker, `Marker.NONE` is the default marker style. -marker_eg1.png +marker_eg1.png ### Setting Marker Color: -You can customize the color of the markers using the `.markerColor()` method. This method accepts either the `BaseColor` enum or `java.awt.Color`. You can find the available colors in the [BaseColor Enum section](BASE_COLOR.md) below. +You can customize the color of the markers using the `.markerColor()` method. This method accepts either the `LibColor` enum or `java.awt.Color`. You can find the available colors in the [LibColor Enum section](LIB_COLOR.md) below. ### Example Usage: @@ -56,8 +53,8 @@ You can customize the color of the markers using the `.markerColor()` method. Th import java.awt.Color; import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.color.BaseColor; -import io.github.manishdait.jplotlib.style.marker.BaseMarker; +import io.github.manishdait.jplotlib.defaults.color.LibColor; +import io.github.manishdait.jplotlib.defaults.marker.Marker; public class App { public static void main(String[] args) { @@ -66,20 +63,18 @@ public class App { Jplotlib jplotlib = new Jplotlib(); jplotlib.plot(y1) - .marker(BaseMarker.CIRCLE) - .markerColor(BaseColor.GREEN.getColor()) - .build(); + .marker(Marker.CIRCLE) + .markerColor(LibColor.GREEN.getColor()); jplotlib.plot(y2) - .marker(BaseMarker.SQUARE) - .markerColor(Color.MAGENTA) - .build(); + .marker(Marker.SQUARE) + .markerColor(Color.MAGENTA); jplotlib.show(); } } ``` -In above we use `.markerColor(BaseColor.GREEN.getColor())` method to set the marker color to green using the `BaseColor` enum and `.markerColor(Color.MAGENTA)` from java.awt.Color. +In above we use `.markerColor(LibColor.GREEN.getColor())` method to set the marker color to green using the `LibColor` enum and `.markerColor(Color.MAGENTA)` from java.awt.Color. -marker_eg2.png +marker_eg2.png ### Setting Marker Size: @@ -90,7 +85,7 @@ To adjust the size of the markers, you can use the `.markerSize()` method, which ```java import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.marker.BaseMarker; +import io.github.manishdait.jplotlib.defaults.marker.Marker; public class App { public static void main(String[] args) { @@ -99,13 +94,11 @@ public class App { Jplotlib jplotlib = new Jplotlib(); jplotlib.plot(y1) - .marker(BaseMarker.CIRCLE) - .markerSize(4) - .build(); + .marker(Marker.CIRCLE) + .markerSize(4); jplotlib.plot(y2) - .marker(BaseMarker.SQUARE) - .markerSize(10) - .build(); + .marker(Marker.SQUARE) + .markerSize(10); jplotlib.show(); } } @@ -113,6 +106,6 @@ public class App { In above we use `.markerSize(4)` and `.markerSize(10)` to set marker size and 4 and 10 respectivly. -marker_eg3.png +marker_eg3.png You can use the `.marker()` feature to enhance the visibility of data points in your plots and tailor the markers according to your preferences. diff --git a/docs/PIE.md b/docs/PIE.md index 9803a27..7d7d417 100644 --- a/docs/PIE.md +++ b/docs/PIE.md @@ -4,10 +4,19 @@ The `pie()` method in `Jplotlib` allows you to create 2D pie charts with ease. T ### Method Signature: -```java -pie(double[] dataPoints) -``` -The `.pie()` method requires a single array: `dataPoints`, which contains numerical values representing the data points for the pie chart. +1. `pie(double[] datapoint)`: + + ```java + pie(double[] dataPoints) + ``` + The `.pie()` method requires a single array: `dataPoints`, which contains numerical values representing the data points for the pie chart. It plot pie chart without labels. + +2. `pie(double[] datapoint, String[] labels)`: + ```java + pie(double[] dataPoints, String[] labels) + ``` + The `.pie()` method requires a single array: `dataPoints` nad array of `labels`, which contains numerical values representing the data points and String value for labels for the pie chart. + ### Example Usage: @@ -18,15 +27,14 @@ public class App { public static void main(String[] args) { Jplotlib jplotlib = new Jplotlib(); double[] dataPoints = {35, 25, 25, 15}; - jplotlib.pie(dataPoints) - .build(); + jplotlib.pie(dataPoints); jplotlib.show(); } } ``` In this example, we use the `pie()` method to create a pie chart using only the `dataPoints` array. The pie chart visually represents the proportion of each data point relative to the whole dataset. -pie_eg1.png +pie_eg1.png Pie charts are useful for displaying parts of a whole and showing the relative distribution of different categories within a dataset. @@ -41,24 +49,41 @@ In Jplotlib, you can customize the colors of each pie section in a pie chart by import java.awt.Color; import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.color.BaseColor; +import io.github.manishdait.jplotlib.defaults.color.LibColor; public class App { public static void main(String[] args) { Jplotlib jplotlib = new Jplotlib(); double[] dataPoints = {35, 25, 25, 15}; - Color[] colors = {BaseColor.GREY.getColor(), BaseColor.PINK.getColor(), Color.CYAN, Color.MAGENTA}; + Color[] colors = {LibColor.GREY.getColor(), LibColor.PINK.getColor(), Color.CYAN, Color.MAGENTA}; jplotlib.pie(dataPoints) - .color(colors) - .build(); + .color(colors); jplotlib.show(); } } ``` -In this example, we use the `.color(colors)` method with the `pie()` method to set different colors for each pie section. The colors array contains colors from the BaseColor enum, specifying the color for each corresponding data point in the dataPoints array. +In this example, we use the `.color(colors)` method with the `pie()` method to set different colors for each pie section. The colors array contains colors from the LibColor enum, specifying the color for each corresponding data point in the dataPoints array. -pie_eg2.png +pie_eg2.png You can also use the java.awt.Color class to specify custom colors using RGB values, like `.color(new Color[]{Color.BLUE, Color.GREEN, Color.ORANGE, Color.RED})`. +### Pie Chart with Label: + +```java +import io.github.manishdait.jplotlib.Jplotlib; + +public class App { + public static void main(String[] args) { + Jplotlib jplotlib = new Jplotlib(); + double[] dataPoints = {35, 25, 25, 15}; + String[] labels = {"Apple", "Oranges", "Banana", "Mango"}; + jplotlib.pie(dataPoints, labels); + jplotlib.show(); + } +} +``` +In this example, we use the `pie()` method to create a pie chart using the `dataPoints` as wwll as `labels` array. + +pie_eg3.png \ No newline at end of file diff --git a/docs/PLOT.md b/docs/PLOT.md index 6a1d614..f26540f 100644 --- a/docs/PLOT.md +++ b/docs/PLOT.md @@ -24,33 +24,32 @@ The `plot()` method in the `Jplotlib.plot()` allows you to create 2D line plots ## Line Color -To customize the color of the line in the plot, you can use the `.color()` method available in the Jplotlib library. This method allows you to specify the color using either the `BaseColor` enum from Jplotlib or the `java.awt.Color` class. +To customize the color of the line in the plot, you can use the `.color()` method available in the Jplotlib library. This method allows you to specify the color using either the `LibColor` enum from Jplotlib or the `java.awt.Color` class. -### Using `BaseColor` from Jplotlib: +### Using `LibColor` from Jplotlib: -The `BaseColor` enum provides a set of predefined colors that you can use to style the line in your plot. Here's an example of how to use it: +The `LibColor` enum provides a set of predefined colors that you can use to style the line in your plot. Here's an example of how to use it: ```java import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.color.BaseColor; +import io.github.manishdait.jplotlib.defaults.color.LibColor; public class App { public static void main(String[] args) { Jplotlib jplotlib = new Jplotlib(); double[] y1 = {6, 2, 7, 11}; jplotlib.plot(y1) - .color(BaseColor.LIME.getColor()) - .build(); + .color(LibColor.LIME.getColor()); jplotlib.show(); } } ``` -In this example, we use the `.color(BaseColor.LIME.getColor())` method to set the color of the line to lime. +In this example, we use the `.color(LibColor.LIME.getColor())` method to set the color of the line to lime. -plot_eg1.png +plot_eg1.png -For more information about the `BaseColor` enum and the available colors, refer to the [BaseColor Enum section](BASE_COLOR.md). +For more information about the `LibColor` enum and the available colors, refer to the [LibColor Enum section](LIB_COLOR.md). ### Using `java.awt.Color`: @@ -66,8 +65,7 @@ public class App { Jplotlib jplotlib = new Jplotlib(); double[] y1 = {6, 2, 7, 11}; jplotlib.plot(y1) - .color(Color.RED) - .build(); + .color(Color.RED); jplotlib.show(); } } @@ -75,7 +73,7 @@ public class App { In this example, we use the `.color(Color.RED)` method to set the color of the line to red. -plot_eg2.png +plot_eg2.png Whichever method you choose, the `.color()` method allows you to customize the appearance of your line plots with different colors according to your preferences. @@ -94,8 +92,7 @@ public class App { Jplotlib jplotlib = new Jplotlib(); double[] y1 = {6, 2, 7, 11}; jplotlib.plot(y1) - .lineWidth(15F) - .build(); + .lineWidth(15F); jplotlib.show(); } } @@ -103,7 +100,7 @@ public class App { In this example, we use the `.lineWidth(15F)` method to set the width of the line to 15. -plot_eg3.png +plot_eg3.png @@ -114,57 +111,55 @@ The value passed to `.lineWidth()` should be a floating-point number between 1 a ## Line Style -To change the style of the plotted line in the `Jplotlib.plot()` method, you can use the `.lineStyle()` method. This method allows you to customize the appearance of the line using the `BaseStoke` enum from Jplotlib, which currently contains two possible values: `NONE` and `DASHED`. +To change the style of the plotted line in the `Jplotlib.plot()` method, you can use the `.lineStyle()` method. This method allows you to customize the appearance of the line using the `Stoke` enum from Jplotlib, which currently contains two possible values: `NONE` and `DASHED`. ### Example Usage: ```java import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.line.BaseStroke; +import io.github.manishdait.jplotlib.defaults.line.Stroke; public class App { public static void main(String[] args) { Jplotlib jplotlib = new Jplotlib(); double[] y1 = {6, 2, 7, 11}; jplotlib.plot(y1) - .lineStyle(BaseStroke.DASHED) - .build(); + .lineStyle(Stroke.DASHED); jplotlib.show(); } } ``` -In this example, we use the `.lineStyle(BaseStroke.DASHED)` method to set the style of the line to dashed. +In this example, we use the `.lineStyle(Stroke.DASHED)` method to set the style of the line to dashed. -plot_eg4.png +plot_eg4.png -For more information about the `BaseStroke` enum and the available styles, refer to the [BaseStroke Enum section](BASE_STROKE.md). +For more information about the `Stroke` enum and the available styles, refer to the [Stroke Enum section](STROKE.md). ## Line Marker -To add markers to line points in `Jplotlib.plot()`, you can use the `.marker()` method. This method allows you to customize the appearance of the markers using the `BaseMarker` enum from Jplotlib, which currently supports two marker types: `NONE`, `CIRCLE`, and `SQUARE`. +To add markers to line points in `Jplotlib.plot()`, you can use the `.marker()` method. This method allows you to customize the appearance of the markers using the `Marker` enum from Jplotlib, which currently supports two marker types: `NONE`, `CIRCLE`, and `SQUARE`. ### Example Usage: ```java import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.marker.BaseMarker; +import io.github.manishdait.jplotlib.style.marker.Marker; public class App { public static void main(String[] args) { Jplotlib jplotlib = new Jplotlib(); double[] y1 = {6, 2, 7, 11}; jplotlib.plot(y1) - .marker(BaseMarker.CIRCLE) - .build(); + .marker(Marker.CIRCLE); jplotlib.show(); } } ``` -In this example, we use the `.marker(BaseMarker.CIRCLE)` method to add circular markers to the line points. +In this example, we use the `.marker(Marker.CIRCLE)` method to add circular markers to the line points. -plot_eg5.png +plot_eg5.png For more information about the `Marker` and how to use, refer to the [Marker section](MARKER.md). @@ -182,10 +177,8 @@ public class App { Jplotlib jplotlib = new Jplotlib(); double[] y1 = {6, 2, 7, 11}; double[] y2 = {3, 8, 1, 10}; - jplotlib.plot(y1) - .build(); - jplotlib.plot(y2) - .build(); + jplotlib.plot(y1); + jplotlib.plot(y2); jplotlib.show(); } } @@ -193,7 +186,7 @@ public class App { In this example, we create two sets of y-coordinates (`y1` and `y2`) and plot them using two separate `Jplotlib.plot()` method calls. We customize the appearance of each line using different line styles and markers. -plot_eg6.png +plot_eg6.png You can extend this approach to plot any number of lines by adding more `Jplotlib.plot()` method calls with their respective datasets and customizations. @@ -215,10 +208,8 @@ public class App { double[] x2 = {2, 3, 4, 5}; double[] y1 = {6, 2, 7, 11}; double[] y2 = {3, 8, 1, 10}; - jplotlib.plot(x1, y1) - .build(); - jplotlib.plot(x2, y2) - .build(); + jplotlib.plot(x1, y1); + jplotlib.plot(x2, y2); jplotlib.show(); } } @@ -226,5 +217,5 @@ public class App { In this example, we create two sets of y-coordinates (`y1` and `y2`) and two sets of x-coordinates (`x1` and `x2`) and plot them using two separate `Jplotlib.plot()` method calls. -plot_eg7.png +plot_eg7.png diff --git a/docs/SCATTER.md b/docs/SCATTER.md index fd8ce11..047b232 100644 --- a/docs/SCATTER.md +++ b/docs/SCATTER.md @@ -30,8 +30,7 @@ public class App { double[] y = {99,86,87,88,111,86,103,87,94,78,77,85,86}; Jplotlib jplotlib = new Jplotlib(); - jplotlib.scatter(x, y) - .build(); + jplotlib.scatter(x, y); jplotlib.show(); } } @@ -39,7 +38,7 @@ public class App { In this example, we use the `scatter()` method to create a scatter plot using `x` as the x-coordinates and `y` as the y-coordinates. Each point in the plot represents a pair of x and y values from the given arrays. -scatter_eg1.png +scatter_eg1.png ## Compare Plots @@ -59,27 +58,25 @@ public class App { double[] y2 = {100,105,84,105,90,99,90,95,94,100,79,112,91,80,85}; Jplotlib jplotlib = new Jplotlib(); - jplotlib.scatter(x1, y1) - .build(); - jplotlib.scatter(x2, y2) - .build(); + jplotlib.scatter(x1, y1); + jplotlib.scatter(x2, y2); jplotlib.show(); } } ``` In this example, we use two `scatter()` methods to create two separate scatter plots. The first scatter() method creates a scatter plot using `x1` as the x-coordinates and `y1` as the y-coordinates, and the second scatter() method creates another scatter plot using `x2` and `y2`. -scatter_eg2.png +scatter_eg2.png ## Colors -In Jplotlib, you have the flexibility to set your own color for each scatter plot using the `.color()` method. This feature allows you to customize the appearance of individual scatter plots, making it easier to distinguish different datasets or conditions in your visualizations. Similar to `plot().`[.color()](PLOT.md) you can use `BaseColor` enum of `java.awt.Color`. +In Jplotlib, you have the flexibility to set your own color for each scatter plot using the `.color()` method. This feature allows you to customize the appearance of individual scatter plots, making it easier to distinguish different datasets or conditions in your visualizations. Similar to `plot().`[.color()](PLOT.md) you can use `LibColor` enum of `java.awt.Color`. ### Example Usage: ```java import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.color.BaseColor; +import io.github.manishdait.jplotlib.defaults.color.LibColor; public class App { public static void main(String[] args) { @@ -90,25 +87,21 @@ public class App { Jplotlib jplotlib = new Jplotlib(); jplotlib.scatter(x1, y1) - .color(BaseColor.SKY.getColor()) - .build(); + .color(LibColor.SKY.getColor()); jplotlib.scatter(x2, y2) - .color(BaseColor.PINK.getColor()) - .build(); + .color(LibColor.PINK.getColor()); jplotlib.show(); } } ``` -In this example, we use the `.color(BaseColor.SKY.getColor())` argument with the first scatter() method to set the color of the first scatter plot to light_blue. Similarly, we use `.color(BaseColor.PINK.getColor())` with the second scatter() method to set the color of the second scatter plot to pink. +In this example, we use the `.color(LibColor.SKY.getColor())` argument with the first scatter() method to set the color of the first scatter plot to light_blue. Similarly, we use `.color(LibColor.PINK.getColor())` with the second scatter() method to set the color of the second scatter plot to pink. -scatter_eg3.png +scatter_eg3.png -For a complete list of available colors from the `BaseColor` enum, you can refer to the [BaseColor Enum](BASE_COLOR.md). +For a complete list of available colors from the `BaseColor` enum, you can refer to the [LibColor Enum](LIB_COLOR.md). -## Size - ## Size In Jplotlib, you can change the size of the dots in each scatter plot using the `.size()` argument. This feature allows you to adjust the size of individual data points, making them more visually distinguishable and highlighting specific data values in your scatter plots. It takes value between 1 to 10. @@ -126,8 +119,7 @@ public class App { Jplotlib jplotlib = new Jplotlib(); jplotlib.scatter(x, y) - .size(size) - .build(); + .size(size); jplotlib.show(); } } @@ -135,7 +127,7 @@ public class App { In this example, we use the `.size()` argument with both scatter() methods to set the size of the dots for each data point. By customizing the size of each dot, you can emphasize specific data points or highlight patterns in the data, enhancing the overall visual representation of your scatter plots. -scatter_eg4.png +scatter_eg4.png ## Alpha @@ -156,8 +148,7 @@ public class App { Jplotlib jplotlib = new Jplotlib(); jplotlib.scatter(x, y) .size(size) - .alpha(0.5F) - .build(); + .alpha(0.5F); jplotlib.show(); } } @@ -167,7 +158,7 @@ In this example, we use the `.alpha()` argument with the scatter() method to set By adjusting the transparency of the dots, you can reveal underlying patterns in the data, especially when data points overlap or cluster closely together. It helps in visualizing the density of data points and identifying areas with higher concentration. -scatter_eg5.png +scatter_eg5.png ## Marker @@ -178,7 +169,7 @@ In Jplotlib, you can change the style of markers for scatter points using the `. ```java import io.github.manishdait.jplotlib.Jplotlib; -import io.github.manishdait.jplotlib.style.marker.BaseMarker; +import io.github.manishdait.jplotlib.defaults.marker.Marker; public class App { public static void main(String[] args) { @@ -189,20 +180,18 @@ public class App { Jplotlib jplotlib = new Jplotlib(); jplotlib.scatter(x1, y1) - .marker(BaseMarker.SQUARE) - .build(); - jplotlib.scatter(x2, y2) - .build(); + .marker(Marker.SQUARE); + jplotlib.scatter(x2, y2); jplotlib.show(); } } ``` -In this example, we use the `.marker(BaseMarker.SQUARE)` method with the `.scatter()` method to set the style of the marker for the scatter points. The `BaseMarker.SQUARE` value specifies that square markers will be used for each data point in the scatter plot. +In this example, we use the `.marker(Marker.SQUARE)` method with the `.scatter()` method to set the style of the marker for the scatter points. The `Marker.SQUARE` value specifies that square markers will be used for each data point in the scatter plot. -scatter_eg6.png +scatter_eg6.png -You can use various marker styles, such as `BaseMarker.NONE`, `BaseMarker.CIRCLE`, or `BaseMarker.SQUARE`, to change the appearance of the data points in the scatter plot. +You can use various marker styles, such as `Marker.NONE`, `Marker.CIRCLE`, or `Marker.SQUARE`, to change the appearance of the data points in the scatter plot. -For a complete list of available marker types and more details, you can refer to the [Marker Section](MARKER.md). Here the difference is that the `BaseMarker.NONE` will work same as `BaseMarker.CIRCLE`. +For a complete list of available marker types and more details, you can refer to the [Marker Section](MARKER.md). Here the difference is that the `Marker.NONE` will work same as `Marker.CIRCLE`. diff --git a/docs/STROKE.md b/docs/STROKE.md new file mode 100644 index 0000000..f5cf1e4 --- /dev/null +++ b/docs/STROKE.md @@ -0,0 +1,34 @@ +# Stroke Enum + +The `Stroke` enum in Jplotlib provides options to customize the style of lines in plots. + +### Available Styles: + +Currently, the `Stoke` enum in Jplotlib provides two values for line style: + +- `Stroke.NONE`: This value sets the line style to a solid line with no special decoration (default style). + +- `Stroke.DASHED`: This value sets the line style to a dashed line. + +### Example Usage: + +```java +import io.github.manishdait.jplotlib.Jplotlib; +import io.github.manishdait.jplotlib.defaults.line.Stroke; + +public class App { + public static void main(String[] args) { + Jplotlib jplotlib = new Jplotlib(); + double[] y1 = {6, 2, 7, 11}; + jplotlib.plot(y1) + .lineStyle(Stroke.DASHED); + jplotlib.show(); + } +} +``` + +In this example, we use the `.lineStyle(Stroke.DASHED)` method to set the line style to dashed, overriding the default style which is `Stroke.NONE`. + +base_color_eg1.png + +You can use the `Stroke` enum to change the appearance of lines in your plots according to your preferences. If no specific style is set, it will use the default `Stroke.NONE`, which is a solid line. \ No newline at end of file diff --git a/docs/assets/bar/bar_EG1.png b/docs/assets/bar/bar_EG1.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad294d2df6b20482963a256c7207f15b77cd7b2 GIT binary patch literal 10721 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 OAnOaZzgM2~c=&J0zbvHy literal 0 HcmV?d00001 diff --git a/docs/assets/bar/bar_EG3.png b/docs/assets/bar/bar_EG3.png new file mode 100644 index 0000000000000000000000000000000000000000..486ac670249a9226a61e096f92f0aa4fd8f32ea7 GIT binary patch literal 10677 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 literal 0 HcmV?d00001 diff --git a/docs/assets/bar/bar_eg1.png b/docs/assets/bar/bar_eg1.png deleted file mode 100644 index c70c6aa978e6d53a268827657fb23ce82afb3343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8126 zcmeI12~<<(wt$ZUVl5?5t_p%di%MH7-~=KGL8;Odf_kkWlORYCBt!`zK!9MaqGb}0 zAwZz0z*UAYBSQ$N%p@o&gee4Nh!6-vfDkghL%Y^{ciq?f?t82E-SysDJu55cBxj$0 z|NlP!-uv7C|KPm6%_rM-Z36({6XZ8v{}}+3Gyq_8$kr|3KPz9TM1m(}+-c-@TfrlI z>$UsfZ=IksmxC^1(Lsc(f!=^m02bqY2zP2^XAVm8lV69%vH^Aet6h4VVPDzvO8dR`gCJ*ZIhewF&;Stipx3Xem(8y66aTm! z0$UinljB_G*#bvGJ3PKpE2_s}mP1~jtxw_Z3vJn?s<&VxnWKrwH~LHFF4qTR)+G{_ z9|r$3sM_G?W2loB7Ds)1pW0;~^BvGH>=ft1bbMowAt`RFAWf3TV60_v4=Mv!R08koty~=sosj*@329;)?aS}hH zsRKI~8kmGc)*XFekZYiuUE_Kr1Fj*F4egC~9U2~%^j;`Z0sw788jVJ&AaEm?k6U8s zIZq9BTVK8rYjkW~{W=y6c^yD;bCV1U!I2KcRS>A)8mun=I#j5^b^x0KBgCl-zE>i;kP4ov~;`$!X3t-rhN>L7iZDhp3idN4|`z8@%xNf*Is!H zJP-NitjJu$c#ue?jhg?+Q!;t#<#6TJ$fB6Sjl`o5tzU&s>)gS0f64dH=cTD5zOZqagxo z_bm{w8Qp3%w>aOJvqEzXz#`vGy=%~YEvzwg+z{7mTjOan*AJr$w}?f;PKPmRj+RbktJJUVAtDRh7 z_G9$anMed?nO1?OGNEpH82Q9qqE1F!>Jj>>O{TqNyn{kr)$Z;}IHZeo^5)R}b8EZi zgf@@Ki>!C!N4pZa2TPww1mCL| z*TqIB6WlA_nL|)E=qqbAlpD?PGi=J%85xc}6*VI5I zvF-Srg_z>oMRHzd1%Hr~8ie=hGgDY1k4(O}cw~ImmW7+NN$S5x)QcyNX7<40RqGZ3 zcJkEE_5h~+_;2jP=XJ~@(+qpp(}tJm0>16Z)%L3elw<-W#7;fK;){bhFAz1PNt}2j z4l+?2N4kNPN=aMCx$@4POD$OG3FENOBUkYC>Ye89 z@&G2Xw|*hne1*pLzBNgcUFWbfokHit>?WL(?L7Bt`)P zNoZ$vBDX-;agmp25#dzji9t)35<|Ok^peu%gYD(ReTu}Gs#cM8E}$s zaH^3@O8g)_i+f`7l{kdgo3*kN(cYO@j=(CBg~|L(@H3N}Ebmb`zmF74{OCxL(vv1>UeT=YOO{~QoS`3VPX@#HsLoYPySI4B>x`cxXf!2c zSjC5UizN?IuU!OkYVK$!dw@K8uxTrdMHe#`-tk~CQ7r@wS^zzxYtNnSF%C_{$EkvW z&cEYCR>bhk+-}(HGvD5_TCF<=sl$H7lClE~Z8!8^rUmw*Iy_{VzNSHOv)1J(Wzs^{ z;+L-6UM$PgdSpiM6s`tbz}loP;~U0c_rGYPly~5u_m~d`)?oMdN9=Zj-HtZizj?Dq z%sMHM6j`~trgvEQ7pVZtV9+D^ow!N?}qtZcY19g_oH1Hprp_v9|Q$iAnkm?_d zqD;^DB?Wm?y%HF=Daad>imsk)J?U(=T<(zMR>2!_>m3n|>~I$~+elc>^{_5>b<#89 zWS%fTFZ8J)%F(fxopu{lgp0{+XDm0oKV&$u-L0dkH+t#3;)ZDm)|Lk)v*#7x?T~gE zIGK;L1H0c5pLSR|7&#@S=oW=bh*XH>;a;!YsIt;SDlbFaO7It*k&X3_EwE7eM?a%% z^7Uj>JF|o)LH4gFyha~g;;#2@ar9j0O>(p%Q_MHss}g+;Ef?fp6h2QTnNt-X5EI8q z<)$1K0ZDM+eQcg+5a&`n0{# zvgQmsCvjYsB%a=>B+ISQ|M#p-1Nr@em(B zKK{@j3S(uQVdQZk{?2Zz8_qkKXQ<0$M0bw!~rFe3ei-<4N{VgSqK*801L8_ zi<{3(Pos{MerXH6@{k%nI}*MwIcU1h^(PXk2+nd}F3|dx6|r0VJ}IumsO&+=z=)_M zEbQCVWt4PEdOiL#`09c+gyz+KVAH^giv0 z%uKXUzqNe5*ADQ?6MCETsU__X=yf(|f|*Xp(x`OUE51;5tR-UV*|X5{8iV;P+Pe4^ z+0+YD*pYJXTnD4aUYcubt*qR1c{+mvU(FzM3W^vk$Y|;f1&>#86LlnntPcz{fT+Tx zbk*aQx1AvEa@4k%$Fvzzo4nr!&@|{S53KUrBB0L~xS1ETVgO(6X|`e-Wv{A6bZf}r>2 z%>eMZZXeGIRuMFPnE~GQS3SF313{cfJiKdzDUDIA*ugrzmtYhB={YU1Sg|5Uf$enu zBNcy${$I8LzKRG`7x`ucCxFNv;9TrbZ{wk?{5tq0;w!+zW&)Botp5w7|2kd%FOTGJ zr}qDYzQ&$s9pk5=e5;(rEQE~JopJnN1)9+*=H=u#6drHBxEW|#``{-6hBI@u2VAYf z<-(kv;+oM6qM+6g8Q6<7oOFzwbX+PS&~Cg$D+5uBo{-ntnFvy(QSC%hccz)KaEj5j zKg~6%klI+s@d9H+x`u|=>}^$Od!h}rR=%idqnD@(4f!cf3%oa=so~`>UYZ=l)NuL{ z+2%NOSXkK52~7Zq-M#5>YyP>MY@eKnVA;5LSE_ewtPUm%3?{AdQQBUr`r$VPjS|61 z0%_rn{>0cFNWl2l;Cu>pz3UrG8{a+OuCmkhp%MgUf(&d{**O894?UMzuo;Ld+q>uN z^|eWtXaPi#68vK61qa7Ww8%bpNt}>$ zyU7H-s%Sbi2fdoP(mrWeN&JBlKbQ63?Jh1{ft+&B0of&_gW+^>Q5RTf{1LAH zxfXDng8~Dlvx?g;L-3cT{KT$v*F{@_QbwujMqc@sI^W^bC{}~VAfD|u4Br6&cK1ty zA*D3Xt8`)V8Ap0Xy`ZiT#R6AnUVp0bB&cP(Gv_l z%r zo;Z^(&J0cf9ZbvKD)x3r2q9_Sb+PNwp@0j@Mj{4Bp4HWBXpI?>l zX8@3XVzcKDrs^t-pbIcx-#YP2EY#jl)CYh8^47m0!rwLYzss4wx7BjcrJJgK6p)c# zfo8Q+f@|dIdK&<^evr85e@*9a6Z7vK$-lBy{x9s1@7vGCRykv`K#)I>4c9RE*{|vc z5b!My{botfotjhhQzj0d*r_*4@2 zwGPrmqnU(8Aw}G7W0}+vvy(S;gUWEEulEHfv?znS2Trwt-T`#ks$STK+|aoj?wKGf z7J%rN`6l*#ZCkZ-u|=!@ry-gfAUDOxOanIqZ1f|J<;Z4zhT)%%gM|R7bR{9p*d64* zscU`DFJZENTnz5~qG001czl;RFN-C(kZz@`Af8L=GN!`_9K2&d!(yu`O2s1eHw^CU z_9Wff%49FNACergI%p^wC1R5%-dIBz;|YlDj%34{&?Bv^g-?FW&d!#uxGV6Dt5wuV zFiZLiuf-OG3a2)%yCWrY>v!#4?{+rV%1R8J1K^+EdQ);y~s*V-fcvJW;mK`pO(<86!* z=jV)>`;gfo?;p&906Yg(8c>clDMPt5gxms?JAHX&1+%bHQc@z7@(?{EwYcG9I^&pe z>s<~-mlHQEJlUD@?-pL6k|IWB0zwV(PY2%Qt6!~~E$<2xaR|H(Tw#4z>ZQ|Voj!Zp zBQuzBoISD3I_IuP`;a>sdz9Ip*0`J(oY1E1RONT6apA7T&*;~w2ZcLYHKELY~1d-KcRR2}Z+H1qWcXxM!!}8ElRvxYt3wgYv z3T9X{dv|LkPP@)jIy+c_ldZ6MG44{&dK=Fy+RP-pC+rtruE`^m7`;5C`xZ6mn*Z1QCUGAy~si7;F* zxZ$#0lkxeM=}uv;iTA+V8(HodkW;NB%ibo?d#Qc=)Z?!L*d>zML%SHQvh&Z>iil-Q zwSK#!vl7{p@J~R13A(pxRm2by_ufT%Vx<>h4~N@dSNKE!ENZ32Fx+^c3sr((dWb|FN2-PwK1_^Dsit5Lp!SH@XN ztBZ+y?gV9&Gjo(UrBHyY~h>a4LRf)`>#t*dwl6gN)Vzxr%62MkUA;86-l05JQNF6)XrADv$t4 z6$w=!AVV+&5}cR`O3Dn0h!6rH3?YP&=^lI6H>|tvu-5nEuHJ9mv$As5$=P||efD|Y zXFq$tch8=2+xpp8p8)`{)&1nL?*Tx08vtxbR96Lm5$@ZV44zcr-??8<2ahE6kaX}` zC+@gU+<9179O6oBC;*LyT?;jX2ginnM#Hbd;ue(Y&H$i)*8SL#3yDSZ=M`=W7gi2pmksB%+NTeR!qlkE46(Wcj)?EPiO-Y@1y8m~1w z-g<2I=E9ima_U z2$~yV3tc2NH&FuJ{AWiX;$7xMR~i+@WeSMz%pY29=C=!g88Eyie7Xr>3s56&3MwgNOcW{>SZc2`)Nzm*oUIH1ygh!EUN^i*QLCdcdT!a7;u~?Q zz31^oA>ZflxA0HSv=cdI`I%vwuaD4^)+X|WtE=*tdk4UvXXdh4EXFWu!3o;YSIR!s zm+KLHWhN;-L;Rg09cZ7h7yEk$O7XOqV=N zwNBh1JZrg9x;4!bbUrwQO-gBsUx>F)_Jf7RUt52t-nD*sx%lF^IBhCdaDkmr-0HY5 zmE*c%!tDuk+@hIYb8bFG`wbj)a_bo!#T?ojQ0U&1C$jG5f7MqnCMt&!g2ay&!!(IqwuoxW8kt8Xb4-^9G^OWQ@BtX-LG6jv za!T-W_pY@XNaxtTLUiz{xv?ZN$sl%>aQUary$%L#e1{_n_n~5zX-h@{^U(d;FxU>w zo(yU72oLosQ0T@#jY>Np^##q7%sPhnRu!Fz1hGM}sWa80r@hYUrsJ2zy{d|??9q278KAsT}r=wZM zYmR2Z^>A6;O*1fS;caHXV(ocPJ2PvG^-+&+f?}DS9oCU)&ReZN1P&F!_W(B5i|uCO z*96b5O|_UJ1$wmBfELBNN^tqc!|kxcoMLyu+u_y`Fs3PFJAQu^>%(B1!5*Ap6?TBi z-RZCFE9q?r>4nP=a%UMhm=v88(z&TDtkpihl=C#(u+l?hx67s3mVmqwAw-N7NX?GB z0#T&7#iA9KHT;8~=VPHo!xUzGG(V1)YvAc(yKtDhw(BtBdoPz5NVK94x{NL4_rePm z11zanA@6INI;t>$9p;tV2Qs>O?J^%5-5qO_#>%?u@i}ZbPTA<=964UFmxQsS}bkTZjyKj2W7hmX33pH)Os{ z9#_UT|L`h%AbD=xP$x6pu#zSm78JR7^j_2-*8bvE4+!xwe#(As@pI)26_pn9L1yen zi8I!-$i`xv+l9M0XFbWu?(mn-EH))o!3AuRID3UQByd>mGUezOA0^h;kT}>19~UQh zfSe#8Z_e)g8rAGTSG*w*VGa<)q`+^k=0is*l4Qa4@3XGS{=y?CEMiqg8TO?Gc^nQ? zBqa-f)8qsfcfnT)7?*Ol8vHo-lj9YPN&>Zd)qk+eJy(ZwDbJ8A?oO+j_J@qj_V)6N zhHhThP-(G=C-e&^xsqm1?#W`=2m6BZ+VmAedK ztxY$H7Lp5uJu6MK-3^?X9#3@^esEslPD^BsE|ZyOy0H2(KfF2Ne8Y>DoUt_&{ef*W z7qPr*y0f&bAFF&O=~Py+%}XIKYvId4TZ26S`Jo^*ZR)Aw#>j;ng^AmC4fb#BPY_xUj4NvBw>jHx}cjH{*$W zV$sp0d_w#cm5JJ@odR8Npy@bEi_$pGf*0L(oSM_Woqe6 zj=!}$a3+d1Y{s2$uc2k_EK;+Yx_!POk@4!S{q{nF+Ovu(gHtApi>1dvc%N5fFLY@R z5(-M7dWCGckRl$0Ip@kSg00Al-nj!$744~!kYdDTX=^ufjhM8$u+UjkNqS;^`Lah2 ziD!#R*5ID@D_200*FV08idIAoIXouPJNUA9>vSK(+LR-}AbPTqdlYzR zPL`Wsu|yWW+u5M1d2Jz9j$;a-Z1l6iW*fFI_VHxOm@Ktle9ybLd(P!XaF(<=9$T|M zXTPu;^FShLsAgb>JEMB!$gZ~N?oE|C!_caI-1etq@OdF}wZXi@!G_j=5~SubdXJas z7lZ}wsf>GEQsSTXc;szfSVsZqES^f)C z#TG{#rfGRn?2@7H>B)ZTDCu6m*2Gu#%{Nr`oSO5NyVI&?%6#9s7@>M`MRa_ z3?I!{E_JcDAV^tHd*rsG!>l<^a#H->n=vbK5I1LfRBidGsIT?NtIg#Ed`>7@i*E0N zD>=#0kAJ-#kvVJ#P}8$0Wgl~Gn_S!yq;}rL=mb*o$3v8va_{NaPWbkny-w&wxKYBz z@wNqLkP|YSpbVUcX6U!ik#9aGt#hAD5fp=OGF%EmVsiR*^De&PSGm{NAeYK>G-K4Y zT70-kz6^P}DZI~OK6iNBLlxg-qFDWPa#krZhHxVy0?(UocYs!*<=2UoKJ19te&+eu zu39b3Oy4#oB}=cyFepJ57Phc&POzffFx99K5AP4i-x4sb29Wv0FLP_Jha%2kDdugS z3+Na9*gRo;$V4Z9tU4$bAO7mfsaN*5HvvGx9*-Q#rz|nSe3~!R40sxU(Az&&T?>?t zkNk9`Md?ObQnAKGhv^Fd(4yh)3W~na4I2PpuNGKgxMFXD*PSXV0C3iL52$==&Y?A4 zTX*GW_wNGD&jemjT4JW@>y=o6_m=t&_7qfheSP|G{O^DgD5ieiqz(YToOT6={0CF~ z$MlaJ0bg&bTHq*-7%l?eH3R};q`u6j$lcdnN3R2tghAhF{N_jYp9E4 zcRHMIo1r+HD8#?FR38kuG7IS4SczC$ZL0 zVp&<)JuM}mWoY}h;HdQ#E^>7kYU>>EEa-Sxcfq^XyI>8@Q%|=_7`l=+MWXUY*489! zMY4tiuiEAe$T7if7Yka499TW}fXpZ5|fW#{-0bW#x{1$XrcSF$aI}lp@ zjC`>dX~!voFXs}ZhHks#e`{@{OQ>{*XGb>xEq24pX*$1k!|MG$k$lue=0WF7jhj}2 zA+;T3)a~5^N4&dXB6aHSQG2bDaGa*GZ&8TwPH2C%1Wb}1eg3}rV5I@v{5Jr^fAjJm z-`Bs)41~05B|{u zjQS5k|Gz|_WHFMy8X1lwjt7I9>h|_+qv0=ZZRF0)MT)e+#@IuZ*9ktfB&0cQ?ZYLs zuzy}}BZ%3bZw_hfymb8tOGFb*fz8Tj(cVwC;3{ijOrzM60DiNGCGBBLJ*aMA<7<=2 zo)a^&1q_BnTc3@K8$v1rEqpiE%(st@XT;7tOp9KwCx-V$)Q=nliT(60C9CfW({3e# zO91h~4pe%eXv@rL)&w=Dxcw+(P>JOmlyf zNZp|#l~lmyZwC@iYFq(X^M92U{~{>$?8Q6K`yvDV-2Owl!GZYM-F}_#tyRxk=^P0pe6)AZTc8T zlcMY2F&qWm3E8jhs2n_MnSr2L>xDJ^m1BFIM27BJb|2Cm z*$zce)6q3tP{?&*5@!)Ex~BWm@iFO1*j zZTRpoO|SD=n_eO4(NmA}FG!*Ll^;bGh26G-3wmrh-pNzmHqmEyfzL#l%JYxy+*ekI zJkaXTbX3@8ahYWtaAO5FdGPdYP&yxgPj`olw0VGr-TRvrKF=P3Z0-MkmwH0t<{kUn zeWAtmOH1JQ15i!Z#e8Gj`PP2hr`Wo=tiLNlu#oe5cVoz)a+YLRyXTnT6Td+%G$X*w zPHy@7H1BPm`DI+H#^JqaG`cXUxxCyo+iBHjno>?9hf4>i1Pg^gr#!TAP3)Mo(VI zY&Z{YKvZF5a{@ksP8~0?Od-dqGpF()cq+fq)RvVPTu8iixywiIWr(JVLtSK5vkkN; zrnQxROw$aCM~2ZBf3T=SIU2X)4n;0gdeP=-yJAmL-L4d&XO8N3zS#*WDumJOot&H~ z3p7dWI=2i&gz-rT1fq9i=HaDe@sxP2%>|!f-uUadfs+58Jwp%8e5&_A3Fy_$G`=Nq z{MFm~31~0ASU39l*93)>GwSsDB=2I?jfj8o2vx`7PT0MsCIE^-=0XF=V)G(#*uU$31?)cy=q>c2SMA@`@{33a2>$dhU( zYHFU1DL*SsoVlk}uLS&3e1|-kmbW`d^Yvn)_PQTLb@IsX({Cx>?^JisSxT-%?YYB8 zgfSDfd+v^a$!%uKwK7f3yAussjcP$x3m)#gwk*}VI{{AgRD^aUY}0?;J8^lpim1ggO8P1#t=W*xgS4sjPzaLtv>^B)_(5* diff --git a/docs/assets/base_color_eg1.png b/docs/assets/base_color_eg1.png deleted file mode 100644 index c229c83fb192c30be64cb1cfc1a4ad5bf5765a04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19001 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 T^KNB@KPD|HFOe^%_xAq*o{`{( diff --git a/docs/assets/base_eg1.png b/docs/assets/base_eg1.png deleted file mode 100644 index 5196a9dd05f7707ceefed0d275acfda971b6e57c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21610 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 diff --git a/docs/assets/base_eg2.png b/docs/assets/base_eg2.png deleted file mode 100644 index 37011d87efa0f1a22269628b49ec8894317e4f3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30490 zcmeFYWmr_<_bxnii%1DbNJxVs-H3p+3`3Ws(%lRp64Kov-Q6uB42^V`lr#+GkY|s- z|M_;_|Mk9K-s?KoIrC*M_U!${de*w{d#$zk`d&qj0GARM1OgGrzk3S?fzTdf>Ie)Tu zIY#Re2Z887@^7Ue9vKJA?j8`0-+iZ7E2-zd-f&Okle2zS&>Nyh{hUiDgCeCSWgy9M zdr+3kUd|O-X^TN5BaBT?-}@ONg-wmV+YxeZw!N}Si-wKuBt4kPxH@(=EWNPgDaRb| zxs%}>jSj5l|NF=P_DBB@QyB#|){>Zf2l*`LsO-chG+>;yvD>%_#$I`07FL}&=(Tt9 zwLnkp@1Tz7B_+1!LF5&&cP)YJr_<@YXQmv|czXHXCKTtOD zm3OMD$>ut#qKwEv*o}3PCMG8n)6%SdlCU}{Yk&H*S+fCaQc!rmHuCVAJo8?l2jj=^ z+s^*t;^IE0aMFEWHt{SXEZ|wXcXN#uf4`vTK}x`x^z`(Utko()O5o!B#~7GTlrp>Q z=3|E=Boo>SRWfHMCnwoI{(cHP1*(M(8m-J4@Bgc$&+~{KMs^yUb9EG^sY)dU8Ugq^Dq$q+n7BQK*tWIq=|j zOLtNgjjCK$Ts|)G(f3of_ydP^az(#Gd8^}OJ(Ly1;Lmte|MhM=%3@Coz3MpAhZ59Wu;lGw`u(PaK zw6o1k3AAo_Esi&nA|zBuR8dB`^36h-s<{7jwO-;C)=cA8(G4yr+0lI+;u#? zfs1KXwRxSTyZ6^mwQTjSsmxBPFDq@N`Ujg{LzqIa(Me=D_1O=bmFqpebLEbg#cg&h zvC@7|;FC}c|E~8-*1Pw)c4ux-1Zrx{(Ju>?AH_rA)KLRmw#_}bc9 z>18aF`03le^;>g~ZY_(dY$DkJ{_EL{`83{Zp$0ZjMA3Qq$hJl%jCp^jK=EQD^ikNr zcB13aiWbOo`FDZh13ZrUh&9gZJ`Jk}vQ7?T`<=w)cRe4f*IIlMZaT(JWE@j~0ELjjRjyNyhpH08M{j@w>ehcx47^K;kDjy>*4fNk6!OGa4?Ss`{iQ5|IJ zUMO>2UmUPJ4$d!B+uiXSZ%nBDRER4M58fnDgD-J2%C9%MXa>j`YTXw5DO@5L9*yKp zUW|`p7mYdUzzuORP(fUq6?ttm`#CeQH|7uUz!ig?_+b;PUkz2)OVj#%iotA_4_fDKS*|W7)kETj%8B#SCN> zCwy89>~-Ma>S+`ANT|g=UDa-junZQHX8Fm%rUP0)xpI9BvaJkU6D`R@duy2Mv_EEhBr)=Y^B7^@#bWlRr|tS z<$m5O#j}g-i3zbAn@A5%eZ0|fz7Ujf%sdd2gBsn=B_H(c3>3Bt3nv95O3{-M5yH(M>u|+x>+NonH zTfcYFtQEX+u>V$)mA6#T*JB`g}mZ@K8?<>lfJyE~Y)}p &PY{t%Z!l%bKj z>SD5U95dUDth_SKoa-KvvDI{we5;_^#8|Mu_9JLvGdUs@w-oXsz9}~Qh#h41-SMHo zC^)-qdwoi7tmHdG6??A6mE!$vO_!ji+Xq}?kiH6kd1u4qB-&&azVvnh8Ky{!!J_z` zX>bIG@JI~NliZj|SmUi9^^Xm)v)skj&4He?K`2Iy7*~@d0*sgL+!nZ77=;*?s0hUF zDmasw70u8gc3c+@H5FG6adNnhdm8}qAA;NKRgG9yOc$RJwB8lQ>GB;nE3D2aT(k!t z{9LVPD)@TcJ|)}h?pqMurJZA%EE*?gSoM6M49uxp94uEG?`91P_`V|M+r?S(O(7v7 zq2_4H+}?eXtLva1ohg4F{FYUtl7z|hV>^D8793$_u$ht!{c7{JOf#ghbStr(Sg*c! z^}PMYE!WJnq1@xGqThT;KI&|-XO9Vw8SC!cE2d2MlO=Z}fy1#s`Ya%w=P9^v+%hXK zOl;)CiKSg&Eh6u!3V)<8pBC{Eew=yxh0nff)6*!+{Y9Y+&T}E(B%yz2=ju@@o;@ye zal~4cRHdXgSu{!Vgu3K$!Kb0kQ{kmOnU1N#&!U~+g|m&S>)+p*9+@RUVD1+Cg~Z~d zESm3(gH^pdGYide;)cZ*T43C5Dk#gh6FXinTFQdC5M_(hMZLgJ%Ga*8adx&~ZBC=q zLQFI;X%??spjT%R!F~9%vt&iH*9v7lT}8WOZT?}TxXC4ND<}ly9c_)&$Lg+ZGiO#V zA`B07HG|Cul2|8s8TVs+GpNey^`S;EYx6#V&loWw&1z;Zva!|oKU?}8U>NHO3+3-* zt4y=W53H&};DqsGH-@FQpWp-48DZXJ)^wmXrvvngX9z;EvvE;d!Iaz>?C7}5-o12p z%)J3Mss?DU>Vgx!JZ$E!d^%*zZ$jeO;JJuQ$W>-c(}x5Xt7uInFO9MGE9~xA{(jT#j8^k4+n|5(e|J1^=+=Tzc zyHDS0ylK7r{V@d9-^OL?#wmbKo3j!o-x>$(VKKSes9>TQ#QOi>aOhqAT+#EuHo5anVXNVWTwZ z7p|5qyLwqg13H-%7krX~wp-{$u8c4ho&=mcSeBY#cDOksyVV5~pn%%2rsA+fwsQJ) zOX1dCtjLEkSeSAmY7qhjv^LQxOi`Fk{KiFf9l{r_@-R7{8ii20%XpkSz}(}q6lAHm zV**4z2=w?ZzC3`;q+%U<7q9%*AQh=Xi%)=c0TNGiQ1e4}XrNGgSD<=#DpImbzR#5e zzCaEUs7N*X{T1N#zz4wo@OqjZSoc>D8f`5^LMI`V!N0*Vr*X$| z+y}caJf$7eEV>dd$zK#g0nLX2-r3D%8*qPI*qv52$-U;feYSlK+mEdG>vPv_wF`-2 zTnJ-PGZ1j`&_+A%l426|d-lW6rJ*qDUgt`n&Je%V@mJm;60Ra$fqISTkR$a; zp65HOv%Km zMy7`dJMxb&Z|=2=9898TMyV<;hBSA-%N_6ETg~4LE-gqXj*0zE^A-Iqk^cO!->u^B zb=S4)u2+YkSIR=Nu_h;I6H`LpZsABz*QMb3#ZE|e9URVW~y{dA7Cy4wtGS!|8rWam@yo*AAI z;f@5`wC4PxY=BHV*JLYC{C?;t%8r_2`}Hk(C5=}#JehO+R^Gl$D-d;JJjmAr6wP{s1H_PV9B%!uQUhUi|okJ~W0>Bi=6WJ8<^v z&-{9s*bc^{q4(%(NwSt3PXEo>v@X-6Zd6f zf_+_5l_=Mcp3E|)L}@x3mM=>=Jkra>L4b4jKDMz!zjCCL%&Omr354w>s(~hHw^dPS zZ55n-#l*k^CW^D^B28g4>)ri1&_!cd9rq+LW1R?FI(S#(?fOJ1_(9h7&$8a3m8{`! zOqE@;49-+@jm`rEK@W$Xp}Df9^^$yMEl(PNyqJJjZ|W9`lB-bg44;v|O%EbfpNpBW zDtpKu-_sE%eyvsI^1M#xeGney#5i=JV=S)pHnw}AN$-YZfCZwBkqW^BwVGN*bl+VE9yLPXLtOL>QjAII( z@Wx+x(6rqHbQXIdjrKtX+l72pua#m|m5-aem7vGZfWiGmM>%}!4F8@Jclh|R^OZyN z$8!vWWXWeWrYZN5>;lhcipKuf&)@!7Qa^gsf!K8rTd0g>BM%1`3qWFJ*moBeZ+0c} zR;MzzMpMJhHNhdiSEa@!?>r+Sj^Cqz`VCV(E$oaJFMn_-B8h@d?`iO9M!vSZd=dB8 z9iI#iRvB<>yy>g|7gY7%^4Nd>W7Q&xgJ-aDGxd6TRp+$=wXlnW2&NMSjX?7gQ9B1F zkEKnOM%y-O6bi|Jex}b`te4!I^@xog97qUz2DRE^f%hhH$n%FyY8>|z0Sww8a&S| zZ0Bob64|w8I<8jI191R_;eW8LAtj~w zYQ+Y8XJjA#!)O4h-o=ps$nOG)HSu}81&)G(5q$L4zC6<7+n8xj7IF?_N;ZcFnuWs z1GvKs2lp*zW*gSe-pjy0%WX|Go|{CyKYteM)LAH~s?N^Um@bDR#g$o0_;K*I65e7X zxrNRX{fP*Q*Go~r^%&cu_A`|xhE2fDM44GN!4tcRzlCU-6%}F=jyAP3f>_D_{L1Mu zvNKGMw-`?8<`&|KfDu%p|Hr{vqK%(Qoe5+8pXXlxze!5ZAM1Z1(8lRJhSL(jDd4Pjloso9J7rG=WHe=_9Zr(CG1v@0_hJk*x#lm@r~B*nRGZ#kF2d2KfSXui=! zdMlT5r65az9M@fhGKL$e)+K)}_%f>9G5@r>>lE}93&w0HFYFZ1NV2S6KykoBYFG4v z)2@SY>pFfm){!b)83w*uYv^=aY4u`_zfUw0n?Eb)JGEk}8Waib6Dq_B^K+DG9hX-W zzcg$Fb^EWr1yU5=BzuX<0Af>DIxZQEA01wImBOugh7?VvD1unXDVj$=&QppX3qb!) zx*<6AW;I!I-CJk0TIh-FYkjLRLeY7FJCn2s`q+tM!emDAOt!K$Gdy{9Av(~Z)zVhHUYlVFy z_gReq2g5W_choA-$%x6*JQUBl-!N^sdRv?OqupyON_Wr2RtQ+9!@nttPn1q zAAPok>oo2qvgfjgHpJN;zZT+a@3HkuhEu(MpXONt5;!PzmC_9iL);@ zItwy^K;7mK17@x_t4;*jO&Up@7j36j%7?QFaM0$P2uZVFsXPuPsHdkeTI>5;#P!9j z5tDqTu~t@()opOVn!txqvs-<>tgDBFV_x+>Jaoapx-1L zdYKxGPm!yT$W{U_P@v>73k4`^!;J&*I(?HgBUM$MGFX>>h5Ep*l}1~BC-qzgFufBn zeGLH>f3f36-$x1isp43Eo4GX;df=gzg$_r`m(MjtqFw;rmq)%ZJq4Xjb{8S@=Kwg- z1P2F)4O0ATehiPCtNia@4{~A@P>eIj;tUMW{ZB=U-sah2sYc;9S+|NRHm2O=C``KW z_jI+|E-v-IfB%M*Yrm487>H-q_$G;xtPVVR_b5|g{F}UWy~pA!ir{m}GX<|kW!E5& zlvf0sOt-QhYZe-;t$V{rKS~(2I2BmURvsc3S-aXE88YSdlb&k_bav9u5dG=q^3ZCodVPM3*5{-p;0`*yW48^u&wEhjQ&eVX{oHmPwDdzGH@~PxySxf~vamJ&i0P67L-67EV5iLrIRqmk>KVdu zh)9gjvm)w6KHCd6h_uMebVY+gE48A6V%)=G5tF>0f;&VEuyF;lfUw40fZ*sr99lqI z&5CUFtTYRX?5z1qy`-X?wfJmNb-pBEJnxN4FN2Q;z@&q4E?F*tu{WhnHNk& zHyS0{39@cwRjuZDE!6vjjZD@v#Bp2kp3)K&1^e;~yKZcBV|hrtJj-~eF!@@2#&V@k zIxc@Sa&UJ`#EPA5YB^|vyjC+Rsl&YhQXMg@XXqgED8~Lh0FU2w6n!NMrHE($td)?E zMqrP39aZKn?qja!ZvG9dC2MDshu7aVkx*_q(ftRLL5SPNm9#b)TJELiLyfKm1y3XY zfK|gYv&Khc@&Ho&aOM{U?}i{HQyxQTy*SuM~Nu~UuoW`FtQ5|m(2=K%@`02wo>oc9`vM} zaY9vjlu{3a6)hYxNpbtRksh!~EIu^ThS#{;LEAWBKVRynVH|m&X|!cZzZ~V}*+@Ni z)}76D)*51#&@prPRh;ybTq^S@W#eDH=qY zsj>R6{_RD|`Z5FZfK#*J${`<{L(?(UnbgYP32-Zgh5dut<$^r;-4~@xAJAvie@psV zYYRQua3jcmNcZv8a~&j`=&!ucXz@r`9OoHLrnjD<15Rb~VSokPy(|i1L~?Kc>qkEe z{(SvvU2k*qDm6GKL>Dr#Hp91hu^EMQNZ>C5^>*7 z9!Fq(2HZ{EA2Y91ulx^pGvD)!qTRFfw`&5x10*Y9gAPz!ha^e2N;;YzPmt<-;I zSJP-(aXa9SC@yLsjeL$})OnE#?D0Gq4duTc*>vzJ&B~~km9Q6Mli!=J&&{&cJCl>L z1D5>nT>xog!^tf(ogRrR4A$M0h%);mwWjz*N02`HzZp%s3wyl026d@bmDI=oyuWLk zyh1m1?#$htmfzXmoH+oRAB+_`Hwn8LTD1ahBd}x0oT8PO1{>KD|+FDK1Tw8ACHl|gXEZ(p;tfeW# zdPc4yk3j#KBfzDrz}UI*PrQtX+2RC2Vz`w@vKN~H%hKVed1l0y+tm&_AZ{q>W%`<* zVfzy!p-I2-?p^M+YUuPe)DiB5Phh136zoblURPBlbo%oho3oyVMkx5jt5uZ&>k@nm zSnRvZhTnYNtc5KEoMuECCTnFjdtK_TVGNv$i1!tbPMJh1bS`iYl{f zCHuS|@1*3xuwe6xz03wu(j>xr-kVAD5z41?XE_LBo-j>E5h8#5eylM-rlBWqEk;|f z{nVxoRa6Ubs50y-i#jUS>O0gH>eJ-`U#^b;_s7oP;sAKjPludE=;!~lz8rdWc}iVN zc7Jo8McBh+PqUy*)zAD70Q{F>@yHl3xynd@Az@kLZX<~ep5p19a~@PauPVRG%CqO1 zs8$k$Jd}Sbb>3#76zb*JhY7$9r19OCm0ew~0~ zvbw^#prtMAV2&dt-JWK5p8^+I54BJa@y*<7<$sapVdIU}c@RhL9UZxMoqqdyuj3F~ zFZXVK1c%;x(h>IWBe!lAd&eBl=kS~I zu6CnYspowcRn<&Y`pY>~1h`otd~Yr(K|9D6Ads65Dcn2Ga3IZvO>iA>v{zm5SGM%TOL% zw!p+!4}kJld{-fz$AT?-GphCqal?zNN$u+Zk;RZASEirS;Jv{MaHZQbWysr5Iqv$h zlAB8IW4H2e>)Chp2}z83M`Apco%4r+pjvEXoZ#2m=mBJ$)3j|DJ7!;|nfjS>zM-=; zA=FJo_gA&RXu{p1JNT`!r=9mQ@|k~dhA-&CCKLFgV*Ix)%()jvK~q2I!j9uM%%t22I@2|#J=z6Ga+kz-Hl z0Z>C#M(Qr2`KzXrmcExZ0f1Ycs>6TAh#;?&(y{}(0Qkocq*UY3>CN3}4N2_r zvvNu$ttZAs4PGC40x1v$kJqWnGGdi!!AnqTT0z#j&vb-^(63wfKK203+Ki-x?yRpH zK*1Pgea^>?w$_6Qtb0o>b#~3`nDXFkacI5Qg_VFQNJ^|kGMQInnvurm)xkC0#EYATn%tuwPguOEP1{H zo=2JAHpcnPR_>D+2PF1!=5IXXLEZZ>PB~=maM!#QYLffrqAP25uR+9`UG(RMTm83f z;Ivu!q+|~t@su_?i9GVR*|Z8s;kAsT@i~#YJLw_(*rnNIXHa3(wbBa#RVG}V`E6#O z7Mmf=8a=>Sk7(and?-nr|JF9#N2t(Af?#$_eiGf9K_+OFHa1aaWDhxh#qPrUTw|n^ zWV#70ZGT3W3GlM>gONIO`+Hejb~@F40f7AJ(p$X93VT8b%jBYI!lLd?H>f9hftR=T zOxQpa7J9Xv)ExWC5Aua_7K=GNR9A?}=+uhU1n8$gKt63|FDYha8D(-l^-pi4QF;Gx zTC)K7L_3YN>Z+yzVN>xi&XuB}BFRjtuR2gnGOyswTDNmxjF zf(g_S@U7(t3_1oMR=8@b#Cw|db@C0#PMAPWsKnJ{{$qu zE37TNVfQ<$1{+zyZZ!WigI}Jgp!wZND@l`KoqpK%P%F1pt`>n9%tIx71g|dbqM4K?`2al zc`A3~UV8>O|F0!}Lc=4Kd90a1-TN9dFY`v)=M))BME!(-r@Ak@CUXo;{QOGXV81F( z%C4!j-0G@crpeKX`q^+v907ApfO^zHipxcpivX(c8P|w(iZpMec(K2a0{0V>%=*n| zmQa~I5)dH4fw)V-RMyW6ECNGb(!YIZZHuz2(pxyxZV9&?NaK51yv6(HRMLy4OfalJYKs-+!D79 z-JC>&&Bkp8@G{oV7QL*G$e`^GAwaI}nrOnCt0jAVZ|IL=!%54Tf zPMdU^+^GGJy=R{wVD9nY-)0b-7pk+|1t)K`TsZ0uU(SaJ46dAo-^P0nO`5iv@j%h% zO=0722~r-H0dTv?M?hesqa3~L(;)gHoSKK@{#!Xlm3*A2?E`0!Y|ArjNfjs8S`*;q zKG{ghg0|yMy^%D&$z}J|it#+T>}6t9NrxJN(U^y`HngoAw~+7sJ)}uk@^Q?NtWnbf zK-nK_vskYv>X4HO!Zs7Vr|mZBE0(E>%1r3_TI`809=u5hdr0AaBH9X($!c|(5qq{v zKsbZ|4*JUHuY+Z&X7bL-;T~eqnY7D=Zg|hQh!k;x&Li$qnaS0W#CBsWYMFj%-2(W6DNVI@W~m;)How@}5)gu?R;7VQoJ}g{18d#LFAlNAFeKJ5qVs3N$8JM_jJEb*uD?t3Ks1M+f!uOt0WIv&8B&T- zju(h;J%2qBZw@8)2pnric$R#i0I1&~ungn(REavWWTBA6Q4$mLIFUmK486IWE>SO9 ziojUIA7Xycx-;XXB%144uOu|*r%mA$Fz5G@wCJG;AZH;yijRx>ICMyNe5TVFJhoU` zNy|OiNj!ke&qio|>AUl>?7P+Lk6oWC&ojFZu^6asyArlhWBDuUOBkOa?Fy9h2X@YO zf8|JDuLTk=MWIXL9&m|N)*bK>qpFi0Wu_e7@TJ(U#;H}t9>lk8WyAf=5Oo)qF;@p- zvE`$*T$3VrjS6wd)UNQ{Iv4&bmWz4l?m(K#jMH19deP^GDB}dw4|DQ))})pvy8{)s zoX9_$kpf|(;)DR;U3YL-19rjjJW9`aeZ%X~v$=cQ;zPU2=zS9nq~P>tGg@^IZn4b6 z`gKNQszz0RNwR?o=WHm~g)4OHX_M&|!G9_O5(e8BQ1b-KH9*~SIYH6sn_l5>s3w2L zz-y((>*u+wS>2+ArUP^Fgc)*<1v)#s#W#H}*xJ2K1;DMrBmdxH(&?x%mL1S`yq_j0 zks=J3YGI1CKnP9mJxy)Q#s1TIZ{Jwlq$JOwGk^)#YM;>tXty|-tE`$O)!N>)j{%`x zYCe?Il7QK-d)a9O>@7UO0|MaSR*QQsi3SJE`RSH@jOQX%t%U^V!!T@%)zCn8U_mGg zt=oPiD}GPnxn^4w6D!YDUh={$c(zZgg__-7UXaoHo;{9Hbw3BJje>L-s-oQfeB+*A z%LU$*=Q2kh?K7DlHg5{*87VaM2As#9vQBk)ZUAR2k7Z(BLBnkQ0}2~lp(sj#jCFr8)kT{me&CpC-r?AHTJ*SG7=BB zb&qJpIfiOSeYpi9Aj26#>J8Sjn)9_8^Jp#U4PF_5YB-F{~a zK+nKRlfr!obhE|YDJe^wtYtEwnMCZBV`P%8#EZ$7=kLQ6D3@A;+iCcNhO91+SBDG* zWN;(#4+IH7PA!t{cbAK4Le7QhL_AwSy>vF^mFZFxidk6038&5~VJu^+pSN)Hwt#of zgEj<^-vDq8*dS^bOV)CMYPHqLlxvuxiq=B z+wjy&5K3idV$-K_`i}Dn#p|tPBSv|k)Hx+~wX|Wu2fI|Amq6+m@ZcSD$Ap=h9q+b~U zoGgU%{knhc=V9*sEE;m#1b0Z73vJe=Q^^p_nW@kl;#E#9EUB)3DR%#N!%o)epkdZ< za;-aXISNIe!YJ%E{y4e8B!T1!m+DRp50%6pw^BtOHvaheJ-&g)t?bhjfL@lOzC5cp zeqe3zbFb-psFeeXfE`{RZJ|zn483oITB$k5YNKtE8a53EUYa*j(U7Q9qM#FM;eD}P zTkcJxP6EBY%?r#c;^|w&nfcS;G(PKXHxjyyIMsfM#=ryRy8KXj`1xN2 zWQ|M3RRqur7goOBn8|+s6K$ZN8mA`mbuMAq5;m(N4CX zp?J2cbTGaeAc^YsezmOp>-71Hev^b78eHAz;i^jH{0()w-r6fld;*>WDn?|nZb~Cf z?d9){+8YyXsyNMsTc~k#4&H_3_*Gr7O>=uH?*>?jPji_V-G}wp19#ai2x>pSe_K)c zxA>C0W##Z)Kl6XnMEs+j+8v>uYBtCC$EfGK^4tIdTC;q zn}}xTdiILeWf~4oX?;S`4N236KGD6(mU#EMFf;eiAZoYv%NW=^RpHQs3{29q7@7>& zefyJV|0CG~G9G&Pi5E%z)i!7@1Si(w0YCOjtafEv#nC|Cr& z?Qg&11kzS)6Db`!NLe)3Ljo3)QRy(%_28ss!X|;Uh-T8ubWygAv{A6t z=W?9of&_Itxi>F-T6~&l5Vu-DL3q01RO8xc%$k%k!7m5SVpLkL6UexjglH-P;-N7vD`y4mlDOp?1zKJGu_8mfmeiZxU4JTFgr`>!;?q??lgC`8*%9jT*ANv<_ zK~o3bzv?Z~c1e-FvdXs}By~bg0E4M7eJu3=I3uE*Kx=9GtR zWnbko4mdA9X3Y&93IJ`ARYpjb>$glqrenYvy^j?DVVn3QdXQz7rCP+k2H~e8ijeq+Jam zOEK%>h_uWXVBO?(em5%jHSXw!=#Vz$tedXUrY$M(+UtMpb%Q<;&!@ zonZcrI6{UwZoL6gJ;z+BkvpxAvCs;uFvlbDE~1We?1xKJ=AexuakeWjVsZ+qTH zW&dd)j!8k)y*`{j#$HE)Af9i-aR5HheoB$*-p-!dPAAgSd~K2H=OjCjvnft11%#|l{jfzSaC9_5BywD4AnIO*#%c{PF z5ISS%S^lPCtWH&WMA!&2;**^kBpI2QESH)cTQ{Oac-;=P<-w^u=DeSN(M3}7DQJ{J z#zTo1mVhmXY!btxJ6>1I>zYM~ihb-a9-ldcbaV5<&vW;F)C!EmU7YFJF%OS`^(fO;g-B6shYX+}H$WX`qa2Es2t1Y#(R6Q!1j zeHh}Z_5GV1F>zrAu?5PMZc1Dar zX1PSJb-^!z(m9Ypo3suVJ^ssQ!9~K zbZ0!0ogla#y% zVngN?lFlWeyjru8`jw&}L}G_;+UROkHS<8 zP#(B7x-eC9CHw1gsv^d3*8q&`#b5G`uvOrjC_1rU>wgtY=Rt)MsQph4-V&fwSnuAz zRSy{uU~_&?NLEy~LuqgM6G~ET2(=;0%O^FV)E-p{wu%pF9XeG$9Y7_9z)szuYDGuy z#jzb0sr9a(IqeE#-k)h6J$z(IO7t@-3Oe3m65o}K&Z-!*JdYkhERaPg3G|!Dj+bri z{*?d}9Z+;RusvIjO4!f8;Y8;4(PVa7p|Giw(TnM0*_i}%s+*r&04^jlrZzpu!Gqf} zuq6$p0zjVwBn<8?35Rsym76$;J4eyx{LrOCh-Z>oLn3gJi5y+G>Nox3ojr%|T4a5~ zRIj29b5gA@kv+p#9aLq~fjoAwA2Ql?*>ON>t3N3tyG4bB3&I>pke#A3c1EG=vKec+ zzvz|nzYb3cT(quNoyV#%K2CKo%_BP@Y11wLoBIhQ>}|^O*x>+ZF7?@6{CVe7x~K+^0=Ug@LH6=88z^sW?uwam zi#zLp4%5L^x;iOB5)O+{+ZjO-?u3u|n_HT-iv7 ze!Fq#e+IhW<)nE)(RkR6K@bPc-$p9H-xPS4qQqV~+tA8L(b!OZBk5SPEjGLX$RV2Y zw%9I{gy4Q|Aqg%@vKKS(^Ni;}>xi1&=yhpRlIO;2puVC`69Y9#UX1-?Qp>%Zb$T3K(-NoF*Xh=yOeM3e4O!t|dx@O#4E{u0qOwubgbtf8w zP`oiHLB7Rkwm}Q^V07tEZJWD=_*r6^3Fs~@!T3^IxmcSw16pLdD`>?;%efq#C)08t zTj%)X@;oah&finrzPwVM?tRf`GmLFcRbz+^2F`eA&Rzm~6@zD=qk&;&TfElJ5&GKv zOrl4P0cpi)Os`NG?61mKj`x^n+sqwN4D>=NxL@?+6?%Ulw%1>r+k%53u=Pkp+aJV$ zu8O|Wxv*~1*6m-iQ32`i^1baBmVnj2Pla{p1RH;Fy~fV_71_+(XgW5UnLMtn;`$Vh zu;}BIkbLhy5NgLq;o&S)WjY|y;()#b6F_;n*p3&VdnWakCkmLcZVeQlyr5zHCfkeT z5uwFaXWd%@qrT6F%(uKRPyMdEECMe@LUIOjXewT3JPg9DL7u5M+cIL-xNoN;_9=guZ)Jg!oO*3 zCE6dY0SwB-jo_+D$9vWl^KR!=nRea7vtEWbf1TblP$o@M63z#-IddHy1wDQeKzdO) z>-d(D{Cz--i`q+$P{)paxI#$j7j#{pntNgx=Jw(ucxCJ(+o$wL4}Uq~XD@tsP9+$Ox{4lm0TW zl6eQ%uXNko(|;ko5R3`k#AJIMSLwyqnk7UikfZR`=b0$gm_eQv&t3?0PKArATHLSS zJ$0tX`V~C6Z?EZb9t2vYKA`c^9!j~<$6`d3v4RG6+V&YMg?`-Su^?sUdNEP0FJ&S6 zE9N(mu%CFFgRchx7fla~4q=_05z?kyIjGNfE8oPvw2+ufK^YnREqF4TyX^AdK>!=w zi7HzF93x)%=+V+^@0Vd3u)VIQdG9d*cbMi;T7B=@P2~`6-<$RN=lqjXN#A3k5| zS6@r&E7UUN@AhIeiEzy_LwX#CvD|@ zXi!huM6J~;t{3?yCp+n$=i!_`Ule#zb1s8jG@<|VU4WLw&Y${IE#xZJ<;Yzzf zvxtvSG+w!mK>AU#T0jiG7M=ZL)8mSs^vu$DfGTJD^6DvTG9p8AJED^8G61msNPsRv zQFkh>ohgpV-oLLMrxG!E_%dA_SEbax`1%J?6@x*1J|qOI$j0PHSRgu9ijRjX=QSVa zhAT&lE_w8Z&jTe$bKjkgr3x1Cmaz$#Q)#lpmvx)KQXw*q=$SbA*s`hSYo7t`dGGHF zu8w44A$5O*K*LG)A68B&uO011P48EopOWfIE>Wyn{VtieF245h!4;Fx=>g(7w4b1>^|Y&OHsy`uxX{#v zxnkw9#!3(xJ+gXxR~u^xi?d!kG7N2VeuN%kD${Z3`iy9x07Az&iJ^_DDx+bx=Z{Ge zjcvS<^GP>SdvrKbt|Mx@EC1=inDB;O_O3U>u@G_If&p?$vL^xawz%j)zwJ_k>ntK> zzuu3J!MG+Y&)F`s!V18r4xN-sp|~=<>G7OQFjH<1RM6Q&R)~-AXGZ#!_W_T`cv;8? za*anm>E#L5$d`y-_L9-0wSEo9VKtPy@qWcz&0POOteWIUxbcO7zglDJYzbrhQyDf> z*QXaS6V zZltQ@qka2R-3ud*W4$t6q4vWkb*sd|v6?d+BoI6p)~8Q#@P0U?G2GWPxW0WJ0Vb%v z=KOM7&>qD^^D4c|AHe5Ok;uE=4jrpvuk+{|40 zV~ADcv^D?c^kb_^H_zf$Ns6UBD#vZHZC835*jCWIh==#Ool?)5(P7z%OPN9|i#GpG zIc>DJnb;=#dOGwm(J8==W~?ZM-FcjLX4iKFtU7drdQtk{4zY$(JCCYAre+XiUvn*{ zBDt8hyp37<+b9D$ooaxh^t7iVzjC+EP0dHOC+aqs%Jco38eLDGe0sH)wQz2!-&ZFZ zr(&YA=5vMX;5icVJ{s+7XtCrwGL5TiRE}pe5m60_kCScAriN`rPv&JuVIPnD8_s&t z1)YNfOifoVBaW9$CkLnS;~FSr%1jz)as2E4=qyQ>y%v*p@!=5@*BSav%{-7j+teow zX)sC6lAg%!IH7pg9;#MDDqFyB2qPjw0RjOJ5AV?jk6GP_KbqkuF(5KK38|?Q^YS@w z{tfq|Il)!@Zp5zbOSG4ZexaU2>J(i@14$89nJ?4vPYE>q#;Ley#_FN806qXbQ?ow% zNr9}tXILt-SgTO7@X&}Ss?8neD5{E%Wy<|r>Mdh9K#Cky(iKmTB+suz{whju zi0aHe*6QOge^&+6%X%6?DrTt8O~v(AUR~py9==pwKuPtS3YWT2kx*vP$-t5KA;F_#Cx> z3FXQ7#GT92hR=Ycnsk>t{aC}?2wSdu3@7`!Cx*4rSA4!4vZ+)UH0>!Wdq2@EH?uM9 zCo1jUCmDky!$nhFE#v-BtMX|MGMevj`!@X>eWp+27v zHm4N5^%HpM{GOqbJ0+PKfQrjNQlG}__pLUok@wR85i{(+#MO_U_9K!VXx*)~9bkgX zUI&+=ovqnqMAZ5E1Rq#z2Q!?fH)l1QrK`ABngT-U3!rVD^@uePf1G~zQfavH*!oD} zZS6B)lWtZ?gJZWjBY(h6j5w_PV}2c(D8#eQTwI8>rd^uVJw3XkVQ%CiFN`A8PJ&&O zI9r0$%7ry=2tf{HqLJPn%B^+}J;zt@xrhoN`~vOS$GqKV8NW}s>N?}kUQ{4H6n&W4 zk9J&E2EvaBfd)*O^d^vFWmiA&;j&ozZI)!xfv61NIvmT+*QHHcM-MnRlQWOKpX4o7 zXhXN9wa3q+I9fv0I`Ay=u)0+)2{d3C@6PybVO#S$i=OVMG#ry_4N=n`wdTDp@7Q&| z);Y!1Aum{L;+w_-Tl2@ZNYMi$U*W=h|-e|=JJh1A&K~my}uV8?u+;b ztOj(fWO;qd+F}-x)xqzX4u{FAJ|uKdn5ca48^=4amUxpCW8(aESy-bS$#d5dBC%x$tb&VB(nka2pm_Puuc& znc4LI(s6W&FD8gf5w;rD|WyFP!}1E2t`1?F{A`{qctUL>~}}9Y6&J7Fq?dO zSjT-)F8CKF()MWd$43XUF3{5yHG7jr4-EWFIj&s}d#UouY^e{}qrs|<{7UVmArD?N zO?^GvJv*$_smZBjHTN zR}at8v2&WPsQ=O4R|iGey?-Mm5(3iQ-60(cNQi<+OSg2cbV)5p2q+~XQWCO+(k!)r zG=hLgx45tfNZ0Qy&v)j1e>2ZN@60>%n|bHG|9D1b_PNjA*L}`)ed0Q2$3@aB``o!~ zM(D$81H`ehZ6J&>(;lzu^EuSS;-(Nzl9(6{9jRb#oE$U=s0o6l`0#diY{4mn6f8w( zO_Y+DXqg|!T~Y^B0S18X2|9}b?)y;aIeOA~?qNS``BqBHbkr34b(A^er+3yz(t%?~ zq{7w+s&h_(KxxnFAUjs)Knu3=P|))Guej+yH`E{R4JjjX&u7lAs?Nmc6rT-E|FCsy ztQH1y;GlxjYI zJ$d76>Fjv3XBzR61bz9LWSU!fM9_HzDGE zu7emAf_X{^NJEUl3V+Zku`dmLl`1!@F+s1_PJN&5SUa5-J0okTuiBK#VZH!PAU*q? zu0Rh9MivV_egJMRel+T|wW|}!!N`?wWR{z7EXg;rn&0*DZBWY=MkNxW)TggRZ~`)h zlE-91*YsZ+jMBsbU9ox*fYY!uaNT{%dO*$kD^+1D?y#>n8^On1fw#VWwI`JTgwtyW1-?O^Z%R=V@LPbTZ1WKZl7;l=&|bmV#rHLuB}Bck$RcI(OQ z7|0Pj9w7_+=@r`%1~DVMds2!EaRwOeCuy3Ro; zIsg8nR@jXpKB`@rTwBb*-F=c!%7SxO>IvCE1~rw{GEgxS0eo%RNr5INoP>^8)ddp| zE)eI>8&nGu#N1u0i;Id))Ly^rqw}|)lvqx6O?s;7=KT@n?eeAU>8Nyj3LHeC_fUyN}60=jL9Oc>?H?EA3Xp2`xc|Q66;CS(v)(bBs|xh(Mf4-`9#Wt zGf@jrxzpZYsjR9rLUcN53jG}I?b-MJqfvNJtHKeHKI{U|cYnjYHUto<#x-}KM;^1VojMj;! zo=%iJhm%ZhDXI-D4FHhpCsUF(`)jT{(C@H(`$yscn*i^hNwbM+!B4xElc-o@m|`KP zwf4>}PX{?IKAMiqGd%G3m?mp{8OKP-k(^WtFG8x~+-H<&C}dmPyXBfiHvr zax}W2vLWZsTi=!_e*(o(emC~vp$?kRjedVDCt<_qsd0KGU??=<>F?5Gpl}`{1W;d_ z?3Cs6ef-ddJemVa)y-&+CGNv`g~eYdX{ik+B`b_Z`1w)7CN0-77S{=H!2R~^Tg&nC zt9T~Gc_epZTJz4$E$x|mTN?3u^;QQt#8#WWCj%hyDWD)^?z6@TE%zzKBV(EYcRHHILi0r^LLwNI`*B*fdLTMqYOF{xV>moFikg@SKep@T64CYqa86VOOyc z+Pk>=jPfJeQw^Y3S7CS6W3KEF8T=_z4RJ8ZPl7C!-98x| z?=X=Ye6P3HxFli_-y`?HSmHIg>px7N|~Ok6j-;i2{aav=Qb?JTsQM=0e)VMtP}g}t zd5^Xzh^2+c!z37n-dt!NqERdgjNP@dTxuqxD0cJi2Orz{@}JQ_Y8!ladau7I|Mzh% z4Vi&xTFy%`-wgMmnBpW$@|F&y3M=cTQr=70SebtLN6=s!ZFT+vhtn*UC!&bcDs-CI zVTc+JujjWMV{Hdku8N}`oEapj0?2_i5EAyj{uLlR2@(^DrS+pQYFS|i0A3T|c!4r< zyWhb?P{P(aO-R1!m`2r!SXB_g)o(3UdflgGa9dv-~U(Z3G0uTYysf)So zy&Vl)jTY#IG1n}Eg|a%f!H6-nzH9(3534rw)wWKIugny)xKx;X9X*>9LUfWL{!l#K z&v~!Rf=1kqEtW^(NSu2pBNy_O?77()?kDC2ITb&VSu9OYc(BMt=fi045r%f-)8V4K zO!F~emN2$hXdxY_?@fY?y}2Y&fgU)ke2Ek8EUKBD<|U_()0;Rl6$^RpYOZZO_raV~ zcsA7h>gaXZ4Wwx|WC`RPf2+gW^iylQvTmyhvgH?bJ<3^;RQqO`efXWmckz8^(j6Cy zZSfs0R{+GPZYpCPl*0j0WS0AfbwbHg7vpx1a4vAHn z$+Xby$oCcgo65aWQEL2fd8g$DkKhbV7`{Z5k{-L4%uH128UJLSL^a_rgZbhRE3UaC z?~BZx(ieWLbu@^6I*Uc?+_6nKv4$eY2SeSn#pfwloyVnnChRvO0~s{f2au!r5mTgI za$Ul?I1*U9>298eL3tSLm^>k_d_>ZE%%ZVY)W+-LrPH+z4#$dK=%PN-tgIvsk_pK4 z_jAu_nnwOsp)AF_irv>iaPm8DoR^zXG@Vb}z4Fc+^qaS>Ybex1<+UWQ1&)x=(zk<` z^4uW*N%Z!}$+}f`LMmF$qdm5%G}2@?QEgP)uYjbugh5ScA%=ex(1>`vfUTudk;EQUHQ;Y9fPfD!WvM|$QW$l(3x8w zqJ?ZG6wIQ6$UK{+Y`Ax`hq++Sz&pM`LY_7OKA1L^XLk?KQ}M-~o()xH*tlQ^Ko-bNVj z-as81XV$x)1ZwdPXIsIisyLN}@eTK6lEG8TJ0w@OHHTZrGUfl+cbs z0|&+43P{pa>DXI4T0&Rza2n!c1Gf2)znHFyro-Rw#r8OJ* zmHXwE#sDp`qwQoHaqSCY^~B!HNvu1cabrt{nL1B41uzCBcI=yVg&wF>rr}5Wv7rbL z5p@l1K?M0x)d3^jA4fZpdNjo^HqZH~f4*sUT`90j4r`OHmk-ryJnGm_s7_)!df+~)CbFZ-3du{Y~Ug}&* zTtB1~NGd+4MywwzCd-U-P*P*c@+$x#e)}=-bw%Oc{Nt8R8{bkQak7WKw>`pz&g6D& z*}F1X=dt87RzTv7H*3lRg7HPOv&gTsJ@ekvyf6|VKR>scZCzLjIx3rr_2M|%aQ8Uk ze<^oT{S1ymSFuMx+0N{jubVbx97c7a(eIUY{8umY-hMq-XL5&cRrY8(4=jp+1d9Pa zZ{L*cvOH!73ZP%3`4c*&@=JwjpG_9nY~KMx7C@0zO+f*U9|NR-8q%uurWq*2LVkBJ zYELvt3=k{#fDWn*bkKz6oxp3fz!OiGWpj`TV%(az7Q0N!5)@*Al^a(EwWE!<2noA= z?FUp$ee-H1qas6#^?XM;MF2*j#d=Oj^1m{Z7GMKwN6U)7huPLN@pA6ZO-P|>*U9Bw zsC2ka*^Twb!7YFzr8oi_pxaaf5LtvKB>Fh52PY0=g;#DDG1B+Kx@AJRX1ppm5Gf;|^lLz-G9+4^@TT)peVu zgdSMO4QVcHz2Aw1WXC?aC@JnDq-f?u2zPJOG%S)sbKDQ8dNe3)0@ zr-FyJBf7kdeG_8DZxMF#d)Khbj#;~^Q#{?D3asBd~ z=x|k*Wl2u;?V-`p@XObDFq<_gz=W-qM(t<4Y^;X6IlLDNiR5IRWq12%s}6fB$wX%T z9joDS54tk%Hi!VbFpz=IW=#m<`0;0_@hQ`+**?fU0)P@NSDfGtVhq0M>KHXCfv&m* zP`nZMoD7M-u(MEqjHpl~DIX{yAz6l0(3gAo36q^otQ5V_$Ga_@*>p&Pt|fH^&!o0? zDt`K=0pj2ZR9vC~3fmqmA|A$M+1wJgk z`6g1QzD`9k0J{swZOM{sUr)bX80H3P0V-$2ZqGua!nDL-|#@-B7oARZ%IjpBNrYEF`_ zg?!$BOtkOlgl?>i3gUX}Ou5Kzt-T%HY)6Y7Wev%T)~S6rRqgfZJw__kjJ}oiLIC+K zV*7*3Yw!Eq6?ot4JiQQqAjGvuhf?9<3e|n;+;`{?L*8Ix7x>?KmkG^*`BTX?{732C@NVIV zuBvAjGibTnI1WGZcnH*O(%qZFtOHgDCXqTH>ZX!c@qu^~G}bH#gH)*I-g`xZOd1V9 zh}O|7>_9$0@&^8UZeE2|$03=@>MdKZtJBY==Cep6<2X?G7i4fNBQ7TH&DI9CCcZf+ zWM3Q%q{rB=+wjqFB2B(ZLJ#P4al4n`J8+fp*lNHFUKRT5VwBaWob}|3ib9C|weh{X zbQD;flN~&K_U#uox_&f8e0%dXFGdJ(x{zsgP<1ryQ}e0ycOnt5q{aj8J*@!GN50Wp z?=iyE$!$)C&e~|4CCy8++&0?j!oSZPNqHy}dkz{hyD}~;$#CaQZ}&#|Qtjl=sFh38 z<}5-!6YlO;ze01@))MPdJ-KWc;I6G9Qa}CXJv%^zQSznSxe$- z!jDuS#^VApp6(wpJ_WKlXTVOi`3y$x9V1?3--nl|!Zixna+*JTL0mfhy#413Q}c}0 zhl)$e?|?MNf(M4c+RNi(JhtL5`QP3{vX^uxxdw*lOy?k=;EpkGCUVVC0GaqkG`+ZH9Oy-q;GF=?RAt6q5<`7UxpTACdvH$_%Hn}MFzFEcTO@u@mV8q zPKb%O)@#7puXAXxu6DTHF7MlpRHx~YZzXV8i?PfA`><~68veOMx*LNZ3B~X*%t0Cn zf98Qaq*^?VQbC>A61fY_J}%pyYy6{mlwFMcF_E39@c{_=gAHvg4>}{{2U1PYD(c5s z$~(h=qz#|$ix>_;gg%|TjyJ9sQtb;sJ5_xWVA`)r7P0P&u7pPuHn(Ep!ZnLt(6**v zIf!1B$)Ux!1;hb@W5%b<5l~2y(BMSOx&`J=w+BLUJF&sw<`cV`;9X#N{q!{IEbR;Pw=<+fB3Iyf6RHlfa z3OMRA6OD<-w(lJ5T~~mT4Fv7ss^FiA1GTkv`>17k@D-dH%6DxC;%Mp=PXd7&RE0YK zDyerd$JcNc0#JBU6_q0Kt#8zlvxz#NQm9b&{6gPB{Dk%)vW&xH>{HAeCE|F%*S;*>dYKj73cmFYPe>=t5Ult%kbAqlL zpa?2kG7d^y?V^c)T_Gk5>(xiIA+*)|=G2Z2-Lzo7GP(P+C8zL*R+Gz>si`P1a=KD- zN}z;9*8RZ;jygrpn_NuBhFjKn;^RIsv;36Q%Sl;;6gsD7MT#Bic$k4E&UWr6J!qkA z8Z27qagoZU+#|XlVO-A)5aLUzb~k?sJ8`sS$2}f@5h{-~S+Uw*+DG>YpdD%5XW+f^ zM2Amovc)S&E`!Dg`7;(6nHd>aQ)u)@UK&4rY;~RQO?XLImnFxA{r=SL4bp$l5XITw z16lp^nFmg)f!U0s0Pz2hw|TWEV6QAE7ggT~kY^2-a+rY*lNV=%FS|VJM-ax+V@MUl zZu$LJ?vU*PX9c5hv@qURhn|dO6Z|wCE%`$Y&2AbXx0q+QMqC1`R$}t%1`_a);xkZ7 z=-v$qNK)GW1pNl&#djHNL_wdOk#FJwk-m`sE#E6`bG5y9VmmtOk2@>8g@9OaUHd1| zch8E%H9l|lCQ?1BP`+#l531iM7l;vB>76S9+o}J}+IoAdl;czU!%rgaA?KiiSV-mh zrysQ%pw>q`iTNW&J2UF923EvD$n!wR3pL7}{;^;Os8%1j+zD1R>urOdWEOr`WU6BP z7k}&73X81BKOJUJ#Tfb4n}zHF44bg-yspbb9E^%I*nP&KDJZn?E&Arh)j=#l67Lm8 z>MB*j9QQW+BR*ew;4~-pp1;V`>s>3&oS_CofE+3*qrdWvQZgXpS!Jdb$c_Z_VSzz> zhuJLVT&J2qlUACg0SyDdJ^YPMVDun?sf@ucU{(X=_PKc@bV`JS0d2)V=!v4kYmadj zvhN#MajgsnBkI?cYt=+p2mH}wwHLGrCHtgvjV>R^mhXDP-r?a3YkXz_8m(~zoo=~a z2y8_|MwGX{%jJ|?suW-{0=1Sz?66vEY}Do)b(9;zMP?8U$fN-vgW6_L>c@$0Gw)dDs$oD5dka^_w>iSNMae2v^3ki0|jF0|*I30Tp&- zeSXT}w%>(MtBo3_bl3~1IVa8X(BhMP9Zg_jz2dI#x;$=aY{uPYn>UWjj+CUy+3Fz5 zDr17|n6)$Hc=+9OqC`OP*0ye#v0p@;-2e?1K#tHBg+f<-!1@C5i)VdXEfaqVIA#Y$ zCLQyV+~J1}jG#3Z_m082wtu<{fui2?@h53*pKz6KmBZg~0yQz$h2fOY`&&HmqK`$K zUyOXdh=Z<5T;H&Aa9zl9c9ecu%O=#*y_itHIc5s?x%}NLs4Y22d!!l` z=`m#lZva2|Ciy)(d5b(-x~m-mdRn@<3n_*lsEDGI3$(CJ4o8qkf1`U^9LHh1m!^)- zVS;;BS5^c+t=Hx7dGxlLib@a&6^Ippb^luj&Ui4B+h3TJVk=SD^twDAp2kry6ch^3 zk_Dtfkupf9izosl&j;=eesX5@JA_sH9wPM$Tn=z>pXUVoB*yc4(zY@v>`Y{+0WqA}iG*27MRpm*-O zqLGwZXA%!o5JJ}x+WqexCRq|2L07zp>~`)slG?-8P4cHID(8UI12w9X+km0`;wFX^ zL2i$H%X(Jb3ZrpStsA{jc!q0?Gw2^kegs@g@WGys^Eg0ovE(|7F0;`xox{!61HD?u zlR?kVg;kRu(va!>gRsB@@z!?pQQNskXOR7{_=_n!z0)gG-U~X=qIKRAt`BM3TRsF$ z5PZBOhJC{E3vR5eUPO-w$_KE&THqi3d6s<=LJ3~KM@Z0keXPWe()-CE(3|xVAEEDM zMl}U#O=MwBX6H)|um)l9RHtzuaCIrpSGe;exGigxh)Zd5vtgQ0{ z0;_aoxA8iFgzhlzKwTLj=1VOlVc&Hh;4}Xm@V-FKAWi1){9gur$yoI!aAuV+pMutl z6;~+`(*zKuCNCnqPd7o3;PKDqM3BUh-&Oi^o?(YgoHF3`BRxe)NgMeE@z zrF^x>k`Jt#A_Zzz!qU%Kcrf+-QYsC?xYg#e9bkH>h#JM*W@t%#y+RYc%U?wUZS#56 zynKeuOsak|KxE3o93lEp<~KNSHqE%j4Y)F=YJ!H3N9Y=zi1?EALa#qw+Vzy68+Y|wfhb|L_Q277)yk+`NiTuFEu?)$GEo}W!TG-!KY+f? zasz(zu(Gkm#>cN_I^=#U%iBvL>^k1&T!t})9EXG5b>KB{>wLh*!X;eXnyv-Cr2Hsw z6vxWpj60VFJm?L#&P#BDsK?%_2FxaQm715tYeM1l7h4*?ac49U-H$3OtXEV*_FxYi z`u`k;m{B}#bP{U)dne*1vHb!(*k!&YGb{`v;0U!1;qO~E550ik5;G1~nl=Au4U}B# zf4hKKLn%1$^76pQ#ALDRZs2FwI2i+ev8)efu0Y89I0Z*cDR`bn zf}>#kvQ^nPMoIA+ovf^^+GK+l!G`z9n3%u}brr8BrqJ``!|fR{yMA)86MYRr-^Xb> zwbmI$Ku9YN4Y@e=XHY{!kJse}U!3&8#_^*W*c8k{8yq|>|A?Jcdiw9?_~y5Qn_>>b ztLyLF4`mW<#lZ18E8o{fab%+*NyMD&DcksEsHfBJV5 zG?$ma&_X@Iw=ba8qB+Owurz!4KaK0A_uEsyjHK^Yslfr%#WtrJKiR_SPa zaJ#wCtBb9Lwmccg@AE_C<;7WG_QRSczNyfL^VZ59_N&$EUPi3<;OyA8vkMTQ&d$yj zDEst1Fa;W~F3+an!Lm{K6dxeS$wyh@eb;vtT;WCMfRwIH(Mt3`SeI}84<(haOdO%T z;|a*8^}FLi>Df4SY(Pbe28m5wtAKbLe8uqpmbj)90@K{{TpwKEGWZ2|sN=oMxu$Jir+E~GqY&z7t1?;gpVO{RwCE&`e?(m=5*zenRq(sHh)@TP$X9gWBV|) ztr-gS(*h}-olcb1eI=Re1GkSosn9`S>;nh<@!x%F4FY3%hZq?g4J()7pDRqEuip#z z&xY{nW6}>-KI<5M!-t}Jl5ks|_NjOUvn0e-?MoQ>p^!OZSg(D)Zx&WZ>aJgCvq1S~ zm`dZIS@sDZbFQn!kX<@0hp{DV=LDrrf?H=B#Xt&1%ix$BivGd|l zqy-MO0V6seR&=Wv7D_dHx(Uuv{G4ox$tS^z&Z7HjDGL}!voymp7!Fd9p78H^G!u;q z1(iWRN>{Q!=Q}l>n}NvkT}L*JK5>L@U@$`Pgl*q@cQHLab0+ynHtl#rd7$(i&DGe= zL3!io=7pR-<%CzMl5Pq~bwSBRl>+U zd-4Yy?fqx3DE&~=@X6`p(e0Lt6%%pdvd33cH$9f;gpRGBXexMLuGc(v6KxAph@8x$ z%V3H6ICe>6PXFZXJ&Z^FK7lb;(eYM;@x;IA4n*DjJp1*XAD+SG9Z4e5L$BTo(VDp^ zwXZ}9KCWlKUfC%u;OJq>AA|^trf##{V9eKe=hM}{6i0a;{j>1@KbrWTgGlTfnyt(B zSi?o{0yo#|!#)=Z6BbC5U}IbC9`x^EjW-crV>pdeJ!TyBroVUB#&*nfV}-{^*u$~ci%n69e0c~#^Hw&)>?DU_0G3E&-2c_x}~qp zyZ6{$2!eQZu3s^PAddYI#O}wv8~kPE^eznej}viO$Cw-Z1aLdN1fK=GubO!qc{+I` z?YtZzXAe(zM;U~@m!qQx;=ZRhg`-{_f{sHvS1uX*CC!f@naqB;c&((E*m2>5 z{?jL~Ub^+*<>5>3PwiFea6D|aJ!5Kh^;@yjN#WD%ImLzC?Cejt-|jwrq7-@@{%qMn zzPWUBP5Yqo@ogrCsd-0-4B=N!wnU|NBUkoLSzxURi-ZbmRKvw&B%hg9X zBo^5>VNi{o={SqQ9^>wwo~XXQKI5DmVMPeiRK0U1x~H!%)3m^PW+caSC`7K-dtfpv zMMbrF!ra&UoqGnZcPh04omE@@6yc%bJO8sFOaw-a+r@L#Bq1@e8w~YXj~#+?()03U z+S=O8tGrzte|Ef8U0&?XAFrb@xnZ-ild(W6%Ut3}yxm(TLHUro1(GP;T z%%jE9=Z54+`wYWrE49G_!|0%=vQcZxcQm~V|OY`4vV!!*5rq1hnpl==k+ zmoSk!vDz~QK}mLgR+fAsH5a&eU0a@)Y)&SiYKJ!eC_4)`QGe|Jt?>Xi1WoVNw=OtO z5v?ih=wJP4j2M6U{dK-4exP94ozQJeowYT~^SiF%EBZ22yP%$NUU(e?nS2n4abMMt zqNqP4>`P?e)G8kGCfS=fBu2BL@a>*$)}BMBwa9AmF1*PPJuD6U^PrsHV<&VGKMTbd z7UV1~glAlv^t;aJf$#0am zawZ{_l%AOP{qbNgoiXT6eN(`&R7dx07H=1>ZoB5sz{La~R9?Ndf@-s=8C9}TwH#R& z+HMq`6wDHNQxP`*KIou-m)kDCLvy`lQy<0(UIn)#Zeje}h{EsyoohXZ2gwGE6)CML zMckLI-Mjok6W$CtuN7%^1x@M?*xzOPrvC2jqB$cgFhF)C!Ne01^^8rJ$1_$+!@l5^%@q50txsG?Ug+ zIKNhgr!KB&XHmLb=uN2v0-?PQMyOZ|%^Q^QZ+F`@ja>oZvgH#aDpR@gQOx|v0iBOB zdIH|#YbC$8n3U8@Ma5%2?gDp+F*9w+6@}L|q1+o8LB1PXa@1}uWxYU)uAd!Ij|CTE zv>5Ky4;0rGU^DL|ySJQ(HYJ#HqI3W2Ih(ew=Lq=%7tOvQSEA5rXtILG?<`sdQBMc& zs!q|UFQ~devrc)lOGXF3{CuH0<9>wkhSQ|w3+Kg}?>+m7Qq@6Qmh{^T!$RAUn{+y6)neXn;`2B5-#3AYz#HTT_D4pBq)Osm+ zGH-jRGC5`4g3bR=HnzgOWtJX^k801jBq9y+>jSS@bVX$c)tzSE&(3se`1GLqk!rz9 zE2}td=EFb{HyzjAp>2Kk)=bl-V?m?Jy$K{zxma5~rb#%yC&75bBT28x`!|f`l=p*S zd7d?bbyOHXPdg0GVX$SrQ8)Ked23_9vpBEp^Fayh9djOMqDf+6tPJ|2u_5i6>WdMtyqDNJ^fi2dijtAG2rE3)nU~UcTc~i--}d>$7S|+B&F&*U$t3{ERzyi zJ+kSswBsA|%%y%f+3p+cKmnZpp0BQ+llM3^;|j2_;aoS4^eXdd@mzQXDUkAKG?!;e zWG4k<>YJPMe(<-0gxr8aQxFYqPN{UGChAh~^UA}9?z6LJbY_bg>YEOC-3_g_E@#%% z%#XtJ@_NOd%6l2t8;h71wvdyT1Kd99g%p3tPFS|mNOT|6h$bJ&G&GGZEq%Y>Q(oC( zHQ9oFfcSwf(X;AOLV8J5)Ggd8a9{i|;?*EgFu90M#g9K$b)Y0`zmF)FPJye2*pw~h zuUSayxlt^nZ1v1y+3nn|@>f=jBZqr$r9L&SXeEYR~%<{5HOKNcC&XsUJag<=Rvne{u|S{p;@R(z1+%gq|Mb zh;o6-?aWs$vt0!%e+?5Ef}hz(t_z$%tPGFB?%(QWj_|x2j6o6MR2$je1hLQx>-g_O z`Iug!OrD9?O3i4p;-UsfqPBNFhIldM)Kk0LD`7Z2n~06NGV`sjuXmX=xhXtZBgL7r z=_Wz2N*cfo#|JyrZNxHiMh}0KZElSvWqRCVI(+UKM)o4T2F>}UtEmPn@fJq6PszeAoze*Ht00jS+5b5 zmDOh8R&OWJS+7`h+rxKof9@uC?y=^2^nY=?*_|K5rrE#9Rk8_`1c z@D|WL`+BYCN(zE}q_Ac8O?35SleQCbbZhk0YC4Hl=W-03D!dts0oo>S7E5UBOUT?J z9jNM6!fjE!T)w)vYOh){4X3VhRE=4_)s)))^+gTJAePOY zC$%hJ|MVhtAhV zQYg22s$hp9s8IhPAPkyz>;Q&J-P8nd^7$TscGAwV0hs)U#Bm71eo^rjeF;O5^Rr># zlWdw6+xe+Va$m=v0PPJLW*hhYEN4v%?LG8QN8$u)xD|&5v;6nX*f0OZt&wvU4VmN_ zW=Fx<0qi%*Gr@~I_T9hV>Y1oCl%`6(=F)G!=g@!e_y3He|4RGq&7+%Oi5Fq>=LCts z8-+NkJQZ%U4cDli$}ZM^>|vk@K~{rLzLNrGw>GI?@jQra4QqX^$WsRjl|cST!&{V= zifdaxv=Iq(!6*rLYQ&}%YHzH4ltD{R_W?U}h|74mwsjsIj(ufBc1*Y1_M-1WJJdd| z#f$J%!P$zAiD1^pYBonG?N~OB;%`SRCyVj2XVGHN^zE1n6{Jrg6v8%v(6(D^ll0f2 z)gRNJ16xFRz*;-?4bc1cJPyRTCYwgK4Ld@k=kT&KDHXW^UkgNzH3pMEq=&WCplD#_P*rVAxvPHN*4yEYudVy$ zh-YJk>x2EU2f1JRCMdd@hy*To-b}i9K2k#OhLMqxK5QzgxQQL>;o0{t0~Ij%WZ#Tw zDn5(|w+uaYYxR1^Df2Hq`cJv|+q(@kl2`gH<#gl`q}B)33+1S(Xw$wygi0wFguj{C zA6FTYSh5gz$r1PE*gcIbL~gVAO&>Rx?;dW!!oKUV%t+HS!ZYWfv=8UCHk?}bOWxFq zm$q}wvJZnvWTp7KI<+Uo$16CKLTt9~jWQW)vG5}hW{LX!ykff6x*#+p+=+2ii) z+#G@w?+onBx`C|e&DOV@9U6(=PHG>M&j$tQ^nV0L-yU9F%N7wfDNW#G8P(Gi!W344 z@*~Qe*Ad5_`veq^8$R@BN2v>QB825#y3}7hz=B+6yMUiYk!Ck-T9xxr(mK@Srxk75 zzN2ZAudsIx><1I%qwZVOZ3Js~ndFfKDMKo$gNTV@ZT7wU!Nsg<#+z7LbdIRLo24QX z)A3WNVlC4V$N7iYaR{sLLz_^bek1DL)U{N!QL)7btO_T_!Vh-vfucEmp+XNME@{KK zWnqy6bE$8mWpI>Bqs7vaSzdmcvAUcaK&s$>pPeDoL@9C6N3Z<^lbSpQuhCcKsz@hj zz~5xZxWl{%p|sF7cdOOw4Xz(SVujK+bBrTGa3eCY25|`lO8wP=2}t-jYdPodX;K2l zlE>MqQ~=%p_4z+c_xG!6nwFEaSp+UA5SbEJS2%wgtIryySIMojOUQTencDBI;Vp7% ziWFKX?GQINWLwtia=%5AP^(O+>k4=OzOO}&Pta!dx~3${Qq^sq584lqiHXe$N1WzA zJg!{+G@|gyGjPD3Et$1p3&jt0bi>q`qiX8zmy|3Ef@D?g)__Cj%okzxPl9>B980i3 z^z2%j8aqmMjvU+e`UV33D|XZox6At^*uy`%ehw$t%ht&8*PT-q4a#;SQUOD~@F7I@m2m;~;>&5PDjPV*w=4UxOPd1EJj(2;u zS-w~SsUuCy$B`e%OPh7S+hr6SO|-Gc(pcpm`X;9pqc86?4^XGwZZ?pkxaWRC#5W`)H+vjpAP)13Q$)F{?&)y0Pn)w z#+Ba5fo<1Lcr6bpod$;B0g$hQV|aafImv6P(ZxN7be1xBCUq29!g^E+JUTKAC$zVd z3*zEHT4LFYTDe^z#d?%g^dZ}YK}_R`0hja>1E};9u$6{95P{R*gDR1^`a*K*fp;Pi<0-1iowaMCu-+hX}@?7h_51oQ;1E^ zH+I|TX!tR2lpMh(qOmgN@7-Kz8N_&HzQ>o0DwdoFWVXd7&+22GpRrIk$m zV5_8ltx!pQ>G2s1U>3eh6+szYmd9jhJ*p*{!Fi9t1YSML|L zoBwAh5bOutm^gD&)5X>84E<-mAnEBu)8sgafwDtcQzJuRXMh2+r2ip8nEuSkd8^9W zM-gV1s)zWZo(LQy7vXwFhdJsqV0)i<_t6&-0r)3_fm3YoBoKT)W~m#4N$5%0_>m4V z5v

#Bs=0xIZWVni@2>kBu$2{46CgVaKWdgft}&?r(6VlX~S5iLT@EQN~&&bc9|m_%}W_bNVXZA5ydOp%`Ys+-!LI{e0yL9man{g6F> zU`!7Vv%fuX3M$p5GdDP_zEtD~N>>Bn4t*A)-#4w zsYO=GH!aH&bQdw|n<f_2?6`8&rCMe=+I$k7e40P-()+N+UKL+TYM2f%V^WSdsES6`k1c|oHJPGoi;im&+8vF-g! z&x+Pj8nD8Td!J{~raW5Vqh3b-4#w{|!Om`5X{9WXz#k?WN$M-#B854Z5CkfwVk_X0 z-${MN+UY#ij$N-y%kR)AT%m1`(4H2n7a`%kH#`OuK>H|W_L09|437(|^iP0b;8NCa z7dEJi5M#M=op(bFeci)T$0~GgrCUAEy?1zPeV?i26J=WfH;vCkcSqj5S?otox62?1 zMoQ}#PIpver`fk`FTq$*gL&9Ec{52xPN#V0C4)|_E^paHPW#7}>@qVQAj}A{zYAV^ zx@)RxtaFCGl$zSAP#_I*SpDZ;0W0u{;{GFzx+(k8=1Nk#VSNso7rEH|3+bV4m9%Vg zM_f@mn&3M}CS=V=iUv4r=4yN}5J9Zkmzz@9&-b z8mN30y$_NK6~EcRu{|G?MGfY%xxut9gE2o?l`zuO!8SmwV(%ZPp}uU0VZ>$`S{gN* zrw+r0UJDolMDJLs&E0Vb%yDTkSzeOK*wi-6lOS$1C=Gbd`#a)#PO-9q#n4^5_thv; z^i@<7j*;Ldl3=nb1ts6m)Z{-8@Q(WS5LZ`ESIorf=mqV?%0~mIR=5$z5~!Uv#K@-@ zUuO@@aCBl-2-!)l-L5`9T!1HLaxggS+hM84DObP{=RmE}w(+we$#}F^mkUQ1)O+3q zL;Pt(R&x4^wMMy;-X%S3=Ai!=K$1sKBU(g4_~KNYAMtIr!Q(3*x~vY~^J`bXM>ZZ# z6Pmun$?1*IwH&0*04_!=IqDqD%S9%q{+W6Vt(xrA1U|@R)xnAMU*!VoX{I867!P$! zI~=z9Zc_pE{Y!CEdU9r)TdN&e{|BBH>#(L5JXMqKt4C2`MzO;~i2faIRw!c6Fmr48 z!MRe;b`975<-7tJ^m~!4{PKuXYr_|jN#!>Bu!s14(^j#Tsd4dZTl1cD>K%Uax5`jQ z+;ujEBht-dVDu1#UR&ja8cu$6?S&Y$HSc+~j0 za(NvtUx>3j{W;<92SwN2`5wVyCbR*qi`b9S-Mrpe)klM8vm+W0nmEn1z=i55*(m$ij8=1vD6boT@pq##;&$A zCa#gXH$OG5R5@Yn5n&gZqc>BE&e?18wq`ViUnv%bpd)zJS%3vu5v&Md$rKwADy(?! zs8FrjfccW38R zybP{az0=cPCYT3PqTDnpOjk$mT_Gtek%N_Qwhw{l>#IFoEe4as*ct}^R+y<4ET>_W zd+U^XF;O862@O^6fHTM5X>Sg7mrxr8CCG1LNs>COcd4T;=224?`s7gZSY>CB2tOTC zT(%8Kv_K4h<7c6b;?2xPYC3N5xX6!DAS3&v63;pd*BP;d6hck0RBG+=XCW%S-uV#= zqUIq!_D(Kqs3+hhYi@ynw+f5=@RkR-2JQJ-k(PA1HbUm94RVsfLXx%5DAzA$O;B(r z?0)qMqBqcpR$`gb@{+B#tH9KKz&;OA=d)m68SsS%09+-m2MT9SaaHLEY2IdMuL@_b z)kk^(R3tE1U@EKTRIzWNKWF}p85hWhUh4pIYpHsM?+Se$c5O|HSc@@adB$>nPP1p& z@KrUaG!l!I9sg3Df`5*LuMv_{^j@q1PS*Db0FLg8(azxLB?g5QH@y|C2FS$x(|hsY`3n+?Bhy{hWTyKKjNim$ zPoFV$0=E#i=B`l%ih0!q;7JV!JV!pvADAWq`m&=@fE+?gR847f0i_cJTMXPJczbn` zyz@GlhRyuyHGzBs%?H%5Va3n(V8M`HvyUwu8{Y=fzAis!r99daVzHTnK#)O~_WCku z2wIz)D5(2u;qEkmsiaXSv5TLRKU71=`S zUEH7_!`d1pp+RNsdiTg;ZMISDPF|o~kvU!kX_#p`y8(1b96m2j9-%)tmSAB7%1|(J z^f=3a*Z3EWR{b=U|4k^u7Cy`77-g(hWOaq=U*I%*8$_u}^7<81IZ?XpHJKuq1>UU} zpr#7u^lAXpz~Iv*VNHIC<0jqTj@l%}#KaUgL1sBG_@|>O0S||^rtq6A4)DIROeR*( z?}Uu|s0`%3pC@~V zDONsfcD!ra*k89=7QmpT5`Grh<3*l(*yE$-5QQ)?QSI_*l#xw7tO zdk#^7OgPzNWFUk7qv|nWfMM0^j3ocwMi&qFvuGipCU|kaOJ?b9cOQPH z8p^BREwL+23S`B|5l{#Nre=fQTj

>hci4C0f8(2_V-Q>d7YlzPt*bSlwFBlq`AJ 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 diff --git a/docs/assets/marker/marker_EG1.png b/docs/assets/marker/marker_EG1.png new file mode 100644 index 0000000000000000000000000000000000000000..05b8203fa6bea047f46bdfc0655561c1712f66c0 GIT binary patch literal 30831 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 Yp|X_l@I*`z6hO4p_0N^6UcUXm02RT^oB#j- literal 0 HcmV?d00001 diff --git a/docs/assets/marker/marker_EG2.png b/docs/assets/marker/marker_EG2.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9ac2f672e7240de0785b79428336a8862ba282 GIT binary patch literal 25839 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ℑD`tPC4-0tfO zVlSKK6ZN5gS-wppG(k?x zf3)r6CN_Ony5Qw0u?9+v|3&a{cF;#KizmCMClTC-c{gpdeS;dyAHp-!^N3Wa8!S?4SlPFXT`K3m-6q3n+T3(u9}A z{sUGny?OeXBl~XI>M3tn|Ya9A?(2H#?q_+7)fgzF6(sg`~Io~X*U$e7t>h_>( zH0uf;-~1Eb()I-(?YcYGBHr>ISr!fJU^{Faz?r!E}QA0bWIj88XOUrAgUt+?^j=zxvJ^Sp5VjEdE(&{{fie zz!x$WEjs7Q5W$_rY7aSSaqv@Nshkd-=KgRvzokkSrYQD*O47yp6_p~k!wc_QTv?#p zr3;!TY(!kXr#qW)w(rxJ{jX#U&EG(vB<~*#ElQyqhPpA!9$=sV!vR^KuJF}w0b-Uv z^wYoVZ}a5{FwCzB9CdX&N~mDr&NQ3m*CtN`IM$XWIF_4qK_J8$;v(-+R|5SZca@k0 zUoGgKZhLmn)lI*j(4W1;TWUs{i=Q@nPNo}!p$2my;_C-Bds)A$h*o}*^-dps z*tXMKc0GRz=T}Wi9G`RJSoewr8N-j!6_W6SIf^eY`dB8aDa+G;z6G!mW})4rS2Hzn zyq|%(K?#D{?GAVK6Q@>LLYPu6_gmCRRwosTzLHg@;FDEl?{Jwt#& z1hm+gU=qorR!D@7VRqq`1vC#l$tahzuCSjoeoFX-e>z8o>mp1`HI6NRKo;yLdvF?% z{118<6Y6IfXdSP`xj$D0vpIA-&aurIu+Y;h53UZ)8@`TZQZ>wOX;o54hjw*uKQ>fz zrCOllH3rXCu*WDr&E_eDyg}1sn|IHVD4+BME(Q7*JQx!^e2wVc4pRO}Ljt5y{7X*D z9y<&XnLJWf16zRv`zoZyjvYemZ&E@661Wx*$FeH6|KI60yQTh17e0sdfV5w2t;Xv0 zg=N_FXgtvyAi9M!h{T64&0m;++F-st7jO%S5XASMdw1*D){k~Y)6lTo?j*ksA`7nJe=GlR%}`?J7Ft$Sq)Z7$*$`5lP-2-p=G@} z^NNJF#l02~v%yj9*+f|I*O9!OS+(I^;U1|hng zu22D(LE}#Ees44tmWWLl;RmVA`rrItVuZckfVY1?r0u8}EEPCsKz=`iXqNeXcL9r3 z+kqxcH5A*=$;7=fRbkU(ay>ADpHX51LoQKIUkYSR9IP7CF25c?|7OOJ8NF-adD=Wj z0w%-VCXW>dv#Gmi?rQ}0fhlCom4U9l>pfz=rhGBE*z{IoUOz^iWK+)!UmFhy4+ZY_ z9)|5=454l)t2Fj#1*{`WmEP=AkpPt7;TTxr89Y6=0JlwuOTp>PL2R&wQt|@0c?@D| z{8KaS^lYoM*;Wc#h;3ZDx1aR8aX1chx8mPj0*?;!IR%luS<2(JhMD#n>y;6Z!*}7C zJ|NA`>d+bK?lNP7NCbJhbXRgfE&Sg=i9^#3rpTDzy5|;P(1ZmHYzaHpf%QsBFRmDT zvV8^3G1asVM!e@VAQr`S7JhsyboXW6(RTQ+XBHKyEu-UnVwyD%GD`_QAZo3j1R3>) zN-1h?KIVR`^Dm6sTb+XCIpKe<*S&fvWQn{#sUDCnoRPzidcUDtmjS{L;~)AdW`_;1 zrm$BxiJX6@Ghyp@k0(DUD(06|r>W%(c)IRvl##*NtJ13yK4wFcfx{=?Jv z=IB4FyErj!J?oOX?JRdVEPWdLUK`WR|hK; zSM_fdLs_huGHh6^R^Kj^S$2Xvz1IDIrw3N~RLRUJJFUKTq1rhY-0-p}kW%0`fj{+M z2q*@>omJ>GR>WYbN%3AN03-lf&p4$s=IYdSZtrT5W}m;;0G1ZbZ2M6ZOwv6 zzvZ}ej~94(PcHZNY=cJ*0V!PpI3Z=xd7tFf!K|Q5vDdPAV$E8}7)md6Rmvad9??G# z+JW=8Ej+olqkerB(i$M^v3q)%v>cr_vU(fzBtsgN2%SF@QZ<(*ZMElx@;U0=w7K(U zg9d%#f3Z7qqLLA;I&Ft8^0y21z;gwd&H?Fp1C>GLurC0pRTapEdrt8fgVzR?V(AL8 zY>!5U$Ow3J`5k(@7fgwe476Ns4PcT2#<`wK@L*rt>qG3a#V^13|0k_qsR+_SHlGw^ zXkb~Vn!feqxLJhNEcMD~Mj8t{LVpEcu*^d-^ z%)p{8AujcHnwk3ucs;&YI%MuqmxTW=iMJvb|5}$8mLpxU?{-8gw^LTDde&hl@i>AT zBz?|I$rIvslfje<+{!B;7k+i700%4JUrsblA-6OUCBvSV#Z{jSyQ8$m4{8g`^sWrW zwotI+T{m6L=KFbA0tKNEuuTgrvNwv9yrxwYsk;sqqks_@xTBML;A>Yp@HfKZq%e=} zM@cddz`G_aYp!RbVCuU6nX2EH#;{tjrmqf!$FqndNf&!dI|AWosAZmvrX^C`2>tz9 zEhz?V)EFl7aH7wR3HVmN&PKsP#CUoKkB7S}?dtCp9B~oP-XnPuFMM&$-LHs4&AgSc zomvA1*&Fxg?IKt}{!X~1u-h@HbXjnkBBui}krF&2EEp;aCc%A`w!pslIU(@*c6Zt_ zGS&+j#(b8ya$i_SX)O^1xRQIGJ;E1r500BO2IJnrVeLE)^AcW@CB70TN!^ROR>4ex9i)IvN9~Kg=OK;G)vMLB#o)D?t{j(a`r?kP z`_5L8=gz1vO83g~fVbd{tJ8Gw6!vHjetl94qLzOHc-YH5v0Wz1erqP~uDe(Px#8|a z7kJ?PVpZ_wHNSJ$7JP6w{o0T8$?47TGVorg3P{i)XGMEJ+HpBLDPVd`xW)X=ZdrH& zv1wfUte47O^<2Id@~U9G!jcSQHlaGah+T$FNL}U7DF)DK!(O-h&!*05op$TvY=1?*??{>nqbqbwZm|ARIJAcrlid z$$luWx#>r%IshtTv-Xz1$v19d=aU0)=!ucMumqPQ*uY?(mXYL^@Z@(C&K5%s>Zj! z--ZulUUacj$gAL*gr)C@)v_t?RST1R~8ROaHe$H=1@Y<4_3%wc5P}mn%q)8n(cxe%Qan~X3`s4ls zf?_;C#OE!Lng7Hxn?ujGSRl<@&MP)pr>gzVGcA05_0U9RUiGwVt$O>cn#+^TMKg@Y z9(AQ=r3nTHm{1`6Mytt?=~#GiVX1yV{?}6d6OBcM_!4 z2F8nL$u@jOrdJSJoT!7aAo<#vn#&u2^Lq+e*_xAJj-lD5g0U{!x;UGW_Avx^gP1lw9x8@yZ|@4`0otP+#iR26UBBo#& z;;*mBh&tHwGifd|Yg9r_q>TcP99wtKa7P!oAJ8=nEXxHlPOPknLYq~?DHjwu$ z9{=W(v^6u#braabo_NdU%_ctRq?CEX2`E0r^)3=349);pW5ZjV+#ZNtHaWK`ZIm^P zr}T=?=79W3Hqi0+Iv~P2cbePa@MKGT*_4g?0sr-+zej#zTfVQlYk{e#9d-(?;1tsQ zS4093r*CX$y`WbLO%XC(sjsv-;ab$rKaqU=vnih^upOAeFI)IYn=4{>*XK1mt!K*& z?xckQ;n&P~i(!)Q4*0GRUgFBx4P8A8haROmdQE$w3P`(#kJ&^xfA&A% zqO>rg4vub3D`79St#g__m}y@@=p?9%9=#uSyVZVjDN4Ljtq#aq{kD93iXVh>4p?C1%o1ni<&oR{ z8eOnDQq=W2r&m0?dZje|T!=%jCkSo;zu;x>F6@9cOn@LUf19TC3k4<$55N<^q$<2| zC~oH+N@7y|c?K6?5;!5ZfYCu9Qg<((DOGu#U2`4Jt;mQ>Rf58x0`kXe6KA(`0bu-& zJV2V^Kj9M~6E^5?my46U(tLc)P7_U6#>pmX$y8*U!gnp^kWEhNw-v!iNk_?4`21_4 z^LNniUoeBB$;B!QVHo`dkJXDR5|K->rmE2KBmMmwH{-LAH@VYIvy)0mF9rp!W8cg- ze|0dMr(-JpRAmL4Je)$dGdYJB-0613l}U7v#GoTS6DcK7)udCeGRMxDITZTzgpUU> zHV)Yyqa{9P@uM0>wFXO8ptS)tN?b?n?aVf;&KFo9(Mdtuv+%s2PmIK*!1sMmA^_Wqm1d9Vxc?)t5~UO7v3% z%P$7JP*P?@w;oB|r3;r*2BpX3__YSc)82FqNuos9RT_RMZPvf#B5jwHXORxHhZmCmJH^%oPymgk>LE(JpIndiEoX9TQyeYJ#w*c zri2nZeOL@dxY&Yq0PMtZqEd>8Ak<9Fo&`(-AW!wBAVi;-GK>4;=SuqL_zXKi#lRtEe~Xmhwv+hv#p6 z)$Xcy$Q+I=r8TV=Q)nU25kCyxDvBMvT)xh5|4roe6$E%~OG2C*X?!Mm4%q=pU{RM5xl~cu{5b=?*d~kXe!#(t;M|Z@@WIm!73|ia;|5tlg9uD>Q??0GtCM85j$da-z zS;H`tWGnkF`bxI1t?a@mR3v4su_nvdL&!SQhA7+E_w0iZW8d!i%s|)FWv_I6x8$UE@4@}i!$;GTs`yBk z-Y^qvg-=Np=OCX}lq+-I@vu2IQv^Cz*2@FUOaOT za6LgmPKsvs#~XevVL?It8#kWv@$sF!W&EW6+gixBPC$Rdue!^f?~h(B)@ESS=@Pfw zn()Fx0;JTrIO+Jr)Hg-Xjx%pesm$FTbY7<#UpoSG^}9`_ZeLU8L>FL^(R9Y*FdM5j z2Nr?}K>^eKUi1t6&6cHfNYQs~4{$0BSlrE{d5>vw(5if%PL$mwLwZB`ef19ENAcGM{lZQS zperYnq}|9zFAjP4RFafSY(M{srqPUzl2N%RFxXExW!?C&6C(aGFva&h2nRI{y22fJHf4T7LGwK3iD1<&+-i=k)dp z12Z^_r*NDXQ*dVX`}*>iazD}JN9xm!>!szVm*r4rTqY*Uh#b=PF`Eu^`F_nw*ggGF z*-PNSpC^ktl&JJdsAE6K!SSCs?1!YivFf|utnCAZd(eUH&M|LluJ2W>dpp2&Rv}rS zq(QCJ$j}2XHQzo~U}fDWIz;%b11(>l0vM8p_Wn)RAJ2OgUp}x5R@~v^5e>%!v_1Lc zAmf(9W#)jf0JN}zkjN}Y%}TJ2OZO1j92a&l7@(b6a~)JI^vE;Cu6u^^f#YJd_9qAd z_1`O|Z4R@i#gcj#xob2JH0bE0P^>O?wpxhnxzs)rsbZPAw}&p;FkVjoP%E@;w$@F` zuZ0{$UHC3LtyL3w*t)8Z%MTt5fJc9dTd6ois+c_cg$CC6WOHzzK~f!3(a4*zP}bV4 za)_&YHS+FIv~Y`^X!JI6llvzTpq%(Br4*RBi!ro&FwE%FypWdS8v!7*2TA9$n~J9! z{nCrt``@I~$$pq~NzWXtYzte#=NK44+Y{E|n8$;4DzHAvp9n9yY1W3C70cK92%x>{ta;P<$8%ZO z2y(5BSlpo9&G(XoJ87S}jDi-Pnr!@BQ0ZZ#`tuGXga}6>A)q$88$xZ1i>7vJlfc1C zC~@K`=1a}7BlVKEx3rQR0$F-GOTJu^z1PISrDBk|So_4a@8Ez11`~6F2f^9yGeykR zM2l@NcWMc=lQjsLZ9`78;e}5@Q~E;c(CPyvhBV{J=dz0TMgwrs143GOY5 zkG%EAET0J;mpC;q@c7-%Hv8CiTRLP2_r#!v7b?AipMf&ZE+iEp_8*kL_0+u`zKL0p zp#_hrUEu*enD}UzkiXkLO>rcDFuf8G!NGbi-)v>^DqN;>9f=SgCPO&Ad{PaEyle4` znKPuMk2e|=t4be@JVb(&Zy$lL*h$FAo^!G8wwy^92Ns85!{sUlm?oF!j1b5BpS1U7 zLy{z@-D6_AZJRd@UPi;?mj&I@_v9Wl%N%apt&HnJbf!aySC$yAJ?@hJ&378PEg) zWU(6N&iA1EWCG}_p!40zmRspuXeWhgpBIeKNz0U^V%qT=efjFK*KK>%I*xeM#Q#+q zTYZcwvS=`^m{yx_f|k;~V>pINCt2KNyfOF;D{C&WH^4c-Uh)l`W1-*q-p3X3iDvU% zr~}3M*#CT7OG^uTq+_MqZ| zMvGqwdeF-Ajn&I+Gq>SodzTh;Qd(NE`)IAurAwM|cP*0s8J1H%v(SpiD-}HRC?S&g zVo%e0_pIQPc{pIaFSeD-X=C~F%?%CSSa}VeyL95*W~)f46Szf~+l)qSFVyj4w`T)q z*aBpH(U(wL4gN5Q>{pTO2?+_=IXcM;6&)(lD7uA#WN@jeo6{CCBL6-<#E%VTf**W{ zlL0$3$+8b-b&IWQ3_(^mY1FBO&H@hx*Y4B}VZlw8eOakMUt=)E5cHfMangUeW=_Uq zOgR|na~EQ649QFXiRrRJk>>0!pWSEh>}IG#**lo+V5>z$Hx>b^a;rl)jiVuKj*y3&@vG*-XOC;=NyG4}>Xc-n zMvDoZql!P~(`5wDo)ZB{mC5?BUcg8di#PbjZ54ZRxxjX`k4U}&N)!1I7>->*S)*97 zRSg2e6K`TXf8c9wp#L+q!y$bd5X{+_+Bs*kR4MD=B!AHF34^>%s}6m2N|U{S@ssU<(Tr;BWTR4TEUQb02ZYJsMPQ=I9eT7I71i?j1FnmC z@;12{^mRWdwb)`9A@R?9k0>9-^2)Eox?7D8b+LrwXd!f=QLw!4_9p;CyX+t|kBrCmjy) zIFBs^@BZA&kIQzv{%s-5RVjrFP?-6GiQ2RNitS3TN3#2?3#bR0smpk|rd5~_pIAoB zyPt<0+y@=1)!K3CTxatB^uub2a2CYv`pz9~YG53+j)ENPn`}nEQ*hsiWW?|{9GYO$ zZL0Ld+qzelqlg1xaATgpvw9IvcEE;gg-KAS@7=Bk>r)11U33G8kO)fSb%_rIm{#{z znq74%3SR+?sCj#@V00JHP~GNWft6EK+afR8!I(q#fP&BCjRQHVqT{^D4kU(m%--@a z4xBF-(S)Flb(`I(W~FIgi`}VtL`-88JQ+L)#?HgtK|gHcq*aYgQu>jaL@?eXh=QyP z5`?MxY*qGdN+et(kn4g-LBUT!9gHFPzPl}BxhLbW(#SnIhi!#atOT-cP-gyE1n4Y) z6rUCd{^{;p1pXNt=Cl3=flAUPw zun-?|9ejq2f%%D9-EUSRx6akEOqY}AzN&!GT`L7tdJbL)zx5>6ciuz9PpHL>B=Ia* zhA$oN1xE*pd`Z1~yH4h!Frc1NNUH6$BQT#8 zjcXc&@g|Tz#_R)yi8156hzYawgE`ZN!xfYZ%XIhn@?v2M1veda5cpB9@GiV})XYW| zdOkEUa`UMqJl~jcKEwoDNS$}|*nY?D2mm)d%pm9(5IE@k$7**a$4X|))fVyNwP#|a z^-UO_9u{6Z^kCs%i7K;~v*s$?Nb)OrE`Xnbf8q)Z5SjUMx!h*J=tv|`MWP2L;E8;J zd@Meag3*a^hyx^M3OTqP#ac94+Vsi&XZ?||&3GE6R1cK0zzZm629T#TRHK0U6uh2V`0|kZs1qmplzS`k@=quvUi_ zPViy^=l%@s4i2Y$@FuE7L?E2ozZ~>dGsDxUpMj+65doENv4y;INReh?J)K>{z@VRT zQ;g!1Oelmy3wl8MP6;q|iUPCI%=ZG^sxA*gUm~iZDx}=*or>;vsSE2O>fR8dG*Z1N&HrEK%@yroF8PDVy*9J2;@X>NU`0j!ox^*EfzzET0#YlH#=I6Rlx zcP5~I_g6jr?%iSDN|){%9(tUa=5WKAYJjFfy6A@8UsmVHq^hefqwrv^!J;3cr{~33 z8UfAtZe4D^;y0KVRj*92H34E%pi~%*%rs?T4U!F54lEw=8ejuzufUN7Mz2$!i5ge- z=p%j%Gg za7f$&>?y?07WD(`0jFpFlvS4-*ER&}73dJdND%lgvF0?HvbfRfr^(VKdhNs|2IFcZ z1t(iZ>W@x&(aM4Tn~DdH{RWk8tXUE9rKbH)b15uO&;TBp{;^Y zzxcedTG?_a%3^VI7H8AeWT_C4saQ#27HTS93|*S&Gt5TNgPukcd$Cj*eJ(t6fZ{l<}{n@NKxg`hojeumF@r`+5#ILcsx9eOw=zgz}EMliar-&nDw`C`7W5` zS`FO48rQVWrNso)8t6+8O^V$=U z;4Ma<7^ec5ZHDjhR<2<|(~@oFMKN)?H-wXnjb}}*H=CHKXu63+5ZK|@g71cd_pS%B zrd;MepO7!JNd1u6hRVlJb0ZIhg-$ z7P%r_(^?AF6GqzW8V{O&S<;-D`QmL#XsBo6)Z;}jm>Fa)a55q7RF~IZ2WpbLLF}z^ zriE3@&^kpy?rYlMi_9y!0RbW{^tMsqHxXEx5~Y7=Uzl)q|3njJFVZpOQBBh zV;n3T-O)Z`HnqmVdz&Wa=C319p3Um%F(&eVVh{x~6T;MhwtV{n4yV&*a$yn%7 z@W#@h(QuU;5l*fPLd{?&IplM>=p!ikf|8QeXsyqb;Dv(X%uIA!k{A*AVugAsa&Ne4 zS9Ovc+!ACo49l{!E`y{k@+z7H-hbm``dbLX@!J72XJWWfLuB?<<{Xc!Cm9&}TN6co zo}y8JJm~KWj;+&YmIw$4IFq__c8M8>cLQ0rj}KSD`Lvt4gLI8@b)`_JC}=p1H#Tf8 zkBVpwRXD~DRk}I?Pcdw1CfT-6N1`EnrY*S;q*~8y4mvnkDBp^qQMCWb&0JcUNQZUIHM2M9eF+#fJc6o|>C?g3&1N zrirB`7NlYaY1?!2jq+f~GnaC%);t$1SS00T^lkngKEuToJc~~OX%4Vp<7XsO?Xisa zygo>V?F7KYqJpYOuP~TqlgEIMFp%MB;V~~*;!yUj{>Lvj#l0H9a zcBa*&8YZ}LOeoGNxpeai_1Jx|g984J4CJU=o6tga<<-X$kFLXC(c5a&?FUrzq}6R( z&A8`uPyjkVrtR*ijxN~8VFX^l#yoVGwPdv~;V+e$Nta$U--2H$4+;@@Xn6 zgdRLGQM9ItkqA}sAO$nk{3`mHf$mhn0qzSY!e>yt gKK(_LNoF_-9n@CbPn7?C3zS1z8aJ<%sM|gI4>Y$OnE(I) literal 0 HcmV?d00001 diff --git a/docs/assets/marker/marker_EG3.png b/docs/assets/marker/marker_EG3.png new file mode 100644 index 0000000000000000000000000000000000000000..730d5084e78bb12f60a680bd7474fdaf4cbaf946 GIT binary patch literal 23552 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 KE)=WU-}oDgHMyn$ diff --git a/docs/assets/marker/marker_eg2.png b/docs/assets/marker/marker_eg2.png deleted file mode 100644 index da6b6310c73c181a6d88e7746adf8457d0947d7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22324 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 J_~PBD{{v9XhpGSo diff --git a/docs/assets/marker/marker_eg3.png b/docs/assets/marker/marker_eg3.png deleted file mode 100644 index 59f5af79bc9da108a3eebd3bd600394db1116c11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20192 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 diff --git a/docs/assets/pie/pie.EG3.png b/docs/assets/pie/pie.EG3.png new file mode 100644 index 0000000000000000000000000000000000000000..71b9a6704f5609c3d1f74a8f78f8308294d25571 GIT binary patch literal 23119 zcmeFZWmME(^e;SsgdkvmprlHtGz={b(%sSx0z;=tCM?=Ej>vm-P_RvwvX2> z1%WU^RODs#{Iho!{emfc{{A>{@D+)SU}9>BAp3Mv_{OoQ!gnuv;aMpmBaXa6}TlXnNye`++6AxT$~gxbYlKyc!7T z@`cLX@H!s_;W(eSp1Vy*(VPoOq&4mv=JoO7_?Sx&*WS{)0mxQ_Nx5f~N!Bgp?)N86Wyf)N!e4Yil0{c77@-D5!1nSf;NkD?2rt z&{GN3=Z2tCacX@>nYHHmAVTJMnHO^t6Zy+D^Q5|)+=5;h8)vZICep(0Fr4M{=GPM$ z#{9uSRZbR`5{J!^9P#tZ(DtgTou?|&$`!6Z`Oy@w=E!hQ_Plcp+xstF()yz^JlZcJd&$k|Dt*s4*yA(=7}Q-n6a_(^Ltf5T99x8;v2XIUS3|CeSLlDFP^sO>0FJ9=t~QgpIo*! z&AxVNGyC1>G9wcZ5D=VHbMwCu?7Y01%4%vyYUer5%el36iok7MA4T za4uTj_vjJ=d=9rc4VL=;?c2}Iqk%f#1dA_jrmtjVC@CqyqHB(}Wb;jw_wEUB2n(Me z4-XG{5}Ocdx{-kuA&m{A5!Q{vY#p0kde+tj%ll|=Gq5z|Arlm8a&T}E6BAQ$aFU)* z{k^|`Xdhi!R3x90LJB=26${-!V?y4&dzZ4lzOJMaXsGYNvg8pIHkuJ$!9b&R>E+uW zPuFgoI#oUHatlmo_=QUiP&>~zRd+0%OKYA4cE-fTrSz|AGbw#)VUHf&92yxNMJu0I zL}j6qUoWEdcY|)6EOL(Z)>VyINn$;l*=QXXGcz+g6x!CC;07;=lb}x^CLtmBkLRG; z*y3_34ShgBp~F3Yo+~-4hxyEyP-L6X5C76z4n(%1dh_PZxVf#xCoC+AZu3pdN_gJ> zol7H$iTb0j`X=_Qq`%CCDQltfMpaZ)5Q|%D5G@8yS;_d*M#XsAisS{MIg^E-nif?z zP!B`j$BT!y%MzyHBg%Ivh}vZ|swquozmyGo`xb|N&dKRsbVtQkb-H7FV=A=bal(?!T;z4UTKf+kG9;e7HJ|e`GKg z%^u<(oEhkC>9+Q6L%6jrUYcLe8Jhe6Ze5rIyfpD;e=_s)MTa_OJ==8zs;Ja{6N9L&{{vt@UzY&kSw9} zBrL6Q(ZDi3uXz?NNwO6hgxfGWmY=CAgEGGfq5YW^*b+~lT-B5ljo6Ys_@gf84;ex; z#lw>v*Vc*{y3hd1C>&A-McC^;KWGrapajR<>o z+Hm7mkItMWX*6u)6%+PNRb1eM4V`U|5OLXApu1Ght)a{{-^15f`% zyKv!={?wisV=RvfxUt;^d6~Wvb-mq%ncHrrGeA}+ketkWP#>%-1*{z%Zpu5K&vfyT zt)Zu?kTya)A(MA4k)KPgW3s$fD6_q>R-9=ld7*}y{J{KcX#EnF{n)O6f4|xM+3VDMRGJ;YODpL*97AN|J zk7U6rN2D6kbaWGw$9@=$Purctw!a3h4eN6>xdiUI71Q~}U7eQ-z-$9!g6-Oq8~@-* zdhNbBuPVBlQB16gc;mB_cU`5X36(D&kDSY1|EP%}yH(BVCl_itb?s5nB{ekRvsWaI z+>wJ%RqNLM?X(-5{jAK;b-{ay>71(YE(>hg?`>OB^070W?LjMtbl@%2*T_&mJSq>+ z<*FB2OBZm6XF{Z!x_@NSH!#=+Z^qXKlF;|x;QiE|AIs+uAej-hSJv;pkMk0*vN~${ zup_rs)O?({tfB1LyH2I84smk0>@LrAM5&?6elm+eqTdm2MjHW5XP3pRvTm0*Gl$RD<&V+2K7aB(?x45<{q@$q;DpaLGH-S=9?cx{ zo2tc&d2jrz<5~ z=^iCz<{iV|JOXWuY_ zdt+$w+zLwuX~j(oe%VdSi??0eDZ!G_h_@l+KQ96@`V(kN3GXKlp7>6enM{9&mq)jK zH>n%Czcny4G9~7aUGTARf2J>FGogI7@!&*Me>35EB5R9^K#i0N*px}(-l-X-elGK` z1x#nE&qdevy}6Q^YyU(=x{%jA0inelRq~{re|6%@)>l@eItaDB1aA4-ShF<7oLjI->r>n9)+L|jEUEI##onk z>1pW8s!qgUa^6ab=4H&aot4En14)9)Z(PnK1=l3~S01A2%hN!tE0fjDcB!=@P)7|N>1_wEib$NCBsMCm>CShlkZCmecd`??jd`?wZ z9S4i4oCh_9xNEmvo?KqcDJrm6q~0POS?pOh3~>!B=5SM?S6iBElKvVXpdgwy`5FCo zbaOGQu!(#lr>;iE<_7L76Y>w$NEx&86FmRR(6G1}5n&}81!(`)c%h2~%ZpJyyhb|K z+xGEuO`B+UOi+cT_E$6oP7gC~WtyX1B)4Y!N9gLB;2A}=g^ecsGn<<407o^KxWSCn zzx1p9!8@u;4T?0lO%enBju-5UlvG(&lVqsu`IZ9Z?VhQJ`dB} zAH7nf86^Lg#A=zCC|7wrQW!R2+%2Z5$xZq*23dPA0dZ$KkYKuILNnAfw`di%m%caG z%_=0}XWq^0k*00c6>o7?Adwin?bXLdx0AFpp>ER6%{D8GFV|$t%r4}EK12qQ^DI+W zVM6r2@+0*}gTBFiA~a|+YUFFz)aeVfzlskOei-!f)-zdOcL_nZS#zpGJ{p3o4(W!? z7>;zZ1_w~FPntDcQ zNruYp{FtEg0`WcYU$S7%$qFIVEpL4?@R`817q^jFfvysZ%kftR=iei$-&4CvD@TLn z)%tF3U2ErsrWOi}Y*!WT`)gX7nR99CL}$iEl*W$a9DWIPVJ(x>p$X8h+PCyq2w0^b z*AJThlN1>kYKmvcgrCysoZ?GBuDe<2K3yrGF<#Oqk5ZHPES=QVYv?>Tc|?)ds6YFC ze0ySsb5>!l&8PI)w#ELc+`RqvYzEbKo`WC!Cc3MXw{}!N02ZX6Ce2_p_jaN2s*B!m zWg)9Ch_2J=d{Mx1Yt8%-v+r}AD$22q>*2AE$0|$1Cf)3en9uT;8?XG1(T99(nAo-;?YiTqOZqC_h28dK5#qM^+v zr{c`6@%sGL4^SY1Ec{NETF*XOU6Euw1Vk@CL-)nhG%=9a`(c(p}3uuSQ9^sqggTap%#Bew*{4PIZ>FA?KlL za{Z|Q_u#LI>~8fjl;(wD-iT$zS0g)b=A7eil*j?DO}+e zbbnvZwQi88wGUIw>{NU+>iB)xIruC%7K%J9TGeMH+FqhFoL^_5&O6bF z>U{w{YBqzbk(j`xH$(as4mBpJ#^!I9p6DD5ww_y``BI)UN2;dO`{r6)A*TYjD*rln zznN~TK|1s9_TX@^zgsvfBeON;mQ->(x-scvisv=iPUoSroxd1F&>S;N36Apj@81DX5-0VdxuD<~_<&meNZVNM zH{aEC^XuCUFArw z{~IECxLMlpcGelk5zWp+LPDZ%F#Ye1_Tb>4o{fel($)cV5^qfC1_pw}}ML z6otk5tX1arkLM|{AW=_7g)1`1x%JgE?3|)$u(xI2{Cf15O$G$Ur8 zVBfZAg(!q~Vn@m#^){P=MURM-6IIpJ$R)7QX!!j{JC8qPWXvXuVTt8?at8*szw%+p z!%4KUxF3Y7fC&4-BYy|`V)phi_NC>v0`}$QqZsVV$}kS@FW!-}YFor8H`Pc^P&K@>UdUn2o0!SsrUgXKScHp|Go9xF>|M z0BfR?*4vZinNO`=^R%wrRnLJo4!WhW*Mw8LOb{l6Z0Jgm|kESG!6m*(k zLhUV@0{pk_;&4b`M`xl4NdUnv>8z!#{YhjwSeMEi_K~OS)VlL*BdemUtjsIVZz({@ zGW4uCmCLw5$Ypx#6(POj*lv)-!MA(o7e}K)etTxsmfaSi-IjifK88uvG!W%P=JG-& z%SN?HDXP38_9i!SKFYh0@QsrnG#*>6o4Ih105YjS&(@NBrt}RF+1?``8!-2-DLD-s z$MR(pi@=+$W4Pu_n-8+DYq7~qWkQyauE=jW#1N0*)(0j#2M1(XVf;jidRC@e2##p9 zopCJlrM8YtVpyKqi)E4^;O)wKbFE~9o~J*x>i#1ea(+CE2?-2rYjT^P&YwsB?g*$S zAgAv@`$sf12-?}&%3BLT@(r+js2CU-nFiY{isfljPPH4T<1!CE_&{5O`@p!Mo- zhJDDyuLUJ>hAv6M^d@a-8GL+7xgTt={QtX&y_Hi3_6*Nq2$Es z#BjElz(gehBnVi0e&l>hy}V0(?6I!zm!`E8j{5vyG;{ZJ<`lw{a!*EE7i3M{Wlb%j zZLWyrM}-nb6t%x#5CUz|5A63RRaVz>=H$5vE)J%!_)&XkU&PI}t8*m!{wvSbA5LpO zKXS0KjRkDxly+aCYW4Rlmv@8AfYyK%0DAOGpwVvVKIub2WuS2mYlgQVC%wIWkg;dU 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 literal 0 HcmV?d00001 diff --git a/docs/assets/pie/pie_EG1.png b/docs/assets/pie/pie_EG1.png new file mode 100644 index 0000000000000000000000000000000000000000..7df3fb5238da428c9cc50569dbf55e952cf8b157 GIT binary patch literal 20152 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 literal 0 HcmV?d00001 diff --git a/docs/assets/pie/pie_EG2.png b/docs/assets/pie/pie_EG2.png new file mode 100644 index 0000000000000000000000000000000000000000..99181f7e24b8bf727205ce0ec8cf6a1fe14ebe96 GIT binary patch literal 18879 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 literal 0 HcmV?d00001 diff --git a/docs/assets/pie/pie_eg1.png b/docs/assets/pie/pie_eg1.png deleted file mode 100644 index 99aa5d9c8ad87afbc3077f008222ac723cf9d7c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20380 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 TuiPcyqdZ^= diff --git a/docs/assets/plot/plot_EG1.png b/docs/assets/plot/plot_EG1.png new file mode 100644 index 0000000000000000000000000000000000000000..3b52b220e9bb0c0cb4031d46ed7c27bdd31abe4f GIT binary patch literal 20765 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 literal 0 HcmV?d00001 diff --git a/docs/assets/plot/plot_EG2.png b/docs/assets/plot/plot_EG2.png new file mode 100644 index 0000000000000000000000000000000000000000..b550f2f494115e90e61fbe7f49326d4ac0f92aa8 GIT binary patch literal 18784 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 literal 0 HcmV?d00001 diff --git a/docs/assets/plot/plot_EG3.png b/docs/assets/plot/plot_EG3.png new file mode 100644 index 0000000000000000000000000000000000000000..4ee9708342c59a46f83c733f4be08e9cf31f2bf6 GIT binary patch literal 22100 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 literal 0 HcmV?d00001 diff --git a/docs/assets/plot/plot_EG4.png b/docs/assets/plot/plot_EG4.png new file mode 100644 index 0000000000000000000000000000000000000000..96039db572791b590580bdc202fa1f97d771ecdd GIT binary patch literal 16825 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%0DuEQI7LdB5~RFH@jvnEh!>Pg^*eye z`j#U=IL&r_5uR#-rqO3Qo5r#HMT~qQaMFMM;7h{+yEg1nEZPH zoZVzw9!m(-Cc=Jmn@FY+Z+FVS!LlPE%WHEs*LkKHL_>xshPj^4DZE?2P7~ZL_`M7V zJ{S{&KzEslRIHK9im&PD$cLSsT|k#scH{iRfdnJa_)=%!>o>3%i2k7QJ>ZhTLD|V6 zFp2++`TVb&|5h&>_ZT6$Qjq0fv*pk;z$7;NXxJqu5H?D>{ zU~MxDq~Fqi?(QYzwOFTEJ6CW-`qK2qUCsi6>oU^3h6EbA2Eiew=IP5Hd7h_ft6hK2 z5*QF#U|HTR5LGqTS;yymD{52x_OGfJB3`6#cjGn%{Ew)*Ql%Vg*bvj5$zsmaje*1E z_67_HHx4E#zj1f@Zp8fnlz^BRy@rOy`pQJj{O%$6H0CbvhE$_gZu|4PqpPbWlwRb| z@!_uX)_l)B6i#!Dy$7$taVpH9!lCIk1@oV!k$7noOCquyuEpKV~|NMA!c^x;9U*7)l2D&Z<+2~*L#(Hn z0rl?cR5&RO-;YwOu2H`8ej&z~T@UHUazEyR_p)7li;O34G*;^x8ou*uV5Xu1Vi#9d z4!g)8$%~9?uHI5fc~)}~@zL;ArR!X$=hnPhO;aP0sSTx6knmJv*Ig+o=G~Qvx9xHK z6-FeCYSc13{QNE8{Ll=Iu3mOYLp_HU&AL(~*1@;Df`dJe4^T^!bv4+KfQ}^~u`{+U z#&d1@{X!57 zY)84`^FdKzV7+(WJFAf00U#Z^b_t|DmWR*5pHClAf_m=a1z^Mx*YATHci2Ez?bV*%@;jQHA$rcN`y>Z_4^i8*q8=e zzJY#jign@4wBZO?^YcZ_lEOJTHa5Ns$O0Ss+3VfXdg2aofhOM*AY}FRf%fn^In%72b6}R0 zoL2$1v>aEI6kp)}dA26Ml#_jES*Sn8J*Erpp=(oFe?BmHRxi-_1N`8k9KLmCG;R0b zkMI4zkUfjrCwV?$R5Op>X`}*#thFuGIJCPNyZg!6x76tlHHZX5d(}3ctgPj1D+aPY zMU(CMI#oKDoY0I7@TP&wd)vLl$we*4l?JvI6S!FiCy0-IhV)Wb&9lMK)L_SaHHqD4 z^0*-gPZ0ip0ch{qMI3;Ui6fsIj>26dR3t8H(w`n|KFL0R<$Ekq42}$4*64CGjUf)t zbeuA6A5aTr67F7(=q??UA;q~|XBV69dx=4dgoCHPwl~w5h(7)Xaa>f9FmOY1$@=uk zE&PFVjXyiSQN0ND*GSK8yiJv__%`o8%cU7aI#_*DrZV=~C{!CsE5b-M>gi^!8A~+a z@61IhL>Rz4Lc;3RJKr>VEwKOaJgYM%91mjg*rrr%5b3y>X?fw5 z1pP3N;VG6XKh#$m+hkTuN7QDO3*BBJZGI&I>g|pq8!uIqI1jN9;fr*jr__0|o VJ}TtH9$@Doc^PHtq6enW{~Ppq+&};T literal 0 HcmV?d00001 diff --git a/docs/assets/plot/plot_EG5.png b/docs/assets/plot/plot_EG5.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5de0adee0fc0dc079540e8c27f086344d67fc9 GIT binary patch literal 20995 zcmeFZXH-;M(=NI|MMObSKqVSL$*3f0vIt1dIVvI_zYtC7-X4O+wPp#D-RF!4P$!N(S2qKqz z@>m^$P7y;8u{9|P_~x_iwlMfO?fghilN9{tP5S&j`1`txw62SW!wVO;r%vXOg}sBF zIhV7UlexLQv!#Q}>Zt}X2)Y5uJ(kpTPh1*v^QJ=n`MG9MnR)f{lSh`9FR}IBWMy|B zJpW9xK;p((vOjqi7-53%mPWX6`-d|ueAJ>PiL9=xmn6>_)o9|mFb;7OOz*EgL&)73 z+O0D|dzhEi#)*{G4*e?As1INcJZfg0D^;6y^1x{!CxT{;dbWXt5;u4`cE<~*ZIIkL zE@O_dMp;D#wrA>>X5zg~hH#|~bl{%iH$g!XS}dt`t051nw6=u9#

{R7awZ*Rz9s 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 LNkvXXu0mjfy1S#~ literal 0 HcmV?d00001 diff --git a/docs/assets/plot/plot_EG6.png b/docs/assets/plot/plot_EG6.png new file mode 100644 index 0000000000000000000000000000000000000000..b05c56cd8393e7ce1cc3ecb9e8937eca147434e7 GIT binary patch literal 28725 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�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 XrxXaf#GDR4Kq=i)lP|bw^5j1Novxyx literal 0 HcmV?d00001 diff --git a/docs/assets/plot/plot_eg1.png b/docs/assets/plot/plot_eg1.png deleted file mode 100644 index e87724ff117359f222fe0eeaba07703e2a031389..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18356 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 OHDv{j>-pC#AOAo14{>(@ diff --git a/docs/assets/plot/plot_eg2.png b/docs/assets/plot/plot_eg2.png deleted file mode 100644 index 7a17cfbe811b4bebdb664fafbd31784d6077524d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16397 zcmeHubx@V<*DfI;sYpmG(k&qkDk^S}kZ#x@A>G}nsGxL*64Kq^2DX6G(hVD=yBp5^ z@czCt^PTuk%$$GDe9k-LE6<%PuC>;+Zr&>?$PnUD;h~|S5yDyoH8_;f9M1 zesaKuO#*3`)r?qGsuW@Bq@!sTe}U}9q9Xm0DY zg^7?vL%W9td-g=tEqQ&)H9mT1s%>Y>D&vUZDW^H7`Fe_JGdAnJcScVh8+b;%CXw$m zAN#3`{Q@7UrcB5V&0sAeV0?Gr)&MlQO|Lssf_=~ z?Kj_1>QXZO%ScAp|M`EpbuZOsjfc>+(FpyuA78rCAsEtRz%u>BF=%UkSxw@Gf}bxJ z9jQ+>P04oJB(W-rbgDOh)UQ_zWI3-5Pi3X2r@OG5n0*F&=gEquWY^TV9fZYjNF5uV z?js6xYj@L{%!104PP^Opk9_n@7rf)rFkGhX+i86(pLfPyj1=j_RohI7%F4>V%n_;` zgf7AUO_lw*kB_9F#bCPWC#tNg1pXxyCBND9O|O@lDXbSg?fXJUo#)vSh-8uKF=(j) zhw^R(y(%yFyzk%N_4oHXNM?fbWXiwR)|P$!`nKgrk-XsBNw?}mu%uRv`JY#YSg6pe znd#$2;{^O?`XakSxzMe+5(U@ltxg;?XrS2yUlek*ei%Ks*y|SB(yMpb@Wwrhw!{$h zd)o5!Dc#zZjzXq5$1R=ps!r|^GBPr2o$z)@3aYTMu&~{vM>dmQ)8{9}n4MY(POo}; zjE)kL*QsRhLQb%-3iaHfk$fsZUg;&$>@SdTBsxdCB@ph&<6CdTJ)3{s2#6}D7 zw2#OEiR8UmajLti6v1nOLLlTvpIvNZul_u{-=T7EcVNXS#lfo)I(|;6G_)7Lgd+rm41la(y5;G+EeM= zIf%@(T@ZvXDWr((ZdVB;9C4>{75hn;!sz(bBDju3{SG${Gk3oF^1GUlty||S6stu( z`l|7*GI{ikd;-FzU7M+ZQ-0@9;+r*egPx=#65h0uql|bvN|haOtkkxO*9!@l_hGfU zJ*mkDM?2zDr{o^C^*8Y=lXeeI#2nXcx#yEFWlAlh%DgRm^2gq#StDqPwP0U>TE{*4L08eJPL7pi`FGxmfW`qwaGe?8YN$TneQx z;>-NuD%Z7@9=R{!p0v^7BlhU)rm1I{Z&IDf^tRe`G0z9p3-0rsG5e1VM|k1pr8~AO zWJ!g7dOf}$HF6Xd7IY#qU`$&dKb&bZE!2%89z7@&)hW^SVp&SUEK?m z(y3RWry}$)Y$SQjACv9+?MVKe{kUl@Fvi99S;`sJB)6d2E!|+wN6PqQo)bqgdqR@b+>QYy? z&?-e~6)(z*j87yGq5G#CM6|195BJx`VTg9MU%kqlw<7nwvFiKw8dR2b&A3;Dm>niO zTR)F{lu#5-8t`;6%pn)l6g=|Qr+gTl@lDEb>3b9+ zHn@D+wB;Sbai*OA^Ctm(qkg;U`cmtOS<0VD$w`Q%8^7GW0 zt7;`Lje!7VZPHl2;_s{6oMn$+_P1rOmMvjP*JSlRB315MjamDS82UluIL5u+w{6wa zcr`V0_^t;YOUCsz>zZ2%cHALb09hM@|E7s7PtMKBkuA0ee!4y zagMG;YVn<|+_M)e;xF_DV{E3v7c-Nx%fwR@^LyIu9#8Q}DmZ%;Myhse-eY|GV7K}T z%i1E7Rd1I#)!kjPwP60kQtHywoPhhm`1XgwPB#V@50R}1j}YRp`^C-S>w~N92r`Z1 zy~|9JurOJFhDG_rpZg>)ho%#)wPW@~u04oPQ?(3LjhdO-E3sN88~ z!s{%%-YGCNbg9EKMpfid)f0DV>ZJ0ihOgq}@BH1lHg56+w>ZzdUk_?{Lk*M2cwPmo_j1H5=yhVaty|T7t=m1 z7KKi~L1ELgr3D0#Dm5+AiuE(o_vcHR4adP<6k#wb^CnZS)z2QbV=vNNPuEHM*VIdl z^r$Rsd#WY|nGVJrl(DdsbYHDRh%dgFVaQo6-Fv7vR*NP}(QEhuR)3&BF-Lyppt*+i z%6pz)eQ4$rk*DB;=WO}p+;4_Fh*Q0bolhsr^zoT;8Qv&A`Cc%u?fZ(#&D!Mt6hh2j zG)AWIaLTu22{j>cTTsl&_y9kmz?Ed+FIljfPe(G=Q-GNJ`AhD0ujpN*Y&eMOPwmI` zs=`}5oLS!x^3zfGXvh%Eb#UuM88nC(G@L8aojPC=M~?&;U-5+pQc$QMw4^Pv!%mFO zSuaa5ew_vM{$Rb|DCbR7yZZ#YNYbA==X`KavdfaguVLkUZ%U13y6SeQo#XqSB7ry6X6@V%D?f=-?b!7C6NsYB zGG*mpQ8N1ac(O}-yL$tgaYMzpw=R-Ew)ru?8$y4|SZzLbA}SSdbI$=Ij*kysudfb9$)qi7J>rNW-R?6uofT%izm zA4qfa7^jJ)D1Ni@)tTCTdZhr1Rj;XBNDuiy#jG?lll)WC;G2`(%E4bVO~yV3D_+xS zyF~Q8da|$-W`TU2mJxbH+po1=0mYVNMe>DgYs;}`9 z`>pm~2ozO@7w0IxIqr6SXw4O5?868fFZm;9vAY`fG~BWxmgpeN$4+zrxTn6}>tDul z7G=48;`ZL!`79$O9L(ZzVx{9mc#KPB`(lTc~ED0+o`t}46B4X7@NQphouQKHnm zR~F=33M`j<7bk11T`nF<_?b-op;{z59$-KCWJC^S=CJo#_x|(a|0^Mo{UrKqt(-gP zyOlGr!sn|GypXv*bpqmt5IsN@^_Z?NZoVeBT+vRRj6YpD98C?Bw(T4eE$ z07>r_8CXo)69KbTwm;tbR3K>)(T4t?YHr#T8GhUhfTq_2{3ldQ?bVxkA2qp*n)(&9;Yw&bbVov!ej z5)2kngHLaF3 z<;pjZ)h1ZCeJttcwIp9J!Td;1JYfUQplV%vy-^XHO3TMkt@2qv%-PBjPGaRZkYz_F zyod-v5(Nh1XL!20tuUDnbGoqSjze&t+2zL9KnKz(g=UNa_Vzko}TMh@!Yt#GESd4_H$SOaD#GoqJ|Msr%E$%wjNdyYJ z=ECLI-p0FV`N?Nout@fqI%i%(Gy-}eL5rrwqn6(+?Fvk9?_8gILAy?%%PpQ4ol3y( z^|#qRY2%#8iuc!>?RF*H34iOoC1E~<*Y+uJ$~6LPCi2g$ zGKz_+j|GBg^<0SIokxA(NjGliop0W~w{QcJLZ0RWnU*gyEs;!p^+MuT;sQ1_;8u7> zkkZMPVs&PJ-hpq7+v%>oyRDS3zOEX{{uvT^jKNzrT?beVIsqL)_4MjT95$S5V~FV; zuk0%}sBy|Qm9M$-5k>`p6R43uJB>TZ#Wp=`50W1sq;6UMW4GN5RFU@#5>mz6AIA(d z1EdP>;z1y*%om7*{LO-_b4Jw+qmam4 zxyU>+q1SSenQ7|Uc!+Z*0!ora(Md0UT`zlZQHD~;R0(y;u}=?!SyFNDWYN2!g^O_m zGr0{d*B_x%f$OpF2W-WD9!Rzc6R3zZ0g}!|-})H54Y|KkGNcav?hyleWy8F7%R<|6 z0rL^==+G$_e11Ak;>aIxNYqz*b01KAS+$NCDmlFK8ETN?Om0D9!=v-St#b)p=tN~k zfy|4L3fMLq61pnMq#fq|8qV|Qymp4HcLXh<515b^GFJ;SZ*Vu<+N{Cc-9rH#2H+dz zL`FA5a#PdD*9eu10lqn2iOiEOhWw$!4pKtiw`*68=fg@A@PBBWE*%P;0UbKSPX(> z7e2R(7r3ci^$}<^780o{Ede$5R9$lznOz6lb{D@A!UtLoGOJ8o*NsYE!^iPE00g$1 zFqJg#0%PP{fZX3f4R$lxlY7!x1ALvZw(AjrPVNAm+~E(v#+IABE}Vn8m=WR_5+0B! za3C3V2;!3mT@V!`h`JM-RTQ60R6(_u}8H4d#w zw%|wL)3j$OC2=ecj0}nq%G`H_h=@dP{5ZuEbq$F#2qEW!_nNysl41ptq@+y- zS9oTrl;8*!P0&_VTD2tMQj+VQ-*qVHyh+0)A$S@Jf`nwXJEW1p*>J)vU`ux>wvO-x z;>)`Y>1oVpu?tvYl%iq%27u&^DggS*g7c90%9_`TrOysC#MkS28V(Z|o+y(-Lg1Sk zE$z#_!>NfTLyL8XrNuM}a+gFX97O*PAqq~FfDh#X?~i{7pRZti4#5JO3LzC~xCIy6 z%{{u!AJn^h!0c7KukG%YiY|>hbqFD_Y%upa=0sj&ZGuTF-trW6swdIvP~evb$lr32 z(f6;#7UsU!!n{&F17tb7k^@ik1`^FYxK`Z_e$$|s5Up~*`M_vXMSb5J0y+ zGLenn0nv!Y4%mvJ`{(EkXt7oS4*?pNyPUeXQ}swWo+ss|K-vA+kP^Zc!o^xbR)+FX z1?7f=tlw2wfH+TK*LJThN*HHAw3LFAm1Vb4xm}GAnSY|JZg;1W5vG>=owdu!ZTUVc zCjk<5dIXU6pNd6QEtV%#zj3yeBE!eq?c82??j7)!+*j8w7R-YPD$;`kM<3$@C~R2_ zed@aYRJAgI{1`e`o*|zE+}wE$e0duM0YheofIFYl@~sY_B-9A7IIU}oGjX502|P#> zAkASAg}z_5Jdk##!?hn#h7kDAM}!Jmw%8X&ND)<90+fL*KuKmUL)HMV-925W*EPOK zLc6n#&r4FZkq&{^9?QBm-0X+W>m@w+9sOt;pCt_dKBF2dWItr^m3|NsTW*;5p}qJN zAWaO3oIQCh*JOVsC#}CwM~F(u=GA=LrNKCzx9ggbnemHV{^7LJ?jRa5%a@72 z?9d{A$G19B%~QYiL#*7i+i18zYrSr*Xn$iu$b}Q8%t`NsW#q5vunRj|{;_0^MW%8thu_<#JX;$Mgrl!u2{xL+$4J$#t6k{{ANH0R4r0X0%G&NUX!(2}UWDuxLbg&smQ2|WaIim7u&I9SWewg+WwO1&l5$RZyg}q4RSEed z?2Yl@-I58L>ue&D1Ugw>8ifHt99wq^eu`)?C2^rPKtY&RGqjfe{~-Rtw2;szNt+t< z(}TdT40nZjqu)~rLeNzJ1rX&;4mN*$o*=PJzjLpe1@fBN0O$l95E9i|AFSHt_AmcY zs&~vcfk9~5&`5#Cz*ER@za@h`3)B$ zO;;XSU+=VZy_5Ud25{Lnf>Gm$5)8Qe=S(~(p;(ArN(~Go3UJ?>-A2Ou837VO`%qr* zbN3NJopT@=$85C9Y=T+3&job290+r3QR9~ICO;5Eb~{o2IO!$4&@2&~ud$3K)sZB^ zN4hm@Mc`}I#B8!7bckdVu$f7*TK;U%9m93a?n86AnR&Cc)E-NGl%7oLz!_0x9tx~Q}M3ko1R;=rs5#0 z$nAiRH)cF3Ed2M@@hZpiB&EI&rFI3hQ63pE2R5-uN5#>5jSiqM;|va>!2_-40zfyj z%M}zyrz=Xj1cBJi-bYXTCyp7}un}jnk$f8V50kxJG`(3_{ScRAJ>vY(q~YsH6%I@^ zzFwn8O4Z!rr>r#IP9VyvZa^ALSV9tK7|Q@mP81?OqdlCF0<%aU$!2TS?)old=r`KE zT639zZ0Ixu!rX*!HFrIZE)Cq><_S9k8BOj&2X;)h#}+^1w5p+Ok|mW!j%m{7A+|FkP{7Y2}PLRLCgKTlM1>A}hw)J_-ZefU1*Wn=|9w689ZB!xb1 zF6pGVkkcj&v=WOOUKAr+>hCDj->8ht8%6a*Q1k*5ZWlo-#Y@tH)D?uoNk>!|hY<^4 zCjj%#sMZLaIZO5f`IFvMkYttK0R$bC3*-&=XZ2NbcwLG(Eu(=9%l*<3XrpCoG%_=< z+{Iec-t9CuwbgUs(F2bZt7KNa+3xc+YP-b~xF^n-^fI+JYayOE` z_~;ix2%i*&%9Qtvup}t&$@B8Pgqn0hb-(RF9~yA+yXzcCJof`4kI z{%mR?q8?F>$*VPk44H@;cYxwO;K1Vowhic@1ckE9zN;``UpbJinjG!4+wK1;abQYz zq0)7fhc3%tSb&1?I%Qk0rWZd1>;cH7VR=w3 ztIYTOIVcj(_tHu(4!8FQlyVe+Ph_$~8Hcs5D3s&&O5kv5Hub z=#imLTVH&D;RmbD{Jl+86OatTeqv<&?UAB?5gv570rFO(oG+?sm!}%X^Yj@dx9EIn z4yVO{MwLO8$mDvqQPL}kI&O2>m@TXZCaXFIr2m0CKo#%u^2qKKl;PUtV88B1fgm;S zNkN*t3Z)?_3XF|T()T7)kffBAovm9-H$Xs2rfkB^>SG_}ZzUq5i$6j`1UOI~*P`(^uh z9_)YmgTf$aKq1hH%I1d%O~5@^{|n7~sv;J{LAM`(+O#G2mG^1T0|O?LkhcS~qsH(l z(VBI>n&q#M__cueJEGz!u$89lq>pbdVNo>M`T)8pvsW?@Yy11d42+} zHY5#$jeZbtX0Naz>=nm6Sc5W`4&W_ng^focY$}Fl8>qA^$hhYtK;(0n5m{;i6;}Zz zK>i9VN`TaCa$5IP52~if^*sp>Cx|6a7^B|_&46mTLvKVE({+Z>c{PZnbUqxCa2e2s zy?`yz9p<1YLr{f+TC^v}sw{y<{{ z(ppvagTN&AU*Oip5l=S8Q4Sxb8{yrFK+fxYzCL$Jj}Auc24D0313)y!{-ZZmoIDzn z*p+%yx6k+bGH;5XFw*!4bLxX4C7L#thZyG$1WgF3k2I9(2LKZvljEAC644s&z5!um zyHpzIc|6uY8KH%RObHvd2~di`_{o)i!!AQ_dP81e8xZ{H3q)+A)Y zCJ>~QEiHCq{Sd(kuw8j$W=ZvnD!VflFQMi^xAlVSW-<0K+H)9PC)qoPj?T_+>V?{+ z#(%341>whbz@e0w6@<}42mrYjwzboan)`4+2JcP|7cl^FLvSxT36Jez9otfiA@*#= zw4U6Y)DHVgfrj0Mh33NQ7I~rIwML#gT%U_IJA=G%X88aWg`0cIm&fgP2LD=MKv62i zu~#Av$anx0i-$A5zBY9$*`uX-5uM!lalB;YA$)&|4TQa4&bedk9TjYF9Wx^E{JfR zik@%VF$^pwh4R_=J%M8sM|Z|@`g7|&br;@lDxoq1&%e|jUM;*n9CuWV=VK!1_Bh+v zRvAm+2O4H?AFo7}WgX3g>bU^Ms|gc4M!T(fFM6tK3>)&s8G6YJ((&rh5d+|3d74>S zebu&_&J#xXfCi!xyv}pvweCe_3FqM@Djk3k~T9!XN3?qsk7+4c&(CS8QJ*ogB*GVN1A3X$?;m#p8!%!Ntp!5 z>k&`GEm=EJ+7Q;mOr}hTEgehXk2KS8ZX-}R^WpMJy3OaC7gQQ3B*-4xF=KYnvDz1hz zn|0OxQ}x1tZxJEBSJa2&9J&D-5aS1GNJD?6gT6enhEsML2i&d{YK8Iy;fJ6MW@YmS zy_Q=)t*dT2zFHlD_?S$36EOHsI=c9omD{%}CpHk5AG`orOY@i+azHUO;~k)ZlWggr zGgH3-LzTZ_6VTH!pB3rhv!sxQ|B5y`x!6K&`4S^5w8jR`n!? z@2QHg@l_lm2-xsZR-V(*6zH}nDcw>>La9F(`=|pWV|7gfffwatIf!fW)z*NO9azUu z>u4$b*Zrmx*APNLT0vB5UUig0fc<<+$dC-($;`=_vdL+?6eyiq7FTAj=oF+Rpyi;J zcqkoS6!VkLSorqj6P#ejTAPrivx6=rUI?LAKo>C&+>3P<3i>B zg4*&bLgJM5?-CTeloPb>Wo}sv6X<)eojV<`6(bkq6{Tp!V#@Sh-=^`j(wrK%Z{NOB zO%c7;D~$72|Itt`rlKU}qpBipED6sL$I~qNFA7KybpT$W+t0U44`g4D{SC%O{O%<- z+c$6~Bc%xKE*jAVp}g!*u`eO96pg|ul@L+Y7&9b;j#iBO7tuf_n{^zdVfjS?>**t3< zw~b1>$+f}Uz6{K+R3HPs?z1f<;G7Z#?NGsXV4G8wAp zYX+q%Y${$mSilxR*TcTOnX4LdZRKE~Ta%$OrdNqKQbe2M3|jngT7qtZ!Bwpvq}`8u zeF13>vXT3}wxyAolk*6h{%rHUd&x__bMH&6wA|*8m%o9*v4WQAGQ`KTn4``bcO|GS zhC#Xjn$O^VkJLU0=_koBC zWLc}H>@X*N!~iV=5)2-n+mLrbg@{`89R*w|f15tE5MtsphFC5@LB}lk@qTr10xITN-!dK@|0+^>vj+@J8)hPHXm8Jt}mi7ej z-Kwnh-luF%8+aV*j}bn07YEmCE`T*n-j0*%d))?%OE5mF1UZ|VW0cdMeR^sMxP`^u z&;IXOf@ zLBx7)*}@XCF9X5}Ws;7cTfU$#8_CWF(X~R;e%95&ptAQkfT}|_Dj;38q6R*w2@u3* z-$se*&gGj(FbnDLYY>65MDuIez6NHV=XAOPQgcvu)r9;o>$P+L$Ttw9(b9PIbgB;2 zW1uR7E=QVz^)$~yhMth8@djvmjF#FhXTSrC_&W7mo9Qoasec5;*2UqqM|=b&u#xaA zn%jops44YvyA(tQPUiC=RTP_RmqN~@LqoplFu_Q`u(>ff4rmP>PVy5ZT8o(snCZ zB{sDC8~DDLj_ayJ?PVqzHQtAm71sC>l2nVXz{lwUPm;h86VMz8`d%#;fSonCB1!17AMX7tvJkGLa?JUZlJYMYdR{j0<#Y>|u}E`)5GZ64_AmGgEp z?^}`z3(!@0+8)m93W8nj{ICv6(HAfVpalW=I>=@_@W2tGHmY>uOW=Z zTNPq106k)Gfw#Lm3tkEc*n$4{J0J%q9c!#87SJQ$^>m5XmN1cBR~=hhh|BQxW#tN{ zwk2p^0zd$sRw+L+@4o?MQXs`*6JF=N%g^kRx4t*+i9(>pE8*p*S#j6sISfL`*jE>8 zsD*K6rP)XoE%O3uX|jk&SAKLlwKbdSnVxzp+kW>;a zcpedt)}4gp?|q!3uzfHBju4K|?Z=Wvkkr>65t??v2^mdUDiD^-*#=H=Bld(1eldbB z+%rXx!zJ&y2tfx7%Sw`-9~(5up|K7DU@X>zExoDqdL_mA*$hZh#I}AakoA_p;b|{@ zB*piY;#0s20CrIRbdUjp12i7MLx2W%JCJd@JagV#F9!wEX9eWv`+fNuka;hV;s-^` ztq$RP-UrCL(21mbA4(sdlDFD$Ku+UILrT_6rqNWpbghCOpn}?Lz;?KyVG|M9W-5wc zVH1O~yWYDn)>i9N ze|u-k7h?IYd0B_CV2T!yTQ$G+J;6_QV<^z07E^20uH`Eb_d0*LUQR52sCl=91>7qb z+{?M076;HbpQxIDeL=D8%K`gPdl>csx#qbie|*x5yo~r4U;$n!a}^3xLmJ3?m4Ipq zr-g4$j^=i3b@3zpY8JbZD{|2D6#xe!;NgTC1)vyIazgwquKV~c`zxg?)^$$;fmx^9 zOqJ}GOu1Y`GU(oCuDN;}`^N)ZS zoCj*`@A8h6vv6wPkfA{b>4%t_184)BEQJnaZPww}IYIPjrUd{bHJM6_X7DTo6rrm_ z@CUmou5AjH_A1#;FqS8LP zs57WA=S;P$xvdT_M-YZNDG$P9W0v$jBtGnvYs;28! z`Tqr-rx~CPyAX%^^#Fe9C46k?c6pNLd6{HO1b&|f4lv96D9_Ud7P$`$G15o3(E~&s z(8MnRl%cnP__5)F)Yi9%7L&MOW7DmAp7mA$29%&v@)n7QHw#jL5k$yWhUFQ0n}*We zRNI!Ik}c2+18uN7iUkcz;2~BLU|!$OgQkj2J)tt&akuSk3qCUGJZyinzAvAmKo37o zm&69bS3tuuIbNRd8iBSDS;w<9NmRGb^LPm{ng{hxY{_;Q=PQb2do>`-XaO83(+GIj zazrCwaU(*C?vWOcmhz8w-3r#|&{{{NPbeJOA{z=|_$6psCJNg#q=>m@!;v8sfX9Za z*dka?VXFG3~Qa^ZDg6m3-GMLNjYAm^k5i1 zER76_iP8W$SNyInOW(gS1QsW|3s$AA8!tv zYcXCc++luY=o+eq@jTkfuHYPN*RDno*$luBD z?{@MGG7Xk@$8KnB8T6vH%YTBr)J0c-87^guOPqg-|u~EyccPI>JlI z@h~P>KXcjR=s(>;GhI#onC?5R6l1oC3#0Zge2NGkxPf$|2Rs`psWP(xNXBqT=hhsK zkFr72c1g4OWUURGhISV^b2Wtp12WK^$X0hY_psPpq#0P777IThBgVbiQESZc?T|GT*iGr3!Ha123tV*v6)z3s2QlI}U{$N>zI+wcrkp4D3zi%he z4f&+xdp`ySTG z5_~HST++Rx>{u_k}AG zQd3ifomW-Gy-zEk)84otFXptY^zq}zpM!&{ujJ)hfBkw%KtvQvhrj$dj$1E`->m27 z=%}XER9z*Q{{G_ZsQu^9XI;I$?MXtmbLS^}rN-^y{l-t)?TBy4Q&UlejT9TSXUiwW z($R~#6l|+r?eYz>?G<9ZR;6p`nQ;N7!Sbp@rT0$3lU{_TRXHhW45H9vYh8e`w7AIrRTl z0_l6+7Mf`fjNtY|6dKwZ94dnrmA*1Rr5NVY2;1BC=ykja(a_SF(irB9pPg5^o!1;s zriH!J#t(FA9Z@>YMQNsJ$UO#tB9b;IC$4JgV}CJhcV2SrIWyGJ>J7M;4?Ks`UbzX{ z$X==HV=6GvGLQBh@s2aaR}V3j0kKc%__KLv#`mic?RQs=;fj_Ab3bCm!H*UO hqh!GD|G}T};jPn1ivGj}nN(;L?770TqNj!d{{=#)Lt_8{ diff --git a/docs/assets/plot/plot_eg3.png b/docs/assets/plot/plot_eg3.png deleted file mode 100644 index b60e5da99c631688b5967048ba239914201ba864..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19608 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 diff --git a/docs/assets/plot/plot_eg4.png b/docs/assets/plot/plot_eg4.png deleted file mode 100644 index e80ab1124b31dc97fff37f59f23dcec9caf57dc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14421 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 V+aVP%9Q>5tCBuvOzukWL-vDm1ggpQN diff --git a/docs/assets/plot/plot_eg5.png b/docs/assets/plot/plot_eg5.png deleted file mode 100644 index 3370eb173d6043341998de89189e8499bad83cdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18509 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 diff --git a/docs/assets/plot/plot_eg6.png b/docs/assets/plot/plot_eg6.png deleted file mode 100644 index 0270deda605ecddd80ed3e18c245f9ef5a7d5755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27551 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%0DFIF9eiO0fsqLHw|_ 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 E1L!%M)c^nh literal 0 HcmV?d00001 diff --git a/docs/assets/readme_EG2.png b/docs/assets/readme_EG2.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd9ea90232fe1863f5974e3d010daad96fb44a7 GIT binary patch literal 32119 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

WJ)bK);>`Do0qdJg^#v_54*-qXjX$;J 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 literal 0 HcmV?d00001 diff --git a/docs/assets/scatter/scatter_EG1.png b/docs/assets/scatter/scatter_EG1.png new file mode 100644 index 0000000000000000000000000000000000000000..42bba6ea7b02ff190f746d7e8070835fb2746020 GIT binary patch literal 15804 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 H_y2zYO(Ift literal 0 HcmV?d00001 diff --git a/docs/assets/scatter/scatter_EG4.png b/docs/assets/scatter/scatter_EG4.png new file mode 100644 index 0000000000000000000000000000000000000000..e8bb6a82790e034429ca6a4a33081c20bdec90c9 GIT binary patch literal 19776 zcmeIacUV;4x+Yiz6_KbS2oe+!$tp==f#jTXR78^GB4-d#5Ky9$b0{cs&ZvNhg z&J>}Ff?oAI=iGC<@3}qGGd(l?%+vhAuDxrmwbx$j3-9-S->&y+Dze0c)PxWSgjilq zN&^DH!-YU_Z3wP{E1%z-2!jK@%X4`x0`TWU@ai2nzYCMrgK0XvhPl6Rwt!gLJJ?xp zx|lm#SlGK*Ily-DTE!p`28g_rgqBCj){Li**7D5B{_Yp0<4CfbKY|z@-4rLkE-jT& z@F;;$FL4ac5TOxrY|s3_*thI=5WbCZUAnNsLHnlgkO`v5aX)YN(arzrH3AiqDB{1Q+xMr(i=K|H9UMiYUnz;nZ6Fkt4_I>`XqcNi^RvRas=o~K=l=8hE_~kI`uB5n2 zvgB+CP7r7WQ5v3P_@hkVShTFBhQ3!cXlEERIzoY?%5oT~dMrA#+B+JA`gdbW7?xhG zsv1oj5TGEK<{TMbqQG%zMV_pWAD70{P5b&&&C~Sr0V&MjSv~{sLUcY zwGp|MGQ^R$VJ1mDdk~{c*Lpz_XrLSt z(20|=ziS=Sa^E^5r!VFvbBMRq)GZYh4g_KrwDS7IdSePrD4*XlTce1Q(nz!EOSdg0 z9GNZgRk34m6tF2uu#hLzo>IA>jp2%c=}JjS?W&{-X?J#YvAhilVHQm7D~ZW!@}j}6 z1aJPxvNLUIaq&64tgP(M(faU<<>h5lIRj?vbQ_gpTY;%>yOxnGWlSO6jbv*6H{xNc z9v-I!J2Q=qSy@>!y1Kf;MR545shVl~+Bc24)=FTGkgD$$9D?^q^b>Li2Gl~{zO9Rh zh!6n7YU^rgHE~*px^NuM(E-OkC@S=(eoA-7V~}{wAfAt-OJAU*RNkUjtCF`T2xfzE+>RRmUL>y z!Y_8ybZ*$&H1cqA_G+7$&~1&g5&F*1t-Vaw1@&_G`FU!kV0% zyjfCGQdUb_yLyftG;Z_!whm(x5iwH9*G$kJ_U@>$t2g4(*3$a1?5r+Jvsq?mI6pt1 z&G_KKEH^i|YJ6PLr4q%4)zPp<^OX(}#3Q3d;>d^yuz&EEMt@C~nS(=VaBz^2nApzQ z-@~IWD?3|TTRS%<=BBnzjm-hg#;Jj}c03OkS4l-vlTSeopH1Dr6%Q5r6ATFd$V&1xH6m2kXO!GWYLu`lsK!c{A(XI|3jYXBCv;@~+QP`xf(6 z)7|7IN51b&s;M37dA2-IyM&8V_Ea=@xx%nR^n)R~y4X25ibwk+KYWP$Hm|0xJ}6kK zZed1i%$z#n-+)uUJa06oZkR0Me#2Q#!SUHWc|-{{=qnQ*8EH2x?||6bbL{y3T}_sK zli>RGbv9NBPNLfhHVqi5wJk1*NdH!Z%W5BGO}#V3>ODo#jgmSAMj0ZVRn7GEwJ-dB zhc7$es~?N_Hj*XdJe*6Ts;X1XhB{9=$>$6uW&Jd>xuUgaEj`(8)YN|cRG{cURhr!5 zTHUaO(L_i1sAUM)U0vXLIb?f9YxvqMB};#1W+qr}4MWN@zH*YDim!x(genEEKLm^v z2&-Yx8~J$ME+-6|M%-Z#g6D&hN2ZsJ^7Ia;^fR92mCIe|3}0EPpoWuXDb`PsbTmnY z=tMC@NNb%gW20c7eUD-0m!$oXSXA$HVMD{FVAY}n!gF`(boMPNIx|7+iK)xZFRd&A z#h$8_-Q^A!!=)yrxl3s4Nbs=37(*%HIcc;j-{|YbN!O&?GL%k zQiI!CbTaHxRPwtf948;}@@lDAZnhTNlte|+2=F&n%hHmBNk-h^9I9SA z?Pm__})F27{q*Z-Z+u-z*jkd^ccu-jYiYaNKxm6O* zeX@q2xKX{=->CIQQRiHW(--|D61Fw8Yk$#_HsfIZqyM60bw^2OQ1Qg}h%s49pgxIF zeH_}LBaoZJR;L6b&@L*rP{+qKhvqq#QzsZE~Wadt8?ayE6DgMAud@a5J;@A%^}8m*4fQ^e_^yA{L<)!2sJYu-m_%OAjhrI4wh&XR&>TbV zO~la>zI0gJdJ!fWc@p2h)@q7LOxlL;Y+IJq_p7^9Z(A>0<}lw+{CsGD!(Fv(=;B{B zLB65a>etM~%FeDBqouE3SX|5@dbSkn+WzO>#@+~DLHp0I%Exy#zO_h0l*~G;2GM#32pe6#C| zIfsHx0k0otUB(A>=kJY6f~L)djG61BC<@y@vh)2Yy zh*Yo4S4$NdMsxk_=ZWV{j^8TC z@0nahk)pOoXYTK%7HS^ba`=Rsd;ie-)YPu#FN5t+j7 z7i>^-fx35_`^`?U(bKu}Xg@z?7X8s&wr3RZsv8Rw57wb`cdOOh4KGa6-sad0tg(-R zd3p}AF6(v_*v{F)`pv&=%&l`No7Sr;`z0=SSe9{ZRp*vm?K(K%`D%N`AlEHqTD*2b z{jbg8=o#9YsAQIppyVF2Ep1+j5K5wE$w0LVT-2nONCdRsGj$>UhC#uV`hOQtz((p7p-r$@CAyk+nXm`u<`WdE77gH83Fwb5M!7 zi{n~8ryX`7^-KBDdIQ(pN4_rKJuoZT8WZ>BsXcphZCo9OH$*VjD7nacq8f{<%|*|J zrPc*z@`^;2C;#+~rth}uFqZnO`3o;6Y!Nm?cfE{77asOrW@yzgnn;F`s`a`*=Cad2 zE0OAjOIx1`**8dkoHz73L{XK_`5CbZ=M>3!dvHcA-H4-m(anX{ zYfX1vhVPbTmz;t>;87f}tZme0*BRm)`CISG2)cz8xpbSlru4nH?6w zeG6$5@B7d*!aW^>KJrFwCU-4qgpjnL1ndecmfx-C2U1>GmSt6{LXp=im&7nFCf=oO zVZNVQ?F&(LZd*bRYwv}tZsm-ben2D?!3|;*>mBSyxDsDU8y7?jCDS`vQ|^vMVMb$? z)wHzYiZ@EDyj7KHpImq1bA1aNeRqkXZ@w60@$z4U9(DGR+UmtI>ko#9zgbBCwZUEO zyPC*X%FLSCJ+9GwDcbB^rV&nEVp@!D)WID4MblRbBTRB(2f*|X;QRmLok-vpR-i?8 z;lHx9v<0?3>G6vo?u|V!;G6f}rZYf37ieF$2-;jYl^O2yPFM7EB4jQ-z-U%-8k5LHhXQW=t6JN6=H`vi^lgAHxmO9%nrf~D0ni_kaJ=b?lu)eQEES9GwHC-Q@1JZdYGR5 zaPp1%jdXI^$;Xj2gN9D`HRQfBMAF4@giW&vBjXilntW+@t9Qf{ZU*cE#O*OH;B~b2 zT0oVJT{KF_R+Bbnl~pQvu}A10Nmxnqu>q$^Q(gP@OB8am+GGD^shTh+p(O*Ba?6*}2T*=#1uh4vP#kT#_gwQE> z<4-8P?Q&>i^MaGrDN% zi~aX$J$B2Sy6s{!ql37bc{5b9&jX*G#^+t>vFIzeLSXxb<L^5IC2==2F zUsj>e0UfSHMG)4A87gJ~EIz8~R-+~Bl9}DS;n+Bn#AB%vtNFI&c+%DjgB(wuUbO%U zH0|K%uQ(S*jthzX-GN%$w@x}+vYkxRg%1>v#nVj`w{kV9o^Z}&a*O#WHXbS-jn+g? z`fMp8F3(FFto6) z;Q0#^QpmIHlRFr-=;otB5=z7H?IHd7_|qZUhd27ggpjs>Dh=X+{=X$&s*cagCnwpH5&im5y;nJ*;0Su6I+-2BfAk5l=& z;O;3=&uJ%ha|V`XH>UEFix-8DCSyrA%Ewi`$B{p|Mj8)y2Y=;{S#N&2DJaa$dcR7^ zl=gRSv=~Y$f17_~dw+L%Z2t9Z*Hz953)F#J;Pb_-+^k@f*{D&k(YbuD65nXpQKBsU zaF1bB!4FrNd{v#Qy}Q%72d_5|240&ZP#@$hkDGGc-Ifar6k-~+OfhIt#Q6m2(P4y=AIbVgv>?oU#9Eb5@bpWMk?D_x#xzEq9^XU^^UhjbhU?ajKA_}wP zUAN|1{gZR(<=`5L%wPDF~B#xYAU&^O%^HzreGvVQcse&$f%hxo* zSUA(BybT_Ii1ml`x=0nB|0bb*55z_KW8*~`ziWU(0T4Zrr|((tE&ERYylpUq1r2Vn$DY`;d=mR+ zV=tU}y?DL$IzG7Ac2?M4-}3Dn2`+X_M?b3rk=EQR9pE!0B`oO%t`PXFf3 zToBQS2H77t_Ts=3K5wqwULo9=oS~s17w#+Inz-7Y5WziRw_oY5*d}{{lO5d#U#YNT zw~6Eb@5BFIg8w(9AdtaaUnfHm2weaU0hZAV2>gHaU}vVUGc%UtYdcmvxSVKOvbJVL zeD|r;ZquQPciatd|CA7hfvYukJvG}pyN1nP)h0gs(y1bz8ql+DRah6T`)Q>TRznyq zGj2TY{u$5CEKfl}0k}+E4GoO|EX^2DNPxRtT+^fW@@3YnA9}m(4wmmWALJ`Yov1;4 z{rbE&iBFMKWKTS!2Pj!UCIK!E86{=@M5U!|PXcEk7gjez9}rY!-{pC|wm1Kcje|qW z&8_As4-cO4P4FF22UQ?{0hG^bdwcRrP|}pZ%kKn{bfO0NDyc)Dd9}~kfg79(G_?8= z6PJ@D4rpjZtspaJwVk(GMmX<#3w^qLdhAUMUh0qW%ah7E%fsQd^&1W_V(j`8NntJA ze{%SKlu4_W+k=QcP9NHAjIwn%$yB+myQcS|USokV?jB9aMd3cRa7IzdR(!!@7JX7M zkR>AljDf2bK`B5#c+0`BiT+%^$T?7GwSmx%h-~^Z3_}vrzFv z17Pj2t4J#~yZ&^h(K*6xmBJH~0(zn*HjKUIv%eYeTbF4FOQXu4gFC>Oj%d~)HT0Y# zr}cYc*e8fTBIKF({G??1LE_Z0yf=1?IxxmoN3ZPUH0_Vr8Bb|1 zr$h4en(JVyQDF>ZIc&!EqWdeWe%9#s0#M!Dp6$dMu)PCM$nb+kuAx=<1f>hOQy!HJ zfX`>ScGzhX;RiAxJJS|v8+^ejzCe)p$I1B3xk53_49Gb_f@mZd7MRBJPiZRo*; z_DFCWLIrkV7}iA)*y9H>#FJ5sWlmiK#@vyS0Kc%rY5t#s(dZ>;*H*ta_48{fY1|Q# zmXfmi_4x_gqepulA8@Sq#Srz)|L9p2Xg3A&2&3pb9C{gPqTXzP{ucE*8VI^_LxgS- zxrc?NB|8*qie*IJUcY7FqhgaUC+e=cA{Z73x_IrR zDdoC_i{!h3K8}721XU84bqN|(iplAgdY9FWwm>`udHKOWylcGfJ4U5Z0*^&aN`E!L zduQIF@;le#^>wYygfv5e_GE+tv=CD{c*nrOMZv&k>NrE3!un=Ug@_7t!+8oTF<2Q9 zQa2iWY1mypkJ|qn;p+X`y#WtAKh@WYV!If+k4rIH+72$Gb167QWQY}*9_m7XYXG5} zvzd*_KSGr(PNwP>096nIDin80z}yuI)~czKWDU;l&HPjttGr24WNQImQ%EAWVsk$E z#^4%b6QV+oTDY)j(EqM}|MztN|MquQcs&&xHJt~ChpscO+n0c`?#pjXROUOoxb%DdnsR7G z06$>y`gM)FCukMG6cjKAB=JxEYTBX=xB$ToXZT}oZEYhg{--@yL0Q?Z>=NYv zP*Zakd5t>_>}1Pe4#+i7ZB6%drY^wZtD2QVF6(k zp)U3S!6W})<1pD)QQUwiKR@>|cAs$#fA?i4kaECx0sbm3G~kSDg{u!c1O4Lz$tVHDqim zB_?6AM)Z-I^i_5sf6pZlid^+lAm6Dy*Wz34zH6eK@=QJ5_xKCbdJlK&NS)JS6)*?N$(kY|XO+``E z1|2Oshl4gJ7~f_d)n9cGEQuOb#=sT>>=9mA$Ixf$qr7EVJrlOmdg-V9<*D?yP~uo7 zT0!TWj@8MUI80}&>m?k4Ai+U`fyOaKHEife|DyL1#GvnEGKsb>5CXu~2JXubwFh5| zPfB8w_qsS+)~=p4wSfQD`^lHbo{gZ_njQhJotpo~Kf=`8hwLJNCgVE#0b0N+W=)o}3O{ zCK}Ez-PyN2p`A*g^L33bSx^4;28#qj7dRgO_)bFSuYwoc>{?uA)Zgkqu-gR`Q{3?Z z0sfb|`vSF7q_L0^Cq-b89tGFQ^A7)X3&xWEDp8W=+$DqGfYnlbh(w!XVs6*9f1a76T!~=-M?eT500Ill4(*o_5p z?ZFIWufoMJwvDv5sCPG(%ZlBE>A>}%Yhe1f9XzF3_b=$%l5f&yvVQYMVV+@!Qo#qv zx{(c8l#J?5HytrdI0Bzor@PYul4#RPxqda1<{E7H*C6E?0`n!CdngjG;SBK?4uOJ6 zB#Gul+f#quICOKM{tTZmN1ZkqgHd4|U{nkJq1d@bqso%~nfO5caibiTR`+_-Mq04S z8Ro!VK|EgTYm6a%M}YH=ZfTJ1BJ7zOQBm-D>*uNo{mav3km%z7XSU+c=wXrz5Optf zro+ZO4YxW_uU2NQu1>&3)qxmaXe{CiJ(x0s_R#%_vuCz;1G z3b+~M>0-2PUy7gtkQ`uA41LlB&`jO`!jSOk62>e(7~$i3jyJsMY9~|i)cawX3b;+c z3yz-2hwC`25CdGXT3i=j?Mp4f zyGHVenOPbr)xdPUOS2bNItJ48)QX9dl1EvdJW;3Ne`AF_1Xlx&zf)lE{69Iw?-Qql zz<9CNxiXo=s_WBmOioXO`_NGl_ek~KZk!U}rrW&naWW|GU@$zQl}@I?Xt8N`1^OM~ z+%MVQo0&9R*VV8{9U(c+(548+dB%=Ea`LOwce3n6N>~SI&VU;}PMc!Cz0jZ7F3=Dk zF9`A{msa+M?*UMe05fr{PyGwrG{N+}npEk4a*`1d;07e-nfhk_+o@lf%c=@C;QRFH z6SaVSN_cqq#xcUMR^{&9yTD5QT+l8(4Dx}E&gB0PaZKMMqR0BPE8j1=M&-$oz@h!fZ9yT4G6 z39ApjxF1e(W3X)Yy_dc7Lt6k&14u%ybex-k-Am%PO9ItFymphk0D^3cw_a2;vGVb0 z$Gp-{U}ELuDNpH3)^bnc=8sQ|u4t@_RnL|w z%*YT26*OKaGwyhLtYA%)q{kVcKf1fsRaBy4Vq;x__`cb_|=StTEH`|jOB;O3=e zWZ+d*TE-19bpVcL7CEu%7sy5lMxjly(4S%wW$0!ugwL+PTb-oaR6)@bzr$>C7`>mK zzP`Te$q7&&cAa81Ko}-)o0fd|@ByNOwS$^ZWZFo9DqH9)sH*Df=p;N;Nztq2W?_-# zdHri3m{hEw#TRWeQDFgA88pv(KyWJIV(cACbTxY#zaMh*51LiLUT{Qv*{ z@aLMa`_9P6`;yqDb6V^yEGQ_jPq)w~#zI~OG6Gz`$G#|-auTmRi)z})?{f2MtHG?R zXuGMBDbOH5yo`xi-kE>$`KFzUyrSI{-R*)0!bt@MkFeB)y1F_WC#Ux7*Lffj$5^-$ zF7ASpk&6NS#9jUy`^Apy_wm!G%++*%lib`~gBG9qD3Dw+^MC$4=;p0ku05Q!YoL|` z2aa`I4;jI_0-km1 zh(}qC!(0gvCabl9%%4AgJllNI-QDfA^hx%pnhDJ`u8R2cx6R^BcqA08b&j%7Jsc7%(^ zV}&Ic=tD-mzW--(Y{b_d@Z=vJ7@YklT+(Mg0$LqFEr=cskzfw@td0F7SU4MyPeBYw z1k(roXmNG%2VV4gTIbJRF2pIY6(KJu^LbZuQv5Qbw2iBy)x3uXXyrgb{5Y%#6jTER)R@>@A z*sp*^0nEz361E24elc`$0;gf#VpsHLUb6iVt@|{2n*#6_W^9TYF-(@(oK>?caaAKV z+Y*6n71{5@!-u+KSpfZ&J2a#LOqUICbC#l9Akc31KG6Yz-HdO7MR(2iF$dNntdjRs z)W~~@$0%xOH}`7$FNO!uzk2m*?QAt&*V?)eYXKN#qj=BiEYmz?YNwqQ0Z0VhfFI?? zN?>ek_R`WTte<@G;)SK?3h=k1?4?avbC@0XzXf-BKwjHHY*y`yb_1CK86dFQGBPs3 znAS_oF7o>=RVxe%35wi^)#AapkH3H*B&8JCq#FAfIIu}|?Pl{`blyruI*1{#h@-iR zi4YyEOvM5TYpdV@^_fRUFpwRvUikjr745elVJa5`NWYC8b}lX*B_*ZCajZPL{Ey4y zzkx>3{XY@e|5;7^%Is%^EMC2O1fp-?@(gP2jb~Z_kz@1YZQCZ37x-rt=JDjgNo+BR%J6MvBq!rcyC1!+w^BfcsZKN8Sn#}T` zq&5ab85_sjKrn~%lr>?nsyyZ7yhKw!K?XjowRi&%gQJ*1wN1QCBz1035H2$l)7p&t z9AYZ*@AgSEPigRAxyNGC~TJ0IP@%9ba}3#>dB7pB*d%GiOycx9w&N zX5@7`9|kT{WUyiN=4t2OOz7)hpEIw~`>6S%k4GykdNz*r6PSA{;{MIDJ^6Pg^y#a2 zKq4oX#2T;`oPlb94=aQqa0CCr!8jP=VfStJmY3Tw&h|5BgBY0piAs_mGNgf@QLrr@ z2NE#$fB>@hGpp4<&ys(~)^RQjt+M{jH=ox9<{%3D#*708V65s27^lh#jAI!RfJ&RF zQw5mIstZ`6wt8TX0`7=5t_SEw3(_|dXg5rwtS(ubTQ=(e54$1d6cR;|z|Ji891vI= z>C~m=cnuprP2Ll_9Lx|xG8P#KAXbA>*&$+{O0o<873bwNb^$nFEN`_fdjpxTO2Q7P zLM#Dj-@nC`|BX<*1I&vAJSKIwuyLNZuKnOn(}U7aS#Hf&?6r>f#5Gyi_&$ zH2d4dsL}ZbQroFR-*+_jn95bTjd~}HNT)+Ma)kk67;4a18A#?h0 zSAfsg3UT-XrIt7~_BMac;V?cR??^RrcvAn{T^_)X=q6a$#U2GPCFa1rl8Y{6$OxX| z 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

4l|x82jG7!26-uV?1}&7~nRA`Survik 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 literal 0 HcmV?d00001 diff --git a/docs/assets/scatter/scatter_EG6.png b/docs/assets/scatter/scatter_EG6.png new file mode 100644 index 0000000000000000000000000000000000000000..593edc44b5f4095adcc834792204ae22d60fb8db GIT binary patch literal 18128 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 bt6aYA%PecekBN4IYE~!DoTxZ{>DPY&YKM%h diff --git a/docs/assets/scatter/scatter_eg2.png b/docs/assets/scatter/scatter_eg2.png deleted file mode 100644 index dcfa250007b09a093fa38b95c65fe27c3e31b61f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12427 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 diff --git a/docs/assets/scatter/scatter_eg4.png b/docs/assets/scatter/scatter_eg4.png deleted file mode 100644 index 739a6cb11537b146ba98390b6a45f7e9cfe033f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15001 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 diff --git a/docs/assets/scatter/scatter_eg5.png b/docs/assets/scatter/scatter_eg5.png deleted file mode 100644 index 9ad90ddb106387c930859b19dea5809438b7c979..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14987 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 CbHcU& diff --git a/docs/assets/scatter/scatter_eg6.png b/docs/assets/scatter/scatter_eg6.png deleted file mode 100644 index 747d6ebc707b483813095b63b7ef0da0c3877cd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11419 zcmeHt2UJt(+U}+(%pd|f4i*F)P-X_{0#bvbBBJ1^h)7kMNQn}930SdE#-Q{ff}o*9 zq)Cm6f&oH6N`L^dKtf0Yk`N$}@_%tWXPx`sne(5s?z(H;|E@nPYh~}9z4ur4`#$gU zJm0>3+}=j^`>o$Y5F~4R_`nGWl8}cW@kr^l;0WiJHAwIyiP&#@N*a7(rM+)~{Vkyf z&xD?Y`-VoG3-N*cg5g0vS_rQYAD>{v1$gM31lAIQR3X~~`%XpXGRI>w-NMez2??WF zR;sQcQ)t7{tyTxLZ7%L8seQN;ZxZQWbt32c8uQ0DX7ngO+!KF%C|dW{3C+b}s`Po8 zx7$jGJ$9BRoIR1GC4EM`?}zWSq>i3Cth#j67eiKQ*n8!Ate-DoV#EMLWHbE2eJe)j zO@636PJZo>U>E4=fB8xJ(NRVvK&YO$%VaO^g}T>@1yZwK0)m>)c%bmM`F78L!rfHo z)cG{6?)9t~uEL;>Zi69tIE)1)Q>cgJEfW_P78p*B*azV9b2qIzABIkd=kTTL=lz327Y6^hcADm297p2R7J5V3mnelN~!IJ z5cCpqbbO%a)$Uyow}@+9W%Tpn9W27wOF}+bsE;cei4J`arqP}-TxGK>3sqsG+8*4*nJl&0u~INp zV`E{xnef8bgFLV!)&hcbyJs5n?@uNK=3PA3QCiLUX@;rjsOTZ5cRykCNg_vJy&Mfe zo|%JTEgmTTb3@e?Y;u4H)}^XY^1#%>P6)bC@hk45S5DSmUwTuHC5ia%&P4k|KP0J+ zU}@x{^Ke3Woy+?xCo>@^;YX9=(kzdH7r(%j$T_waW)8_;y3-HMx)~dJxYxpw%|6F7 z^ybnkh*k?bY51YYX%+dmH$x@QOMA#bP#`fpJQO@O?I179;=fknAuwKg8 za`y|~_)MHs<83{DFdwvtL`aH5P~)qECyghu+nb+W7>`4nDjpsAy{*HDodKJGtL8j? zj?i8At1_w(FEM|oP0ozbESd|F;jSseQhetYxXI46(>#~_GyPWsx{oMVo2u%-Xo~uu z2R0hakN8AIyKSos+IEbv$x{v)^tyycDNdFUG#0gUeB7!#myFW4%PoJrvnfKuIje$b z8HgL|&#YT$3W_%_vDn&aE)S{o3p6NKg>g25`8msb)$WG3BxK5_rVp{?oa$!pd-8GUDwo2IDZ^ThpvC=E{7pNyX5uV&XG^UY9Ty<{V&_~FdAT)eoMhmiiAka}5Ni%K z#wh9_aimL;)Hlb>JlMw#^*^!*e%SsA&ZDp;Gp1YCB`!7M&aJpIQ@>+Bn{l2Nh)K1{ zG^`c>uqInLKN$OIblxP0<;7ivn;Uzj9@oyOOC8?+1M6!xs-osee(x&IhXOkwuP;bXsq0u zL*RL1-xFV?^Ry3ILCwbr0qm5!NVDq2cvB7*sTM!~CB0a0r$#=1)kL@*-mRB7o5pd_ z!NKA_8gRSG7AUI6GMfJy6CZkZLeMeSmDOS2rEpTiTd0@A>Sjr?I6Az!u@_&+Y*gu| zjNp1|CQneYL|IB(uw1y^On;=~>w`nAPSg>c(pX(8jV69d;gO4^g-`)gh%_Sdr}DU| zR|Mw+x(Uho)bDjA6O)5{S=#on(PfU#F5J+q!zbV)x!1Ipt3@L+yZQ(Vf?Ub8E^AW@ z)2!;S6~wSLwA5%_O5?t1a?h$7LCMmMs4ojlOyI&IqVLKpY=I1{es_xwhm+hEGS*F` zPS1xKRYVz;8LRyMv_D=C8#Q8Uvhso4wF-C3*Sa<~n}R7b_Tk7mQMg*T^i2V4jUHb> zom!pxJ;R{~J-F?CCeMJ&B`>GB8u&W)v@8nBRo;D0DiL)&t(_qly^-u8JdZwQ^5tq7 zNX01I7s+;;>x2tw z+qt&$hGC>VPLp*)OEbTGE}1pE=5BR~a+;cNiv?B}nUHF*wLtUb&uXgBqGxwmD!y;^ zlz*ilT<|eRvwCL^ds4{n;E~czlOgh1{hEzkP+}D!NG};A7AVvt#kD1@MY9>1TVHM zsJ1Tzl4-%Si}*I1PQ;p<9r@bFC&q8!$Ab^T)d+$9&C{m0K%}>8W1@zU$KJ?bu0{IV zscDiTS5Eu{hWKQzYA1Js;vB`l?(r@@uD>wqLysR~c?%ZxIR-sIPoG-d=78fm@h+BF z&PQ;|unjr{#^Sy9;?mM1@6+0Rd%F9)P|^H&U#?tz&v-x4NyFslM5V@fbYcPdb9jcp z#$yH_P#uoQV?>;B=XB0L%|DZdF4Y)$z7y|ePEn4yS0=&At|#;aM58F^IqGU$>FmPT z>Fv=W6XwhgXCB7En|}qq%JCDdkEQ> zsbghzlP`af@*`ig%WwW%7aJ3VYEO&$gliqZSmv~toUX8a{*mtS?j}6eztksZ=2wriE%2tBP1gcI2o$^L ztirexuDmQW_PaaDTbjt39O=z=8Fpm8Y%unNzz=GgL0Fx2e0~W z$UNCHT{ui@aCBbc$FK-?PTt4hD9TN9_O-X%*NL#-9RyvCim`-7W`kubJt9$j^C8&C z`*+EN<`3gL!xiM3T*BKN+NZL#nB+W_PUm6+2h)$&W6m0FNKklmdD@JP)4}6!CwH($ z5Cpue@bX1%;po-wQ6X(?Wz`R!=XAb!>uP%++g0rBq+ChxF!xl6cs*vqSV-4c-GmXo zw3c(ro-9eT-m#Nb4z+ z`tX=PmAcd=7qiU-&T22n@2T0AL;tmak9!fzX;>_1tjSA&E6Lta^lJo82EZvsnX3-vdcW z2s(b$3efYnf4+HhkKCK;veUH}l_1DUaq|hQ-SMAp|0pZsmfDVvwTvnNUJ&%dMxa%! z^uz%B{-4eNU*~~NTY!eE(P&c(NhsmmNn%)O;!8;Smi9-LA0gch+=Kp0mqlUrPs8cY zgY3WE(KkRF)_yk1oFXr`8|w!Ql`F-5d1dnHmRg8_OQmM{nG#U+OLd`W$vR(rvq?0%pTvvBFeI-9Vxwz|;BL`LZ ztaOT0;at5-CuXFJHHIL_a;tz!N#^G+K0(jCSC`xAjAhnUlKHZ>M!RTQQM+waO&N3# zVRQ;iuxu{}GW5jCeRj^KQ0Vw?P6*N-I))1%|saP3AT z&hr~VN(#`+FADNOi}R`R=87J%muDO4l{_9n7+acXEwe|_gNzCTgS`@V@0>8L<@? zS~M#2ExOfcN$s?Z(r7Mj7fJ#;WG*JAb>djT1HJQN(B_Z-7V>Sx^=(iKyXg->;S}lr z3UvS5<-;EXT6f&h(JZ*>1ToBV`IVgS`(oRyJ^m*w7YgNoBjbkT+gYp!H77aR)FL6c z+G1^Z{b!+5JjbblUfIOTn~T-34H5jc$8KfxOuJ$?}Jp9zRwZVWCu)exx}F$-?8j8lXY3Zh6xQiRN{HT z8Q6ik@W&v#_9(hFb@?P`vET3IvmSM9NwN>#22I;bj1bO!L8BY@;H+(j;7t|uhx{)6XAQdZZQsawX1W}ad|=7zO3&5N8V|T z3{BJo0gKGWs%AK5f}QUgKH?)9W4ewQ2!pY zx#nhe-drHAF6S-=jx!yv6Wyf4P+np{$aJYE&&3ZjugYk@`n4){+InmQmLN0$aS!GlsMtm}Ay#qP@a&_K$!6YLHVt(FwOZ#|q@P~9E_qlif zXokB#S>iprP)K}qkGUPpZevD(>S&vxJmW;zo7-B>rKCDp$ZA#kmO}C6&V&EUezv71 zn85I+WD`b6ZP2@@J+rBE0qMMe~}lcu65l@zP}lNcY4D!Cy}C zH-MPicc=p2>AX0wgMQxir<=Y%nVda8y3<4R?A+}#KRNbcK!og5tf0RnP=B7w-3N}@ zWuDs#d4^sRc~5`Q*q?XdUp#7&rwpmt{W;Vp-(gBXNuh)Ct>M0I#HE@*b;fB&$EWnh z{iC1i68E}GZ-P}I&l-98ngfV=4tPK=^>UEzS!wCBkG>*xe+5Yj z+N||$ZhAKiDrkseVcZgWd0_{D;Pzh>YyWZo;!61*-yRZ^)!rS|W~yji`t^31hf~u1 zbCFT#jDoSM+he9JeEY0$9P!Rj%%_==Hgi-TZt@0{WF&qy9bH1`%v?XaH!ONJNxLb# z`I&p`&v9LfS>ARF8|43fNYARw3DW}#bs8>B!*6Eb zX#=ZMGvcgZ`Ex3@+knvh=JrN|%b(ulMp3e&c=H`*1^|#Q=!xlBA*elg3O=Vgl=gnN z^K*5(3~hX}@x%)+ZmtO;1f1!|Wlf1vFU4&3MR%4#={2>rH?QGj#5Px;cf>Ng8!PAh zM-Df>x&O;a)^t%S<#+4#wy1K~27SN0u+u+koxQKV1%`}0U4G`Cgq*pqEsMt{P`|Xv z5gNnjYg_PW^a&!TSBh|JGRW1e$h}TCu0EHKq9;WyRZR2%8^8<}r(mScaDhP<0j=gJn+C?0`xfV$SwygG7IXl+2mZY(J1`d;lxvCC~L_NeAhn=tR{TR9ae zNt-si7lnyt+qhI$wzryKnX}Zo)Y9-d#q2r3a&lO9%_6 zLH%@B#~!u&%rn)c@d%IEW_Hg$cz>Y<ku8=}Oxw4JC*#B1G`9eUD#HuKD7ymvik!$KV#ukZT-gu;J4k&G6kYz;d2@zPeiO z-eM|x;5M+8zTC)15unn0dS8-#1L3m`HT`lg9}>;@76aeOMG~Cwo6YuGFYYnp@%u|H zb8%TlL1$5u11BBu;K)E>pEzU{U~=QB%-$L)DCv}_2O!cQD;sHPP}edO0A$?x?*INK z2XH`Wo%^5TfQa%Xoe~#+XlFQ=UqE>j5V7Lg68qaqy3P?VO7k9jY_qkRgr_><`;AtL z=nSpc-^>??uAxC7*-3kUf)2@uiS^z9OcGQCNcT9njm)3}Y#1;%&xe15z0ks$TN_=T zuZPy%Pk^TPC!f^5`1g|?`~4mRm=4Y`_U$oHl!V$|o6GAS=-1|+?TdDBwTQ{I(T`3Z z!VP>w?$l1|dMm25^uw~`Mce?IR;_<%H`IH`{+xJYI&J`Z$d{Dttvy<@7Gi3sCRF<9 z8$uUg-xR48Q9o-dR8x=u{pVBtl)?S7j>Q5U&GuYqBld3mLIIt z;;*Xj|GDUusEOvxEpH8IU0rBfgUUjQ+GSPkUY>{!D{a}*+7+bw&i zT{>9LdfYJIzAa)mMx-nvE?oypGO;&V0j$4~kK4bTESc=HQNiy>R6?mcH-z}~n9|F4 zpRKu2%0Z(qIv=iK0U@!t3q)iQ8f}+me&3s4M`}ba8LN+E7S~T!DP7roT~Mk4mcKxI zp_ldmhGi*!KEaoepVxq(Qb20_hFmC8@c|ukZVC@7OY&w+~*7BB!$dC}ZQ z-t0#39q3YgJeOYG-yDN1O_YMvQW7>lv`yPJMahBphyY`g=4tQO*S|Ai*7TcN?B4tU zgrlfnfjClhqaT)pYBIqECJ4%8RflpH+OaHzUQth(DZ}(^a&qmXoqP3Uz%@3`Zb%I3 z6eY*F?@+n3$>$`4=jY$v>CV(st0yC4QcP!_Z13`jyb`uyZa36c{7qln-zYC3!VrMh ze)U~%LFHDYJ>A3y!`L8$pPWoYhp?$*>k>HpT#UlvQ_n9W}`mSvT)W_MDWyxyd z3HJzw@>Wg(e^jnq$|w3s7{>}#Y|1L$W8ZMtTsII5h@VH7C&x@TUnG<NhD4-Q`z@|}(vxx#h|9eXj*wyjaFV|GMuYb2u|J>{At|7Rc z+}Q|hQ@?51>55K}eD}5mzbLdWlJwjQ0$r3Npu2ij)qaGY4$H+V^QAF_b4zqsWdkL< zJHLfZQb$f(t8~VYS0_a4^xL=YgxU)Kf#2shs3s^74upIK7oYZ|E!;1Ouw3=1x0>$v z;Bj;pvvgq>mS?97WJl~uf5Gg4{1qep!r|$Dpsr5oz(xq$H`g9jH@5m~j-ifwTAH5? zI=#b2B`y>-bTsAs)lI`@S;yCTPKy|nrUnWCLXA+c>NnN-z~swIi8OTrOc=W!#`{w4 zQm<_rzFKK#%}oRj86!@FQW0GvIt@LU5#$-;_fU){s4U$F#`kIDUfTcT?lZpwg5}4V z8RSmez_K?w@Mvbi17R)wL95h+dvC9whmuYM5Dspnm5jv;`69AWax5oZN+niT^h5v% z*JOS77TR3ldceX8gXEMUI<`mrfSH>HvPSK;nuyTu*ZUjC{Xyaz$NhSUXa%i9iLOnS zlzb@6 z5$0A)z~+9b{0-l~oeb^FuV+J=ARa;k7#%z~nSWC~zR~wnu*f zmh}KLNg@lv=R+W9+E@JiEm2gHf}4VRyTqV}IeTyTOSi5JVkpC2srY*~$|g^y0JR7L zbmMASW#g{}t7Fu)ElLTqCrtN^Z*(FkQ|>{bp!OF7fuxqG9DO0hgp#>WOUm;SBUd6c z9sI#%Q$>no%YvxALzRHGG|e_@Iy#EL;M!SWHjN*#TKAgAWh3U_D#}Hh025FXsE*e# zem_js|Ld-e>YoXI%1;+TVccK_ef?WZ{@+;LFxVKD@dS+h5;k z`M2)0QNGAZWT+M4$0Nvj##k=i1k8EJ8wHz5;0EJ6A849cl-ErQ5h_72p_|3hwe_Y? z`r9tv73nmevDa(u|x^CGiVLTlf>7k0{Y=N zt=)Vx*j5jjE$-I1FW-2pE(49;`kPMfwW@IDs8aNFp>ut(TWO*`gV!8CBMXnT4sK%B zDFGiTPr3714sg_z0hv?^dAGwB^+3~!QeNHD`RL$XQ}gGGBmHFlJs!Mhp&|JV@%6aH z(mft~qH@6`rG&WOz5FjIujjxS(4Hmdsl!x8JU7G4;(lG0Y1qZ~RFwiz?JM9-YV;F{ zMB0wpaVPA`pi&H@s%Qq*EhsfO^*5f(2x|T@TI+h@3|J_6xV>)f_;%2{hNX!ZGxO}l zVFBsMu^gkRkBKThU`_?QJzC8RmfvWII@~yeE@L$i;wt;wF64|<`}qN8&0X$*<$KeA zIR;!x=9eeKE|FRbXQeAXNJ|#&cOyp4Hc(ko@n594d1P*$yrJQfLduM=8Kyw{s(!tV|cN8;LF2z$gqXIhysJcCISp%h~B#`Lp}1 zbT2A}_U_}pl(PI?N;&djzcuaFp`v@2KevZPZw@ky7w|;oow1-hdJ%ZLB9+Z%R10qFUq$pKx^a?au6@71j&_%Y+3$!)Flf*uWWb zL2w40sCP6grx%`0>tb%W%h-?tcC^`9C5iLNYSG0lQj7Vy5ff1jAFj&i`@b(1k@}XF z7A}tpBa0g5QVR-XbeeTfmfGXNT1}R5^G8|dXP)~+(aok32yYcV#%Ski#=&xRNc$GQ zNgtgU=inC~Z;l~XnI_;RKU2`b;r@W}!$_^Me#AB$=0;5PtQxoW+2q{9g*Ywm$f#{j zz!v=2oU94(P2r!oiT|RN_dj>|cPGkolJtIVD5JQ6c^cldiN2-tXVJPP&eC>~xl|?O zS6Pp*1+rP)1+}niq=xA=S4WWj^(XX>b;TMm*&CPnmcdvoU)1J9M4fklc_21uESxkj z_n8tzXZ9TrpRLb0f*`fGdk5f8@za-NFK+{{i}nV>#H&nT7T;I#LrcU|u56y^i8F9f zE7WO9No1Y_qA0X|F^l0bP=JAXC1;LI!p_falRiH}uV)AJ& zP2sk{7VE(y;pY1Q From bd5936e22e7fc0048e4d4e74ca1d13c6808927f4 Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Sat, 23 Dec 2023 06:51:49 +0530 Subject: [PATCH 12/12] "refactor: Change version to 1.1.0." --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7f99ab6..c7b72db 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.manishdait jplotlib - 1.1.0-beta + 1.1.0 jplotlib https://github.com/ManishDait/jplotlib