package eu.choreos.vv.chart.creator; import java.util.List; import org.jfree.chart.ChartPanel; import org.jfree.chart.renderer.xy.DeviationRenderer; import org.jfree.data.xy.AbstractIntervalXYDataset; import org.jfree.data.xy.YIntervalSeries; import org.jfree.data.xy.YIntervalSeriesCollection; import eu.choreos.vv.aggregations.Mean; import eu.choreos.vv.aggregations.StandardDeviation; import eu.choreos.vv.chart.LineChart; import eu.choreos.vv.data.ExperimentReport; import eu.choreos.vv.data.PlotData; import eu.choreos.vv.data.StatisticalData; import eu.choreos.vv.data.Statistics; public class MeanChartCreator implements ChartCreator { /* * (non-Javadoc) * * @see * eu.choreos.vv.chart.creator.ChartCreator#createPlotData(eu.choreos.vv * .data.ExperimentReport, int) */ @Override public PlotData createPlotData(ExperimentReport report, int paramIdx) { StatisticalData data = new StatisticalData(); data.setName(report.getName().toString()); for (Number index : report.keySet()) { Statistics stat = new Statistics(); stat.setMean((new Mean()).aggregate(report.get(index) .getMeasurements("responseTime"))); stat.setStandardDeviation((new StandardDeviation()) .aggregate(report.get(index).getMeasurements("responseTime"))); data.put(report.get(index).getParameters().get(paramIdx) .doubleValue(), stat); } return data; } /* * (non-Javadoc) * * @see eu.choreos.vv.chart.creator.ChartCreator#createChart(java.util.List, * java.lang.String, java.lang.String, java.lang.String) */ @Override public ChartPanel createChart(List<PlotData> plotData, String title, String xLabel, String yLabel) { YIntervalSeriesCollection dataset = new YIntervalSeriesCollection(); for (PlotData report : plotData) { createDataset(dataset, (StatisticalData)report); } return LineChart.createChart(title, plotData, xLabel, "mean of " + yLabel, dataset, new DeviationRenderer(true, true)); } private static void createDataset(YIntervalSeriesCollection dataset, StatisticalData report) { YIntervalSeries series = new YIntervalSeries(report.getName()); // for (int i = 0; i < report.size(); i++) { for (Double x: report.keySet()) { Double y = report.get(x).getMean(); Double sd = report.get(x).getStandardDeviation(); series.add(x, y, y-sd, y+sd); } dataset.addSeries(series); } }