make computation of mean value optional
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package org.lucares.pdb.plot.api;
|
||||
|
||||
public enum AggreateInternal {
|
||||
NONE, MEAN
|
||||
}
|
||||
@@ -32,6 +32,8 @@ public class PlotSettings {
|
||||
|
||||
private AxisScale yAxisScale;
|
||||
|
||||
private AggreateInternal aggregate;
|
||||
|
||||
public String getQuery() {
|
||||
return query;
|
||||
}
|
||||
@@ -156,6 +158,14 @@ public class PlotSettings {
|
||||
public String toString() {
|
||||
return "PlotSettings [query=" + query + ", height=" + height + ", width=" + width + ", groupBy=" + groupBy
|
||||
+ ", limitBy=" + limitBy + ", limit=" + limit + ", dateFrom=" + dateFrom + ", dateRange=" + dateRange
|
||||
+ ", axisScale=" + yAxisScale + "]";
|
||||
+ ", axisScale=" + yAxisScale + ", aggregate="+aggregate+"]";
|
||||
}
|
||||
|
||||
public void setAggregate(AggreateInternal aggregate) {
|
||||
this.aggregate = aggregate;
|
||||
}
|
||||
|
||||
public AggreateInternal getAggregate() {
|
||||
return aggregate;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.lucares.recommind.logs;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.lucares.pdb.plot.api.AggreateInternal;
|
||||
import org.lucares.pdb.plot.api.AxisScale;
|
||||
|
||||
public class GnuplotFileGenerator {
|
||||
@@ -13,7 +14,20 @@ public class GnuplotFileGenerator {
|
||||
appendfln(result, "set terminal %s noenhanced size %d,%d", settings.getTerminal(), settings.getWidth(),
|
||||
settings.getHeight());
|
||||
|
||||
|
||||
|
||||
appendfln(result, "set datafile separator \"%s\"", settings.getDatafileSeparator());
|
||||
|
||||
int count = 1;
|
||||
if (settings.getAggregate() != AggreateInternal.NONE)
|
||||
{
|
||||
for (final DataSeries dataSerie : dataSeries) {
|
||||
|
||||
appendfln(result, "stats '%s' using 2 prefix \"A%d\"", dataSerie.getDataFile(),count);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
appendfln(result, "set timefmt '%s'", settings.getTimefmt());
|
||||
|
||||
appendfln(result, "set xdata time");
|
||||
@@ -21,6 +35,7 @@ public class GnuplotFileGenerator {
|
||||
appendfln(result, "set xlabel \"%s\"", settings.getXlabel());
|
||||
appendfln(result, "set xtics rotate by %d", settings.getRotateXAxisLabel());
|
||||
appendfln(result, "set xrange [\"%s\":\"%s\"]", settings.getDateFrom(), settings.getDateTo());
|
||||
appendfln(result, "set yrange [\"1\":]");
|
||||
|
||||
appendfln(result, "set ylabel \"%s\"", settings.getYlabel());
|
||||
if (settings.getYAxisScale() == AxisScale.LOG10) {
|
||||
@@ -29,12 +44,19 @@ public class GnuplotFileGenerator {
|
||||
appendfln(result, "set logscale y 2");
|
||||
}
|
||||
|
||||
appendfln(result, "set grid");
|
||||
appendfln(result, "set output \"%s\"", settings.getOutput().toAbsolutePath().toString().replace("\\", "/"));
|
||||
appendf(result, "plot ");
|
||||
|
||||
count = 1;
|
||||
for (final DataSeries dataSerie : dataSeries) {
|
||||
appendfln(result, "'%s' using 1:2 title '%s' with points, \\", dataSerie.getDataFile(),
|
||||
dataSerie.getTitle());
|
||||
if (settings.getAggregate() == AggreateInternal.MEAN) {
|
||||
appendfln(result, "A%d_mean title '%s Mean', \\", count, dataSerie.getTitle(),
|
||||
dataSerie.getTitle());
|
||||
}
|
||||
count++;
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.lucares.recommind.logs;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
import org.lucares.pdb.plot.api.AggreateInternal;
|
||||
import org.lucares.pdb.plot.api.AxisScale;
|
||||
|
||||
public class GnuplotSettings {
|
||||
@@ -30,6 +31,7 @@ public class GnuplotSettings {
|
||||
private AxisScale yAxisScale;
|
||||
private String dateFrom;
|
||||
private String dateTo;
|
||||
private AggreateInternal aggregate;
|
||||
|
||||
public GnuplotSettings(final Path output) {
|
||||
this.output = output;
|
||||
@@ -135,6 +137,14 @@ public class GnuplotSettings {
|
||||
return dateTo;
|
||||
}
|
||||
|
||||
public void setAggregate(AggreateInternal aggregate) {
|
||||
this.aggregate = aggregate;
|
||||
}
|
||||
|
||||
public AggreateInternal getAggregate() {
|
||||
return aggregate;
|
||||
}
|
||||
|
||||
// plot 'sample.txt' using 1:2 title 'Bytes' with linespoints 2
|
||||
|
||||
}
|
||||
|
||||
@@ -116,6 +116,7 @@ public class Plotter {
|
||||
defineXAxis(gnuplotSettings, plotSettings.dateFrom(), plotSettings.dateTo());
|
||||
|
||||
gnuplotSettings.setYAxisScale(plotSettings.getYAxisScale());
|
||||
gnuplotSettings.setAggregate(plotSettings.getAggregate());
|
||||
gnuplot.plot(gnuplotSettings, dataSeries);
|
||||
|
||||
return new PlotResult(outputFile.getFileName(), dataSeries);
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package org.lucares.pdbui;
|
||||
|
||||
import org.lucares.pdb.plot.api.AggreateInternal;
|
||||
import org.lucares.pdb.plot.api.AxisScale;
|
||||
import org.lucares.pdb.plot.api.Limit;
|
||||
import org.lucares.pdb.plot.api.PlotSettings;
|
||||
import org.lucares.pdbui.domain.Aggregate;
|
||||
import org.lucares.pdbui.domain.LimitBy;
|
||||
import org.lucares.pdbui.domain.PlotRequest;
|
||||
import org.lucares.pdbui.domain.YAxis;
|
||||
@@ -21,10 +23,19 @@ class PlotSettingsTransformer {
|
||||
result.setDateFrom(request.getDateFrom());
|
||||
result.setDateRange(request.getDateRange());
|
||||
result.setYAxisScale(toAxisScale(request.getAxisScale()));
|
||||
result.setAggregate(toAggregateInternal(request.getAggregate()));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static AggreateInternal toAggregateInternal(Aggregate aggregate) {
|
||||
switch (aggregate) {
|
||||
case NONE:return AggreateInternal.NONE;
|
||||
case MEAN:return AggreateInternal.MEAN;
|
||||
}
|
||||
throw new IllegalStateException("unhandled enum: " + aggregate);
|
||||
}
|
||||
|
||||
private static AxisScale toAxisScale(final YAxis yAxis) {
|
||||
switch (yAxis) {
|
||||
case LINEAR:
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package org.lucares.pdbui.domain;
|
||||
|
||||
public enum Aggregate {
|
||||
NONE, MEAN
|
||||
}
|
||||
@@ -21,6 +21,8 @@ public class PlotRequest {
|
||||
|
||||
private String dateRange;
|
||||
|
||||
private Aggregate aggregate = Aggregate.NONE;
|
||||
|
||||
public String getQuery() {
|
||||
return query;
|
||||
}
|
||||
@@ -100,4 +102,12 @@ public class PlotRequest {
|
||||
public void setAxisScale(final YAxis yAxis) {
|
||||
this.yAxis = yAxis;
|
||||
}
|
||||
|
||||
public void setAggregate(Aggregate aggregate) {
|
||||
this.aggregate = aggregate;
|
||||
}
|
||||
|
||||
public Aggregate getAggregate() {
|
||||
return aggregate;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,6 +182,7 @@ function plot(event){
|
||||
request['dateFrom'] = $('#search-date-from').val();
|
||||
request['dateRange'] = $('#search-date-range').val();
|
||||
request['axisScale'] = $('#search-y-axis-scale').val();
|
||||
request['aggregate'] = $('#show-aggregate').val();
|
||||
|
||||
|
||||
var success = function(response){
|
||||
|
||||
@@ -47,13 +47,19 @@
|
||||
<option value="1 month">
|
||||
</datalist>
|
||||
|
||||
<label for="search-y-axis-scale">y-axis:</label>
|
||||
<label for="search-y-axis-scale">Y-Axis:</label>
|
||||
<select id="search-y-axis-scale">
|
||||
<option value="LINEAR" selected="selected">linear</option>
|
||||
<option value="LOG10">log 10</option>
|
||||
<option value="LOG2">log 2</option>
|
||||
</select>
|
||||
|
||||
<label for="show-aggregate">Aggregate:</label>
|
||||
<select id="show-aggregate">
|
||||
<option value="NONE" selected="selected">-</option>
|
||||
<option value="MEAN">Mean</option>
|
||||
</select>
|
||||
|
||||
<button id="search-submit"><i class="fa fa-area-chart" aria-hidden="true"></i> Plot</button>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user