diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/Aggregate.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/Aggregate.java index 16ceebd..7dfa279 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/Aggregate.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/Aggregate.java @@ -5,19 +5,29 @@ package org.lucares.pdb.plot.api; * drawn. */ public enum Aggregate { - BAR, + BAR("Bar"), - PARALLEL, + PARALLEL("Parallel Requests"), - SCATTER, + SCATTER("Scatter"), /** * Empirical cumulative distribution functions * * @see https://serialmentor.com/dataviz/ecdf-qq.html */ - CUM_DISTRIBUTION, + CUM_DISTRIBUTION("Cumulative Distribution"), - HISTOGRAM, + HISTOGRAM("Histogram"); + + private final String axisLabel; + + private Aggregate(final String axisLabel) { + this.axisLabel = axisLabel; + } + + public String getAxisLabel() { + return axisLabel; + } } diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggregateHandler.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggregateHandler.java index 0e99cac..7c12d9d 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggregateHandler.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggregateHandler.java @@ -36,7 +36,7 @@ public abstract class AggregateHandler implements Appender { } } - public GnuplotAxis getyAxis() { + public GnuplotAxis getYAxis() { return yAxis; } @@ -50,8 +50,6 @@ public abstract class AggregateHandler implements Appender { abstract AxisSettings createXAxisSettings(GnuplotSettings settings, Collection dataSeries); - abstract AxisSettings createYAxisSettings(GnuplotSettings settings, Collection dataSeries); - abstract String addPlot(CustomAggregator aggregator, LineStyle lineStyle, Optional title); abstract CustomAggregator createCustomAggregator(Path tmpDir, PlotSettings plotSettings, long fromEpochMilli, diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggregateHandlerCollection.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggregateHandlerCollection.java index 33cc088..6f8d20d 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggregateHandlerCollection.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/AggregateHandlerCollection.java @@ -4,11 +4,13 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; -import java.util.EnumSet; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Optional; import org.lucares.recommind.logs.AxisSettings; +import org.lucares.recommind.logs.AxisTime; import org.lucares.recommind.logs.DataSeries; import org.lucares.recommind.logs.GnuplotAxis; import org.lucares.recommind.logs.GnuplotSettings; @@ -32,18 +34,18 @@ public class AggregateHandlerCollection { } private void updateAxisForHandlers(final GnuplotAxis axis) { - final EnumSet result = EnumSet.noneOf(Type.class); + final Map result = new HashMap<>(); for (final AggregateHandler handler : aggregateHandlers) { final Type type = handler.getAxisType(axis); if (result.isEmpty()) { - result.add(type); + result.put(type, axis); } else { - final boolean containsType = result.contains(type); - if (containsType) { + final GnuplotAxis previouslyUsedAxis = result.get(type); + if (previouslyUsedAxis != null) { // already has an axis of this type - // TODO merge axis definitions and use the greater values for: range, - // ticsIncrement + handler.updateAxis(previouslyUsedAxis); + result.put(type, previouslyUsedAxis); } else { Preconditions.checkSmaller(result.size(), 2, "At most two different axis are supported. " @@ -51,7 +53,7 @@ public class AggregateHandlerCollection { + "-axis. Remove one or more plot types."); final GnuplotAxis mirrorAxis = axis.mirrorAxis(); handler.updateAxis(mirrorAxis); - result.add(type); + result.put(type, mirrorAxis); } } } @@ -70,10 +72,21 @@ public class AggregateHandlerCollection { public List getYAxisDefinitions(final GnuplotSettings settings, final Collection dataSeries) { final List result = new ArrayList<>(); + + final Map usedYAxises = new HashMap<>(); for (final AggregateHandler handler : aggregateHandlers) { - final AxisSettings axis = handler.createYAxisSettings(settings, dataSeries); + final String label = handler.getAggregateType().getAxisLabel(); + final GnuplotAxis yAxis = handler.getYAxis(); + usedYAxises.compute(yAxis, (k, v) -> v == null ? label : v + "/" + label); + } + + for (final GnuplotAxis gnuplotAxis : usedYAxises.keySet()) { + final String label = usedYAxises.get(gnuplotAxis); + final AxisSettings axis = AxisTime.createYAxis(settings, gnuplotAxis, dataSeries); + axis.setLabel(axis.getLabel() + " (" + label + ")"); result.add(axis); } + return result; } diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/BarChartHandler.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/BarChartHandler.java index 6566ffc..18dea65 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/BarChartHandler.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/BarChartHandler.java @@ -8,7 +8,6 @@ import java.util.Locale; import java.util.Optional; import org.lucares.recommind.logs.AxisSettings; -import org.lucares.recommind.logs.AxisTime; import org.lucares.recommind.logs.DataSeries; import org.lucares.recommind.logs.GnuplotAxis; import org.lucares.recommind.logs.GnuplotLineType; @@ -57,13 +56,6 @@ public class BarChartHandler extends AggregateHandler { return result; } - @Override - AxisSettings createYAxisSettings(final GnuplotSettings settings, final Collection dataSeries) { - - final AxisSettings result = AxisTime.createYAxis(settings, getyAxis(), dataSeries); - return result; - } - @Override String beforePlot(final CustomAggregator aggregator, final GnuplotSettings settings) { final StringBuilder result = new StringBuilder(); diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/CumulativeDistributionHandler.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/CumulativeDistributionHandler.java index 4241f63..6c24455 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/CumulativeDistributionHandler.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/CumulativeDistributionHandler.java @@ -5,7 +5,6 @@ import java.util.Collection; import java.util.Optional; import org.lucares.recommind.logs.AxisSettings; -import org.lucares.recommind.logs.AxisTime; import org.lucares.recommind.logs.DataSeries; import org.lucares.recommind.logs.GnuplotAxis; import org.lucares.recommind.logs.GnuplotSettings; @@ -37,13 +36,6 @@ public class CumulativeDistributionHandler extends AggregateHandler { } } - @Override - public AxisSettings createYAxisSettings(final GnuplotSettings settings, final Collection dataSeries) { - final AxisSettings result = AxisTime.createYAxis(settings, getyAxis(), dataSeries); - result.setAxis(getyAxis()); - return result; - } - @Override public AxisSettings createXAxisSettings(final GnuplotSettings settings, final Collection dataSeries) { final AxisSettings result = new AxisSettings(); diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/HistogramHandler.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/HistogramHandler.java index 6c87d41..9e2166d 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/HistogramHandler.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/HistogramHandler.java @@ -5,7 +5,6 @@ import java.util.Collection; import java.util.Optional; import org.lucares.recommind.logs.AxisSettings; -import org.lucares.recommind.logs.AxisTime; import org.lucares.recommind.logs.DataSeries; import org.lucares.recommind.logs.GnuplotAxis; import org.lucares.recommind.logs.GnuplotSettings; @@ -43,21 +42,6 @@ public class HistogramHandler extends AggregateHandler { return result; } - @Override - AxisSettings createYAxisSettings(final GnuplotSettings settings, final Collection dataSeries) { - final AxisSettings result = AxisTime.createYAxis(settings, getyAxis(), dataSeries); - result.setLabel("Histogram - Count"); - return result; - -// final AxisSettings result = new AxisSettings(); -// result.setLabel("Histogram - Count"); -// result.setType(Type.HistogramCount); -// result.setAxis(getyAxis()); -// result.setTicsEnabled(true); -// result.setFrom("0"); -// return result; - } - @Override String addPlot(final CustomAggregator aggregator, final LineStyle lineStyle, final Optional title) { final AggregatedData aggregatedData = aggregator.getAggregatedData(); diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ParallelRequestsAggregate.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ParallelRequestsAggregate.java index 83a506e..0e962bd 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ParallelRequestsAggregate.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ParallelRequestsAggregate.java @@ -29,13 +29,6 @@ public class ParallelRequestsAggregate extends AggregateHandler { } } - @Override - public AxisSettings createYAxisSettings(final GnuplotSettings settings, final Collection dataSeries) { - - final AxisSettings result = AxisTime.createYAxis(settings, getyAxis(), dataSeries); - return result; - } - @Override public AxisSettings createXAxisSettings(final GnuplotSettings settings, final Collection dataSeries) { final AxisSettings result = AxisTime.createXAxis(settings); diff --git a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ScatterAggregateHandler.java b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ScatterAggregateHandler.java index 4e4d88c..3027f18 100644 --- a/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ScatterAggregateHandler.java +++ b/pdb-plotting/src/main/java/org/lucares/pdb/plot/api/ScatterAggregateHandler.java @@ -29,13 +29,6 @@ public class ScatterAggregateHandler extends AggregateHandler { } } - @Override - public AxisSettings createYAxisSettings(final GnuplotSettings settings, final Collection dataSeries) { - final AxisSettings result = AxisTime.createYAxis(settings, getyAxis(), dataSeries); - - return result; - } - @Override public AxisSettings createXAxisSettings(final GnuplotSettings settings, final Collection dataSeries) { final AxisSettings result = AxisTime.createXAxis(settings); @@ -60,7 +53,7 @@ public class ScatterAggregateHandler extends AggregateHandler { public CustomAggregator createCustomAggregator(final Path tmpDir, final PlotSettings plotSettings, final long fromEpochMilli, final long toEpochMilli) { - return new ScatterAggregator(tmpDir, plotSettings, getyAxis(), fromEpochMilli, toEpochMilli); + return new ScatterAggregator(tmpDir, plotSettings, getYAxis(), fromEpochMilli, toEpochMilli); } @Override