Example usage for org.jfree.chart.plot IntervalMarker setAlpha

List of usage examples for org.jfree.chart.plot IntervalMarker setAlpha

Introduction

In this page you can find the example usage for org.jfree.chart.plot IntervalMarker setAlpha.

Prototype

public void setAlpha(float alpha) 

Source Link

Document

Sets the alpha transparency that should be used when drawing the marker, and sends a MarkerChangeEvent to all registered listeners.

Usage

From source file:cz.dfi.multiplegraphscomponent.SelectionHighlighter.java

@Override
public void resultChanged(LookupEvent ev) {
    Lookup l = FileLookup.getDefault();//from   w ww  .j  a v  a 2 s .  co  m
    TimeValueSelection value = l.lookup(TimeValueSelection.class);
    plot.clearDomainMarkers();
    if (value != null) { //To millis conversion
        ValueMarker valueMarker = new ValueMarker(value.getSelectedValue().getRecorderValue() / 1_000_000);
        plot.addDomainMarker(valueMarker);
        valueMarker.setPaint(ORANGE);
        return;
    }
    TimeIntervalSelection interval = l.lookup(TimeIntervalSelection.class);
    if (interval != null) {
        long l1 = interval.getSelectedInterval().t1.getRecorderValue();
        long l2 = interval.getSelectedInterval().t2.getRecorderValue();
        IntervalMarker marker = new IntervalMarker(l1 / 1_000_000, l2 / 1_000_000);
        marker.setPaint(ORANGE);
        marker.setAlpha(.3f);
        plot.addDomainMarker(marker);
    }

}

From source file:com.devoteam.srit.xmlloader.core.report.derived.DerivedCounter.java

public JFreeChart getTimeChart() {
    double[] graphTable = this.counter.graphDataset.getGraphArray();

    double[] weightTable = null;
    if (this instanceof StatValue) {
        weightTable = ((StatValue) this).eventCounter.graphDataset.getGraphArray();
    }//  w  w  w  .ja va2s  . c  o  m

    TimeSeries timeSeries = new TimeSeries("", FixedMillisecond.class);

    double hits = 0;

    long offset;
    boolean absoluteDate = Config.getConfigByName("tester.properties").getBoolean("stats.CHARTS_ABSOLUTE_DATE",
            false);
    if (absoluteDate) {
        offset = reportZeroTimestamp;
    } else {
        offset = 0;
    }
    for (int i = 0; i < graphTable.length; i++) {
        long timestamp = offset + i * this.counter.graphDataset.graphParameters.graphPeriod;
        timeSeries.add(new FixedMillisecond(timestamp), graphTable[i], false);
    }

    JFreeChart chart = ChartFactory.createXYAreaChart(null, // chart title
            null, // domain axis label
            null, // range axis label
            new TimeSeriesCollection(timeSeries), // data
            PlotOrientation.VERTICAL, // orientation
            false, // include legend
            false, // tooltips
            false // urls
    );
    if (null != mean && null != std_dv) {
        chart.getXYPlot().addRangeMarker(new ValueMarker(mean));
        IntervalMarker intervalMarker = new IntervalMarker(mean - std_dv / 2, mean + std_dv / 2);
        intervalMarker.setAlpha(0.3f);
        chart.getXYPlot().addRangeMarker(intervalMarker);
    }

    chart.getXYPlot().setDomainAxis(new DateAxis());
    DateAxis axis = (DateAxis) chart.getXYPlot().getDomainAxis();
    DateFormat dateFormat;

    if (absoluteDate) {
        dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss");
        axis.setVerticalTickLabels(true);
    } else {
        dateFormat = new SimpleDateFormat("HH:mm:ss");
        dateFormat.setTimeZone(new SimpleTimeZone(0, "GMT"));
    }
    axis.setDateFormatOverride(dateFormat);

    chart.setBackgroundPaint(Color.WHITE);
    return chart;
}

From source file:grafix.graficos.eixos.Eixo.java

