use y1/y2 axis definitions
This commit is contained in:
@@ -9,10 +9,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
public class AxisSettings {
|
||||
|
||||
public enum Type {
|
||||
Number, Time, Duration, Percent, HistogramBin, HistogramCount, Group
|
||||
}
|
||||
|
||||
private String format = "";
|
||||
|
||||
private String label = "";
|
||||
|
||||
@@ -9,7 +9,6 @@ import org.lucares.collections.LongList;
|
||||
import org.lucares.pdb.api.DateTimeRange;
|
||||
import org.lucares.pdb.plot.api.AxisScale;
|
||||
import org.lucares.pdb.plot.api.YAxisDefinition;
|
||||
import org.lucares.recommind.logs.AxisSettings.Type;
|
||||
|
||||
public class AxisTime {
|
||||
public static AxisSettings createXAxis(final GnuplotSettings settings) {
|
||||
@@ -40,22 +39,21 @@ public class AxisTime {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static AxisSettings createYAxis(final GnuplotSettings settings, final Collection<DataSeries> dataSeries) {
|
||||
|
||||
final GnuplotAxis yAxis = GnuplotAxis.Y1; // TODO get yAxis as parameter
|
||||
|
||||
final AxisSettings result = new AxisSettings();
|
||||
result.setLabel("Duration");
|
||||
result.setType(Type.Duration);
|
||||
result.setAxis(yAxis);
|
||||
result.setTicsEnabled(true);
|
||||
public static AxisSettings createYAxis(final GnuplotSettings settings, final GnuplotAxis yAxis,
|
||||
final Collection<DataSeries> dataSeries) {
|
||||
|
||||
final YAxisDefinition yAxisDefinition = settings.getYAxisDefinition(yAxis);
|
||||
|
||||
final AxisSettings result = new AxisSettings();
|
||||
result.setLabel(yAxisDefinition.getRangeUnit().getLabel());
|
||||
result.setType(yAxisDefinition.getRangeUnit().getType());
|
||||
result.setAxis(yAxis);
|
||||
result.setTicsEnabled(true);
|
||||
|
||||
final int graphOffset = yAxisDefinition.getAxisScale() == AxisScale.LINEAR ? 0 : 1;
|
||||
if (yAxisDefinition.hasRange()) {
|
||||
final long min = Math.max(yAxisDefinition.getRangeMinInMs(), graphOffset);
|
||||
final long max = yAxisDefinition.getRangeMaxInMs();
|
||||
final long min = Math.max(yAxisDefinition.getRangeMinForUnit(), graphOffset);
|
||||
final long max = yAxisDefinition.getRangeMaxForUnit();
|
||||
result.setFrom(String.valueOf(min));
|
||||
result.setTo(String.valueOf(max));
|
||||
} else {
|
||||
|
||||
@@ -203,7 +203,7 @@ public class Plotter {
|
||||
}
|
||||
|
||||
static String title(final Tags tags, final CsvSummary csvSummary) {
|
||||
// FIXME title must be computed by the AggregateHandler, because it is the only
|
||||
// TODO title must be computed by the AggregateHandler, because it is the only
|
||||
// one knowing how many values are plotted
|
||||
final StringBuilder result = new StringBuilder(tags.asValueString());
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package org.lucares.recommind.logs;
|
||||
|
||||
public enum Type {
|
||||
Number, Time, Duration, Percent, HistogramBin, HistogramCount, Group
|
||||
}
|
||||
@@ -25,28 +25,31 @@ class YAxisTicks {
|
||||
final long yRangeMax;
|
||||
final long yRangeMin;
|
||||
if (yAxisDefinition.hasRange()) {
|
||||
yRangeMin = yAxisDefinition.getRangeMinInMs();
|
||||
yRangeMax = yAxisDefinition.getRangeMaxInMs();
|
||||
yRangeMin = yAxisDefinition.getRangeMinForUnit();
|
||||
yRangeMax = yAxisDefinition.getRangeMaxForUnit();
|
||||
} else {
|
||||
yRangeMin = 0;
|
||||
yRangeMax = DataSeries.maxValue(dataSeries);
|
||||
}
|
||||
final int height = settings.getHeight();
|
||||
|
||||
switch (yAxisDefinition.getAxisScale()) {
|
||||
case LINEAR:
|
||||
result = computeLinearYTicks(height, yRangeMin, yRangeMax);
|
||||
break;
|
||||
case LOG10:
|
||||
result = computeLog10YTicks(height, yRangeMin, yRangeMax);
|
||||
break;
|
||||
default:
|
||||
// use the default
|
||||
if (yAxisDefinition.getRangeUnit().isTime()) {
|
||||
|
||||
switch (yAxisDefinition.getAxisScale()) {
|
||||
case LINEAR:
|
||||
result = computeLinearYTicksTime(height, yRangeMin, yRangeMax);
|
||||
break;
|
||||
case LOG10:
|
||||
result = computeLog10YTicksTime(height, yRangeMin, yRangeMax);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException("unhandled value: " + yAxisDefinition.getRangeUnit());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static List<String> computeLog10YTicks(final int height, final long yRangeMin, final long yRangeMax) {
|
||||
private static List<String> computeLog10YTicksTime(final int height, final long yRangeMin, final long yRangeMax) {
|
||||
|
||||
final List<String> ticsLabels = Arrays.asList(//
|
||||
"\"1ms\" 1", //
|
||||
@@ -86,7 +89,7 @@ class YAxisTicks {
|
||||
return ticsLabels;
|
||||
}
|
||||
|
||||
private static List<String> computeLinearYTicks(final long height, final long yRangeMinInMs,
|
||||
private static List<String> computeLinearYTicksTime(final long height, final long yRangeMinInMs,
|
||||
final long yRangeMaxInMs) {
|
||||
|
||||
final long plotHeight = height - GnuplotSettings.GNUPLOT_TOP_BOTTOM_MARGIN;
|
||||
|
||||
Reference in New Issue
Block a user