protected IntervalMarker gerarIntervalMarker(final MarcaGrafica m, JanelaGraficos janela) {
    try {//from  w w w .  j  a v a 2  s  .c o m
        IntervalMarker im = new IntervalMarker(m.getInicioNoGrafico(janela).getFirstMillisecond(),
                m.getFimNoGrafico(janela).getFirstMillisecond());
        im.setLabelOffsetType(LengthAdjustmentType.EXPAND);
        im.setPaint(m.getCor());
        im.setStroke(new BasicStroke(1.4f));
        if (!m.getFim().equals(m.getInicio())) {
            im.setAlpha(.2f);
            im.setLabelFont(new Font("SansSerif", Font.BOLD, 11));
        } else {
            im.setAlpha(.9f);
            im.setLabelFont(new Font("SansSerif", Font.PLAIN, 11));
        }
        im.setLabel(m.getTag());
        im.setLabelPaint(m.getCor());
        im.setLabelAnchor(RectangleAnchor.TOP_LEFT);
        im.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
        return im;
    } catch (Exception e) {
        return null;
    }
}

From source file:ec.ui.view.MarginView.java

private void addPrecisionMarkers() {
    TsData tmp = data.series.fittoDomain(data.upper.getDomain());
    TsData values = data.multiplicative ? tmp.div(data.upper) : tmp.minus(data.upper);
    DescriptiveStatistics stats = new DescriptiveStatistics(values);
    double min = stats.getMin();
    double max = stats.getMax();
    if (max - min > 0) {
        XYPlot plot = chartPanel.getChart().getXYPlot();
        TsDomain domain = values.getDomain().extend(0, 1);
        for (int i = 0; i < domain.getLength() - 1; i++) {
            float val = (float) ((values.get(i) - min) / (max - min));
            IntervalMarker marker = new IntervalMarker(domain.get(i).firstday().getTime().getTime(),
                    domain.get(i + 1).firstday().getTime().getTime());
            marker.setOutlineStroke(null);
            marker.setAlpha(1f - val);
            plot.addDomainMarker(marker, Layer.BACKGROUND);
        }/*w ww .j  a  v  a2  s  .  c  o m*/
    }
}

From source file:com.mgmtp.perfload.perfalyzer.reportpreparation.PlotCreator.java

public JFreeChart createPlot(final AxisType xAxisType, final AxisType yAxisType,
        final RendererType rendererType, final DisplayData displayData, final DataRange dataRange,
        boolean showMarkers, final NumberDataSet... dataSets) {

    NumberAxis xAxis = createAxis(xAxisType, resourceBundle.getString(displayData.getUnitX()));

    XYPlot plot;/*  w w  w  .  j  a  va  2 s .  c om*/
    if (dataSets.length == 1) {
        NumberAxis yAxis = createAxis(yAxisType, resourceBundle.getString(displayData.getUnitY()));
        plot = new XYPlot(dataSets[0], xAxis, yAxis, rendererType.createRenderer());
    } else {
        CombinedDomainXYPlot combinedPlot = new CombinedDomainXYPlot(xAxis);
        for (int i = 0; i < dataSets.length; ++i) {
            NumberDataSet dataSet = dataSets[i];
            // no range for y-axis!
            NumberAxis yAxis = createAxis(yAxisType,
                    resourceBundle.getString(displayData.getUnitYList().get(i)));
            XYPlot subPlot = new XYPlot(dataSet, null, yAxis, rendererType.createRenderer());
            combinedPlot.add(subPlot);
            formatPlot(subPlot);
        }
        plot = combinedPlot;
    }

    JFreeChart chart = new JFreeChart(plot);
    CHART_THEME.apply(chart);

    formatPlot(plot);

    if (showMarkers) {
        for (Marker marker : markers) {
            IntervalMarker im = new IntervalMarker(marker.getLeftMillis() / 1000L,
                    marker.getRightMillis() / 1000L);
            im.setLabel(marker.getName());
            im.setLabelFont(new Font("Sans Serif", Font.ITALIC | Font.BOLD, 14));
            im.setLabelAnchor(RectangleAnchor.TOP);
            im.setLabelOffset(new RectangleInsets(8d, 0d, 0d, 0d));
            im.setLabelPaint(Color.BLACK);
            im.setAlpha(.2f);
            im.setPaint(Color.WHITE);
            im.setOutlinePaint(Color.BLACK);
            im.setOutlineStroke(new BasicStroke(1.0f));
            plot.addDomainMarker(im, Layer.BACKGROUND);
        }
    }

    LegendTitle legend = chart.getLegend();
    legend.setBackgroundPaint(new Color(229, 229, 229));
    legend.setFrame(
            new LineBorder(new Color(213, 213, 213), new BasicStroke(1.0f), legend.getFrame().getInsets()));

    // only for non-logarithmic axes
    // range must be set after plot is created, otherwise nothing is drawn
    if (dataRange != null && !xAxisType.equals(AxisType.LOGARITHMIC)) {
        xAxis.setRange(dataRange.getLowerSeconds(), dataRange.getUpperSeconds());
    }

    return chart;
}

From source file:org.esa.beam.visat.toolviews.stat.ProfilePlotPanel.java

private void updateUIState() {
    if (!isInitialized) {
        return;//  w  w w  .ja  va2  s  . com
    }

    xAxisRangeControl.getBindingContext().setComponentsEnabled(PROPERTY_NAME_MARK_SEGMENTS,
            profileData != null && profileData.getShapeVertices().length > 2);
    xAxisRangeControl.setComponentsEnabled(profileData != null);
    yAxisRangeControl.setComponentsEnabled(profileData != null);
    adjustPlotAxes();

    if (dataSourceConfig.computeInBetweenPoints) {
        chart.getXYPlot().setRenderer(deviationRenderer);
    } else {
        chart.getXYPlot().setRenderer(pointRenderer);
    }

    chart.getXYPlot().getRangeAxis()
            .setLabel(StatisticChartStyling.getAxisLabel(getRaster(), DEFAULT_SAMPLE_DATASET_NAME, false));

    boolean markSegments = xAxisRangeControl.getBindingContext().getPropertySet()
            .getValue(PROPERTY_NAME_MARK_SEGMENTS);
    if (markSegments && profileData != null && profileData.getNumShapeVertices() > 1) {
        final int[] shapeVertexIndexes = profileData.getShapeVertexIndexes();
        removeIntervalMarkers();
        for (int i = 0; i < shapeVertexIndexes.length - 1; i++) {
            if (i % 2 != 0) {
                final IntervalMarker marker = new IntervalMarker(shapeVertexIndexes[i],
                        shapeVertexIndexes[i + 1]);
                marker.setPaint(new Color(120, 122, 125));
                marker.setAlpha(0.3F);
                chart.getXYPlot().addDomainMarker(marker, Layer.BACKGROUND);
                intervalMarkers.add(marker);
            }
        }
    } else {
        removeIntervalMarkers();
    }

    pointDataSourceEnablement.apply();
    dataFieldEnablement.apply();

}

From source file:com.griddynamics.jagger.monitoring.reporting.SystemUnderTestPlotsGeneralProvider.java

public Map<String, List<MonitoringReporterData>> createTaskPlots() {
    log.info("BEGIN: Create general task plots");

    Map<String, List<MonitoringReporterData>> taskPlots = new LinkedHashMap<String, List<MonitoringReporterData>>();
    GeneralStatistics generalStatistics = getStatistics();

    Set<String> taskIds = generalStatistics.findTaskIds();
    Set<String> boxIdentifiers = generalStatistics.findBoxIdentifiers();
    Set<String> sutUrls = generalStatistics.findSutUrls();
    for (GroupKey groupName : plotGroups.getPlotGroups().keySet()) {
        log.info("    Create general task plots for group '{}'", groupName);

        if (showPlotsByGlobal) {
            log.info("        Create general global task plots");

            List<MonitoringReporterData> plots = new LinkedList<MonitoringReporterData>();
            XYSeriesCollection chartsCollection = new XYSeriesCollection();
            LinkedHashMap<String, IntervalMarker> markers = new LinkedHashMap<String, IntervalMarker>();
            for (MonitoringParameter parameterId : plotGroups.getPlotGroups().get(groupName)) {
                log.info("            Create general global task plots for parameter '{}'", parameterId);

                MonitoringParameterBean param = MonitoringParameterBean.copyOf(parameterId);
                if (generalStatistics.hasGlobalStatistics(param)) {
                    XYSeries values = new XYSeries(param.getDescription());
                    long timeShift = 0;
                    int taskNum = 0;
                    for (String taskId : taskIds) {
                        log.info("                Create general global task plots for task '{}'", taskId);

                        long maxTime = 0;
                        for (MonitoringStatistics monitoringStatistics : generalStatistics
                                .findGlobalStatistics(taskId, param)) {
                            long time = monitoringStatistics.getTime();
                            double t = timeShift + time;
                            values.add(t, monitoringStatistics.getAverageValue());

                            if (time > maxTime) {
                                maxTime = time;
                            }//from   www.  j a va 2  s.c  o m

                            if (showNumbers) {
                                IntervalMarker marker = markers.get(taskId);
                                if (marker == null) {
                                    marker = new IntervalMarker(t, t);
                                    marker.setLabel(monitoringStatistics.getTaskData().getNumber().toString());
                                    marker.setAlpha((taskNum % 2 == 0) ? 0.2f : 0.4f);

                                    int mod = taskNum % 3;
                                    if (mod == 0) {
                                        marker.setLabelAnchor(RectangleAnchor.CENTER);
                                    } else if (mod == 1) {
                                        marker.setLabelAnchor(RectangleAnchor.TOP);
                                    } else if (mod == 2) {
                                        marker.setLabelAnchor(RectangleAnchor.BOTTOM);
                                    }

                                    marker.setLabelFont(
                                            marker.getLabelFont().deriveFont(10.0f).deriveFont(Font.BOLD));
                                    markers.put(taskId, marker);
                                } else {
                                    if (t < marker.getStartValue()) {
                                        marker.setStartValue(t);
                                    }
                                    if (t > marker.getEndValue()) {
                                        marker.setEndValue(t);
                                    }
                                }
                            }
                        }
                        timeShift += maxTime;
                        taskNum++;
                    }
                    if (values.isEmpty()) {
                        values.add(0, 0);
                    }
                    chartsCollection.addSeries(values);
                }
            }

            log.debug("group name \n{} \nparams {}]\n", groupName,
                    Lists.newArrayList(plotGroups.getPlotGroups().get(groupName)));

            Pair<String, XYSeriesCollection> pair = ChartHelper.adjustTime(chartsCollection, markers.values());

            chartsCollection = pair.getSecond();

            String name = groupName.getUpperName();

            if (chartsCollection.getSeriesCount() > 0) {
                JFreeChart chart = ChartHelper.createXYChart(null, chartsCollection,
                        "Time (" + pair.getFirst() + ")", groupName.getLeftName(), 0, 1,
                        ChartHelper.ColorTheme.LIGHT);

                XYPlot plot = (XYPlot) chart.getPlot();
                for (IntervalMarker marker : markers.values()) {
                    plot.addDomainMarker(marker);
                }

                MonitoringReporterData monitoringReporterData = new MonitoringReporterData();
                monitoringReporterData.setParameterName(name);
                monitoringReporterData.setTitle(name);
                monitoringReporterData.setPlot(new JCommonDrawableRenderer(chart));
                plots.add(monitoringReporterData);
            }

            if (!plots.isEmpty()) {
                taskPlots.put(name, plots);
            }
        }

        if (showPlotsByBox) {
            log.info("        Create general box task plots");

            for (String boxIdentifier : boxIdentifiers) {
                log.info("            Create general box task plots for box '{}'", boxIdentifier);

                List<MonitoringReporterData> plots = new LinkedList<MonitoringReporterData>();
                XYSeriesCollection chartsCollection = new XYSeriesCollection();
                LinkedHashMap<String, IntervalMarker> markers = new LinkedHashMap<String, IntervalMarker>();
                for (MonitoringParameter parameterId : plotGroups.getPlotGroups().get(groupName)) {
                    log.info("                Create general box task plots for parameter '{}'", parameterId);

                    MonitoringParameterBean param = MonitoringParameterBean.copyOf(parameterId);
                    if (generalStatistics.hasBoxStatistics(param, boxIdentifier)) {
                        XYSeries values = new XYSeries(param.getDescription());
                        long timeShift = 0;
                        int taskNum = 0;
                        for (String taskId : taskIds) {
                            log.info("                    Create general box task plots for task '{}'", taskId);

                            long maxTime = 0;
                            for (MonitoringStatistics monitoringStatistics : generalStatistics
                                    .findBoxStatistics(taskId, param, boxIdentifier)) {
                                long time = monitoringStatistics.getTime();
                                double t = timeShift + time;
                                values.add(t, monitoringStatistics.getAverageValue());

                                if (time > maxTime) {
                                    maxTime = time;
                                }

                                if (showNumbers) {
                                    IntervalMarker marker = markers.get(taskId);
                                    if (marker == null) {
                                        marker = new IntervalMarker(t, t);
                                        marker.setLabel(
                                                monitoringStatistics.getTaskData().getNumber().toString());
                                        marker.setAlpha((taskNum % 2 == 0) ? 0.2f : 0.4f);

                                        int mod = taskNum % 3;
                                        if (mod == 0) {
                                            marker.setLabelAnchor(RectangleAnchor.CENTER);
                                        } else if (mod == 1) {
                                            marker.setLabelAnchor(RectangleAnchor.TOP);
                                        } else if (mod == 2) {
                                            marker.setLabelAnchor(RectangleAnchor.BOTTOM);
                                        }

                                        marker.setLabelFont(
                                                marker.getLabelFont().deriveFont(10.0f).deriveFont(Font.BOLD));
                                        markers.put(taskId, marker);
                                    } else {
                                        if (t < marker.getStartValue()) {
                                            marker.setStartValue(t);
                                        }
                                        if (t > marker.getEndValue()) {
                                            marker.setEndValue(t);
                                        }
                                    }
                                }
                            }
                            timeShift += maxTime;
                            taskNum++;
                        }
                        if (values.isEmpty()) {
                            values.add(0, 0);
                        }
                        chartsCollection.addSeries(values);
                    }
                }

                log.debug("group name \n{} \nparams {}]\n", groupName,
                        Lists.newArrayList(plotGroups.getPlotGroups().get(groupName)));

                Pair<String, XYSeriesCollection> pair = ChartHelper.adjustTime(chartsCollection,
                        markers.values());

                chartsCollection = pair.getSecond();

                String name = groupName.getUpperName() + " on " + boxIdentifier;

                if (chartsCollection.getSeriesCount() > 0) {
                    JFreeChart chart = ChartHelper.createXYChart(null, chartsCollection,
                            "Time (" + pair.getFirst() + ")", groupName.getLeftName(), 0, 1,
                            ChartHelper.ColorTheme.LIGHT);

                    XYPlot plot = (XYPlot) chart.getPlot();
                    for (IntervalMarker marker : markers.values()) {
                        plot.addDomainMarker(marker);
                    }

                    MonitoringReporterData monitoringReporterData = new MonitoringReporterData();
                    monitoringReporterData.setParameterName(name);
                    monitoringReporterData.setTitle(name);
                    monitoringReporterData.setPlot(new JCommonDrawableRenderer(chart));
                    plots.add(monitoringReporterData);
                }

                if (!plots.isEmpty()) {
                    taskPlots.put(name, plots);
                }
            }
        }

        if (showPlotsBySuT) {
            log.info("        Create general sut task plots");

            for (String sutUrl : sutUrls) {
                log.info("            Create general sut task plots for sut '{}'", sutUrl);

                List<MonitoringReporterData> plots = new LinkedList<MonitoringReporterData>();
                XYSeriesCollection chartsCollection = new XYSeriesCollection();
                LinkedHashMap<String, IntervalMarker> markers = new LinkedHashMap<String, IntervalMarker>();
                for (MonitoringParameter parameterId : plotGroups.getPlotGroups().get(groupName)) {
                    log.info("                Create general sut task plots for parameter '{}'", parameterId);

                    MonitoringParameterBean param = MonitoringParameterBean.copyOf(parameterId);
                    if (generalStatistics.hasSutStatistics(param, sutUrl)) {
                        XYSeries values = new XYSeries(param.getDescription());
                        long timeShift = 0;
                        int taskNum = 0;
                        for (String taskId : taskIds) {
                            log.info("                    Create general sut task plots for task '{}'", taskId);

                            long maxTime = 0;
                            for (MonitoringStatistics monitoringStatistics : generalStatistics
                                    .findSutStatistics(taskId, param, sutUrl)) {
                                long time = monitoringStatistics.getTime();
                                double t = timeShift + time;
                                values.add(t, monitoringStatistics.getAverageValue());

                                if (time > maxTime) {
                                    maxTime = time;
                                }

                                if (showNumbers) {
                                    IntervalMarker marker = markers.get(taskId);
                                    if (marker == null) {
                                        marker = new IntervalMarker(t, t);
                                        marker.setLabel(
                                                monitoringStatistics.getTaskData().getNumber().toString());
                                        marker.setAlpha((taskNum % 2 == 0) ? 0.2f : 0.4f);

                                        int mod = taskNum % 3;
                                        if (mod == 0) {
                                            marker.setLabelAnchor(RectangleAnchor.CENTER);
                                        } else if (mod == 1) {
                                            marker.setLabelAnchor(RectangleAnchor.TOP);
                                        } else if (mod == 2) {
                                            marker.setLabelAnchor(RectangleAnchor.BOTTOM);
                                        }

                                        marker.setLabelFont(
                                                marker.getLabelFont().deriveFont(10.0f).deriveFont(Font.BOLD));
                                        markers.put(taskId, marker);
                                    } else {
                                        if (t < marker.getStartValue()) {
                                            marker.setStartValue(t);
                                        }
                                        if (t > marker.getEndValue()) {
                                            marker.setEndValue(t);
                                        }
                                    }
                                }
                            }
                            timeShift += maxTime;
                            taskNum++;
                        }
                        if (values.isEmpty()) {
                            values.add(0, 0);
                        }
                        chartsCollection.addSeries(values);
                    }
                }

                log.debug("group name \n{} \nparams {}]\n", groupName,
                        Lists.newArrayList(plotGroups.getPlotGroups().get(groupName)));

                Pair<String, XYSeriesCollection> pair = ChartHelper.adjustTime(chartsCollection,
                        markers.values());

                chartsCollection = pair.getSecond();

                String name = groupName.getUpperName() + " on " + sutUrl;

                if (chartsCollection.getSeriesCount() > 0) {
                    JFreeChart chart = ChartHelper.createXYChart(null, chartsCollection,
                            "Time (" + pair.getFirst() + ")", groupName.getLeftName(), 0, 1,
                            ChartHelper.ColorTheme.LIGHT);

                    XYPlot plot = (XYPlot) chart.getPlot();
                    for (IntervalMarker marker : markers.values()) {
                        plot.addDomainMarker(marker);
                    }

                    MonitoringReporterData monitoringReporterData = new MonitoringReporterData();
                    monitoringReporterData.setParameterName(name);
                    monitoringReporterData.setTitle(name);
                    monitoringReporterData.setPlot(new JCommonDrawableRenderer(chart));
                    plots.add(monitoringReporterData);
                }

                if (!plots.isEmpty()) {
                    taskPlots.put(name, plots);
                }
            }
        }
    }

    clearStatistics();

    log.info("END: Create general task plots");

    return taskPlots;
}

From source file:com.mgmtp.perfload.loadprofiles.ui.AppFrame.java

private void updateGraph() {
    XYSeriesCollection dataset = new XYSeriesCollection();
    Collection<Stairs> loadProfileEnities = transform(
            filter(loadProfilesController.getTreeItems(), new IsStairsPredicate()),
            new LoadProfileEntityToStairsFunction());
    GraphPointsCalculator calc = new GraphPointsCalculator();
    Map<String, Set<Point>> pointsMap = calc.calculatePoints(loadProfileEnities);

    for (Entry<String, Set<Point>> entry : pointsMap.entrySet()) {
        final XYSeries series = new XYSeries(entry.getKey());
        for (Point point : entry.getValue()) {
            series.add(point.getX(), point.getY());
        }//w  w w.  j  a  va  2s  .  c  o  m
        dataset.addSeries(series);
    }

    String name = txtName.getText();
    chart = ChartFactory.createXYLineChart(name, "t (min)", "Executions (1/h)", dataset,
            PlotOrientation.VERTICAL, true, true, false);

    XYPlot plot = chart.getXYPlot();

    XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
    plot.setRenderer(renderer);

    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
    domainAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

    double maxX = 0;

    for (OneTime oneTime : getOneTimes()) {
        String key = oneTime.operation.getName();
        XYSeries series;
        try {
            // We need the series in order to retrieve paint and stroke
            series = dataset.getSeries(key);
        } catch (UnknownKeyException ex) {
            series = new XYSeries(key);
            dataset.addSeries(series);
        }

        int index = dataset.getSeriesIndex(key);
        BasicStroke stroke = (BasicStroke) renderer.lookupSeriesStroke(index);
        stroke = new BasicStroke(stroke.getLineWidth() + 1f, stroke.getEndCap(), stroke.getLineJoin(),
                stroke.getMiterLimit(), stroke.getDashArray(), stroke.getDashPhase());
        Color paint = (Color) renderer.lookupSeriesPaint(index);
        paint = new Color(paint.getRed(), paint.getGreen(), paint.getBlue(), 160);

        double height = rangeAxis.getUpperBound() * .05; // five percent of range
        double width = domainAxis.getUpperBound() * .01; // one percent of range
        double center = oneTime.t0;
        double left = center - width / 2;
        double right = center + width / 2;

        // We only add annotations for one times, but nothing to the series
        plot.addAnnotation(new XYPolygonAnnotation(new double[] { left, 0d, center, height, right, 0d }, stroke,
                paint, paint));

        maxX = max(maxX, right);
    }

    for (Marker marker : getMarkers()) {
        IntervalMarker im = new IntervalMarker(marker.left, marker.right);
        im.setLabel(marker.name);
        im.setLabelFont(new Font(getFont().getName(), getFont().getStyle(), getFont().getSize() + 1));
        im.setLabelAnchor(RectangleAnchor.TOP);
        im.setLabelOffset(new RectangleInsets(8d, 0d, 0d, 0d));
        im.setLabelPaint(Color.BLACK);
        im.setAlpha(.3f);
        im.setPaint(Color.WHITE);
        im.setOutlinePaint(Color.BLACK);
        im.setOutlineStroke(new BasicStroke(1.0f));
        plot.addDomainMarker(im, Layer.BACKGROUND);

        maxX = max(maxX, marker.right);
    }

    if (domainAxis.getUpperBound() < maxX) {
        domainAxis.setUpperBound(maxX * 1.05);
    }
    chartPanel.setChart(chart);
}