Example usage for org.jfree.chart.renderer.xy XYItemRenderer setBaseToolTipGenerator

List of usage examples for org.jfree.chart.renderer.xy XYItemRenderer setBaseToolTipGenerator

Introduction

In this page you can find the example usage for org.jfree.chart.renderer.xy XYItemRenderer setBaseToolTipGenerator.

Prototype

public void setBaseToolTipGenerator(XYToolTipGenerator generator);

Source Link

Document

Sets the base tool tip generator and sends a RendererChangeEvent to all registered listeners.

Usage

From source file:org.gwaspi.gui.reports.SampleQAHetzygPlotZoom.java

private JFreeChart createChart(XYDataset dataset) {
    JFreeChart chart = ChartFactory.createScatterPlot("Heterozygosity vs. Missing Ratio",
            "Heterozygosity Ratio", "Missing Ratio", dataset, PlotOrientation.VERTICAL, true, false, false);

    XYPlot plot = (XYPlot) chart.getPlot();
    plot.setNoDataMessage("NO DATA");
    plot.setDomainZeroBaselineVisible(true);
    plot.setRangeZeroBaselineVisible(true);

    // CHART BACKGROUD COLOR
    chart.setBackgroundPaint(Color.getHSBColor(0.1f, 0.1f, 1.0f)); // Hue, saturation, brightness
    plot.setBackgroundPaint(PLOT_MANHATTAN_BACKGROUND); // Hue, saturation, brightness 9

    // GRIDLINES/* w  ww .  java 2s .  c o  m*/
    plot.setDomainGridlineStroke(new BasicStroke(0.0f));
    plot.setDomainMinorGridlineStroke(new BasicStroke(0.0f));
    plot.setDomainGridlinePaint(PLOT_MANHATTAN_BACKGROUND.darker().darker()); // Hue, saturation, brightness 7
    plot.setDomainMinorGridlinePaint(PLOT_MANHATTAN_BACKGROUND); // Hue, saturation, brightness 9
    plot.setRangeGridlineStroke(new BasicStroke(0.0f));
    plot.setRangeMinorGridlineStroke(new BasicStroke(0.0f));
    plot.setRangeGridlinePaint(PLOT_MANHATTAN_BACKGROUND.darker().darker()); // Hue, saturation, brightness 7
    plot.setRangeMinorGridlinePaint(PLOT_MANHATTAN_BACKGROUND.darker()); // Hue, saturation, brightness 8

    plot.setDomainMinorGridlinesVisible(true);
    plot.setRangeMinorGridlinesVisible(true);

    // DOTS RENDERER
    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
    renderer.setSeriesPaint(0, PLOT_MANHATTAN_DOTS);
    //      renderer.setSeriesOutlinePaint(0, Color.DARK_GRAY);
    //      renderer.setUseOutlinePaint(true);
    // Set dot shape of the currently appended Series
    renderer.setSeriesShape(0, new Rectangle2D.Double(-1, -1, 2, 2));

    renderer.setSeriesVisibleInLegend(0, false);

    // AXIS
    double maxHetzy = 0.005;
    for (int i = 0; i < dataset.getItemCount(0); i++) {
        if (maxHetzy < dataset.getXValue(0, i)) {
            maxHetzy = dataset.getXValue(0, i);
        }
    }
    NumberAxis hetzyAxis = (NumberAxis) plot.getDomainAxis();
    hetzyAxis.setAutoRangeIncludesZero(true);
    hetzyAxis.setAxisLineVisible(true);
    hetzyAxis.setTickLabelsVisible(true);
    hetzyAxis.setTickMarksVisible(true);
    hetzyAxis.setRange(0, maxHetzy * 1.1);

    double maxMissrat = 0.005;
    for (int i = 0; i < dataset.getItemCount(0); i++) {
        if (maxMissrat < dataset.getYValue(0, i)) {
            maxMissrat = dataset.getYValue(0, i);
        }
    }
    NumberAxis missratAxis = (NumberAxis) plot.getRangeAxis();
    missratAxis.setAutoRangeIncludesZero(true);
    missratAxis.setAxisLineVisible(true);
    missratAxis.setTickLabelsVisible(true);
    missratAxis.setTickMarksVisible(true);
    missratAxis.setRange(0, maxMissrat * 1.1);

    // Add significance Threshold to subplot
    final Marker missingThresholdLine = new ValueMarker(missingThreshold);
    missingThresholdLine.setPaint(Color.blue);

    final Marker hetzyThresholdLine = new ValueMarker(hetzyThreshold);
    hetzyThresholdLine.setPaint(Color.blue);

    // Add legend to hetzyThreshold
    hetzyThresholdLine.setLabel("hetzyg. threshold = " + hetzyThreshold);
    missingThresholdLine.setLabel("missing. threshold = " + missingThreshold);
    hetzyThresholdLine.setLabelAnchor(RectangleAnchor.TOP_LEFT);
    hetzyThresholdLine.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
    missingThresholdLine.setLabelAnchor(RectangleAnchor.BOTTOM_LEFT);
    missingThresholdLine.setLabelTextAnchor(TextAnchor.TOP_LEFT);
    plot.addRangeMarker(missingThresholdLine); // THIS FOR MISSING RATIO
    plot.addDomainMarker(hetzyThresholdLine); // THIS FOR HETZY RATIO

    // Marker label if below hetzyThreshold
    XYItemRenderer lblRenderer = plot.getRenderer();

    // THRESHOLD AND SELECTED LABEL GENERATOR
    MySeriesItemLabelGenerator lblGenerator = new MySeriesItemLabelGenerator(hetzyThreshold, missingThreshold);
    lblRenderer.setSeriesItemLabelGenerator(0, lblGenerator);
    lblRenderer.setSeriesItemLabelFont(0, new Font("SansSerif", Font.PLAIN, 10));
    lblRenderer.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.CENTER,
            TextAnchor.BOTTOM_LEFT, TextAnchor.BOTTOM_LEFT, 2 * Math.PI));

    // TOOLTIP GENERATOR
    MyXYToolTipGenerator tooltipGenerator = new MyXYToolTipGenerator();

    lblRenderer.setBaseToolTipGenerator(tooltipGenerator);

    lblRenderer.setSeriesItemLabelsVisible(0, true);

    return chart;
}

From source file:org.gwaspi.gui.reports.ManhattanPlotZoom.java

private JFreeChart createChart(XYDataset dataset, ChromosomeKey chr) {
    JFreeChart chart = ChartFactory.createScatterPlot(null, "", "P value", dataset, PlotOrientation.VERTICAL,
            true, false, false);//from   w ww .  j  a va2  s .c  o  m

    XYPlot plot = (XYPlot) chart.getPlot();
    plot.setNoDataMessage("NO DATA");
    plot.setDomainZeroBaselineVisible(true);
    plot.setRangeZeroBaselineVisible(true);

    // CHART BACKGROUD COLOR
    chart.setBackgroundPaint(Color.getHSBColor(0.1f, 0.1f, 1.0f)); // Hue, saturation, brightness
    plot.setBackgroundPaint(manhattan_back); // Hue, saturation, brightness 9

    // GRIDLINES
    plot.setDomainGridlineStroke(new BasicStroke(0.0f));
    plot.setDomainMinorGridlineStroke(new BasicStroke(0.0f));
    plot.setDomainGridlinePaint(manhattan_back.darker().darker()); // Hue, saturation, brightness 7
    plot.setDomainMinorGridlinePaint(manhattan_back); // Hue, saturation, brightness 9
    plot.setRangeGridlineStroke(new BasicStroke(0.0f));
    plot.setRangeMinorGridlineStroke(new BasicStroke(0.0f));
    plot.setRangeGridlinePaint(manhattan_back.darker().darker()); // Hue, saturation, brightness 7
    plot.setRangeMinorGridlinePaint(manhattan_back.darker()); // Hue, saturation, brightness 8

    plot.setDomainMinorGridlinesVisible(true);
    plot.setRangeMinorGridlinesVisible(true);

    // DOTS RENDERER
    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
    renderer.setSeriesPaint(0, manhattan_dot);
    //      renderer.setSeriesOutlinePaint(0, Color.DARK_GRAY);
    //      renderer.setUseOutlinePaint(true);
    // Set dot shape of the currently appended Series
    renderer.setSeriesShape(0, new Rectangle2D.Double(0.0, 0.0, 2, 2));

    renderer.setSeriesVisibleInLegend(0, false);

    NumberAxis positionAxis = (NumberAxis) plot.getDomainAxis();
    //      domainAxis.setAutoRangeIncludesZero(false);
    //      domainAxis.setTickMarkInsideLength(2.0f);
    //      domainAxis.setTickMarkOutsideLength(2.0f);
    //      domainAxis.setMinorTickCount(2);
    //      domainAxis.setMinorTickMarksVisible(true);
    positionAxis.setLabelAngle(1.0);
    positionAxis.setAutoRangeIncludesZero(false);
    positionAxis.setAxisLineVisible(true);
    positionAxis.setTickLabelsVisible(true);
    positionAxis.setTickMarksVisible(true);

    // ADD INVERSE LOG(10) Y AXIS
    LogAxis logPAxis = new LogAxis("P value");
    logPAxis.setBase(10);
    logPAxis.setInverted(true);
    logPAxis.setNumberFormatOverride(GenericReportGenerator.FORMAT_P_VALUE);

    logPAxis.setTickMarkOutsideLength(2.0f);
    logPAxis.setMinorTickCount(2);
    logPAxis.setMinorTickMarksVisible(true);
    logPAxis.setAxisLineVisible(true);
    logPAxis.setUpperMargin(0);

    TickUnitSource units = NumberAxis.createIntegerTickUnits();
    logPAxis.setStandardTickUnits(units);
    plot.setRangeAxis(0, logPAxis);

    // Add significance Threshold to subplot
    //threshold = 0.5/rdMatrixMetadata.getMarkerSetSize();  // (0.05/10? SNPs => 5*10-?)
    final Marker thresholdLine = new ValueMarker(threshold);
    thresholdLine.setPaint(Color.red);
    // Add legend to threshold
    thresholdLine.setLabel("P = " + GenericReportGenerator.FORMAT_P_VALUE.format(threshold));
    thresholdLine.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
    thresholdLine.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
    plot.addRangeMarker(thresholdLine);

    // Marker label if below threshold
    XYItemRenderer lblRenderer = plot.getRenderer();

    // THRESHOLD AND SELECTED LABEL GENERATOR
    MySeriesItemLabelGenerator lblGenerator = new MySeriesItemLabelGenerator(threshold, chr);
    lblRenderer.setSeriesItemLabelGenerator(0, lblGenerator);
    lblRenderer.setSeriesItemLabelFont(0, new Font("SansSerif", Font.PLAIN, 12));
    lblRenderer.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.CENTER,
            TextAnchor.TOP_LEFT, TextAnchor.BOTTOM_LEFT, Math.PI / 4.0));

    // TOOLTIP GENERATOR
    MyXYToolTipGenerator tooltipGenerator = new MyXYToolTipGenerator(chr);

    lblRenderer.setBaseToolTipGenerator(tooltipGenerator);

    lblRenderer.setSeriesItemLabelsVisible(0, true);

    return chart;
}

From source file:fr.inria.soctrace.framesoc.ui.histogram.view.HistogramView.java

/**
 * Prepare the plot//from w  w  w .  ja  va  2s .  co  m
 * 
 * @param chart
 *            jfreechart chart
 * @param displayed
 *            displayed time interval
 */
private void preparePlot(boolean first, JFreeChart chart, TimeInterval displayed) {
    // Plot customization
    plot = chart.getXYPlot();
    // Grid and background colors
    plot.setBackgroundPaint(BACKGROUND_PAINT);
    plot.setDomainGridlinePaint(DOMAIN_GRIDLINE_PAINT);
    plot.setRangeGridlinePaint(RANGE_GRIDLINE_PAINT);
    // Tooltip
    XYItemRenderer renderer = plot.getRenderer();
    renderer.setBaseToolTipGenerator(TOOLTIP_GENERATOR);
    // Disable bar white stripes
    XYBarRenderer barRenderer = (XYBarRenderer) plot.getRenderer();
    barRenderer.setBarPainter(new StandardXYBarPainter());
    // X axis
    X_FORMAT.setTimeUnit(TimeUnit.getTimeUnit(currentShownTrace.getTimeUnit()));
    X_FORMAT.setContext(displayed.startTimestamp, displayed.endTimestamp, true);
    NumberAxis xaxis = (NumberAxis) plot.getDomainAxis();
    xaxis.setTickLabelFont(TICK_LABEL_FONT);
    xaxis.setLabelFont(LABEL_FONT);
    xaxis.setNumberFormatOverride(X_FORMAT);
    TickDescriptor des = X_FORMAT.getTickDescriptor(displayed.startTimestamp, displayed.endTimestamp,
            numberOfTicks);
    xaxis.setTickUnit(new NumberTickUnit(des.delta));
    xaxis.addChangeListener(new AxisChangeListener() {
        @Override
        public void axisChanged(AxisChangeEvent arg) {
            long max = ((Double) plot.getDomainAxis().getRange().getUpperBound()).longValue();
            long min = ((Double) plot.getDomainAxis().getRange().getLowerBound()).longValue();
            TickDescriptor des = X_FORMAT.getTickDescriptor(min, max, numberOfTicks);
            NumberTickUnit newUnit = new NumberTickUnit(des.delta);
            NumberTickUnit currentUnit = ((NumberAxis) arg.getAxis()).getTickUnit();
            // ensure we don't loop
            if (!currentUnit.equals(newUnit)) {
                ((NumberAxis) arg.getAxis()).setTickUnit(newUnit);
            }
        }
    });
    // Y axis
    NumberAxis yaxis = (NumberAxis) plot.getRangeAxis();
    yaxis.setTickLabelFont(TICK_LABEL_FONT);
    yaxis.setLabelFont(LABEL_FONT);
    // remove the marker, if any
    if (marker != null) {
        plot.removeDomainMarker(marker);
        marker = null;
    }
}

From source file:com.diversityarrays.kdxplore.scatterplot.ScatterPlotPanel.java

private void generateChart(boolean recreateDataSet, Bag<String> missingOrBad, Bag<String> suppressed) {

    if (recreateDataSet) {
        currentDataSet = createSampleDataSet(missingOrBad, suppressed);
    }/*from   w ww .ja va  2  s  . c o m*/

    XYSeriesCollection dataset = currentDataSet;

    PlotOrientation orientation = PlotOrientation.VERTICAL;
    boolean show = true;
    boolean toolTips = true;
    boolean urls = true;

    chart = ChartFactory.createScatterPlot(getTitle(), xAxisName, yAxisName, dataset, orientation, show,
            toolTips, urls);

    if (DEBUG) {
        System.out.println("Generated new ScatterPlot"); //$NON-NLS-1$
    }

    TraitColorProvider traitColorProvider = colorProviderFactory.get();

    XYPlot xyPlot = (XYPlot) chart.getPlot();
    XYItemRenderer xyr = xyPlot.getRendererForDataset(dataset);

    boolean anyDisplayValues = false;
    if (!xNumberToTraitValue.numberToTraitValue.isEmpty()) {
        anyDisplayValues = true;
    } else {
        for (NumberToTraitValue n2tv : numberToTraitValueBySeriesIndex.values()) {
            if (!n2tv.numberToTraitValue.isEmpty()) {
                anyDisplayValues = true;
                break;
            }
        }
    }
    if (anyDisplayValues) {
        xyr.setBaseToolTipGenerator(new MyXYToolTipGenerator());
    }

    for (TraitInstance ti : traitInstances) {
        ColorPair colorPair = traitColorProvider.getTraitInstanceColor(ti);
        if (colorPair != null) {
            if (DEBUG) {
                System.out.println("Got a color back for: " + InstanceIdentifierUtil.getInstanceIdentifier(ti)); //$NON-NLS-1$
            }

            String validName = traitNameStyle.makeTraitInstanceName(ti);
            if (seriesCountByTraitName.get(validName) != null) {
                xyr.setSeriesPaint(seriesCountByTraitName.get(validName), colorPair.getBackground());
            }
        }
    }
    xyPlot.setRenderer(xyr);

    chartPanel.setChart(chart);

    dataxMin = xyPlot.getDomainAxis().getLowerBound();
    dataxMax = xyPlot.getDomainAxis().getUpperBound();

    datayMin = xyPlot.getRangeAxis().getLowerBound();
    datayMax = xyPlot.getRangeAxis().getUpperBound();
}

From source file:com.att.aro.diagnostics.GraphPanel.java

private static void populateCameraPlot(XYPlot plot, TraceData.Analysis analysis) {

    XYIntervalSeriesCollection cameraData = new XYIntervalSeriesCollection();

    if (analysis != null) {

        XYIntervalSeries series = new XYIntervalSeries(CameraState.CAMERA_ON);
        cameraData.addSeries(series);//from  ww w  . ja  v a 2  s .  c  om

        // Populate the data set
        Iterator<CameraInfo> iter = analysis.getCameraInfos().iterator();
        if (iter.hasNext()) {
            while (iter.hasNext()) {
                CameraInfo cameraEvent = iter.next();
                if (cameraEvent.getCameraState() == CameraState.CAMERA_ON) {
                    series.add(cameraEvent.getBeginTimeStamp(), cameraEvent.getBeginTimeStamp(),
                            cameraEvent.getEndTimeStamp(), 0.5, 0, 1);
                }
            }
        }

        // Assign ToolTip to renderer
        XYItemRenderer renderer = plot.getRenderer();
        renderer.setBaseToolTipGenerator(new XYToolTipGenerator() {
            @Override
            public String generateToolTip(XYDataset dataset, int series, int item) {
                return MessageFormat.format(rb.getString("camera.tooltip"), dataset.getX(series, item),
                        ResourceBundleManager.getEnumString((Enum<?>) dataset.getSeriesKey(series)));
            }
        });

    }

    plot.setDataset(cameraData);
}

From source file:com.att.aro.diagnostics.GraphPanel.java

private static void populateScreenStatePlot(XYPlot plot, TraceData.Analysis analysis) {

    final XYIntervalSeriesCollection screenData = new XYIntervalSeriesCollection();
    if (analysis != null) {

        XYIntervalSeries series = new XYIntervalSeries(ScreenState.SCREEN_ON);
        screenData.addSeries(series);/*from  w  w  w .  jav a  2 s  .  c o m*/

        // Populate the data set
        final Map<Double, ScreenStateInfo> dataMap = new HashMap<Double, ScreenStateInfo>();
        Iterator<ScreenStateInfo> iter = analysis.getScreenStateInfos().iterator();
        if (iter.hasNext()) {
            while (iter.hasNext()) {
                ScreenStateInfo screenEvent = iter.next();
                if (screenEvent.getScreenState() == ScreenState.SCREEN_ON) {
                    series.add(screenEvent.getBeginTimeStamp(), screenEvent.getBeginTimeStamp(),
                            screenEvent.getEndTimeStamp(), 0.5, 0, 1);
                    dataMap.put(screenEvent.getBeginTimeStamp(), screenEvent);
                }
            }
        }

        // Assign ToolTip to renderer
        XYItemRenderer renderer = plot.getRenderer();
        renderer.setBaseToolTipGenerator(new XYToolTipGenerator() {

            @Override
            public String generateToolTip(XYDataset dataset, int series, int item) {

                ScreenStateInfo si = dataMap.get(dataset.getXValue(series, item));
                if (si != null) {

                    StringBuffer displayInfo = new StringBuffer(rb.getString("screenstate.tooltip.prefix"));
                    int timeout = si.getScreenTimeout();
                    displayInfo.append(MessageFormat.format(rb.getString("screenstate.tooltip.content"),
                            ResourceBundleManager.getEnumString(si.getScreenState()), si.getScreenBrightness(),
                            timeout > 0 ? timeout : rb.getString("screenstate.noTimeout")));
                    displayInfo.append(rb.getString("screenstate.tooltip.suffix"));
                    return displayInfo.toString();
                }
                return null;
            }
        });
    }

    plot.setDataset(screenData);
}

From source file:com.att.aro.diagnostics.GraphPanel.java

private static void populateBatteryPlot(XYPlot plot, TraceData.Analysis analysis) {

    XYSeries series = new XYSeries(0);

    if (analysis != null) {

        final List<BatteryInfo> batteryInfos = analysis.getBatteryInfos();

        if (batteryInfos.size() > 0 && analysis.getFilter().getTimeRange() != null) {
            BatteryInfo first = batteryInfos.get(0);
            series.add(analysis.getFilter().getTimeRange().getBeginTime(), first.getBatteryLevel());
        }//from  w w w . j  a  va 2 s.c o  m
        for (BatteryInfo bi : batteryInfos) {
            series.add(bi.getBatteryTimeStamp(), bi.getBatteryLevel());
        }
        if (batteryInfos.size() > 0) {

            BatteryInfo last = batteryInfos.get(batteryInfos.size() - 1);
            if (analysis.getFilter().getTimeRange() != null) {
                series.add(analysis.getFilter().getTimeRange().getEndTime(), last.getBatteryLevel());
            } else {
                series.add(analysis.getTraceData().getTraceDuration(), last.getBatteryLevel());

            }
        }

        XYItemRenderer renderer = plot.getRenderer();
        renderer.setBaseToolTipGenerator(new XYToolTipGenerator() {

            @Override
            public String generateToolTip(XYDataset dataset, int series, int item) {

                BatteryInfo bi = batteryInfos.get(Math.min(item, batteryInfos.size() - 1));
                StringBuffer displayInfo = new StringBuffer(rb.getString("battery.tooltip.prefix"));
                displayInfo.append(MessageFormat.format(rb.getString("battery.tooltip.content"),
                        bi.getBatteryLevel(), bi.getBatteryTemp(),
                        bi.isBatteryState() ? rb.getString("battery.tooltip.connected")
                                : rb.getString("battery.tooltip.disconnected")));
                displayInfo.append(rb.getString("battery.tooltip.suffix"));

                return displayInfo.toString();
            }

        });
    }

    plot.setDataset(new XYSeriesCollection(series));
}

From source file:com.att.aro.diagnostics.GraphPanel.java

/**
 * Adds CPU data into plot./*from  w  w w  . j a va  2 s.c o  m*/
 * 
 * @param plot
 *            CPU data are added to plot
 * @param analysis
 *            Contains CPU data
 */
private static void populateCpuPlot(XYPlot plot, TraceData.Analysis analysis) {
    logger.fine("Starting populateCpuPlot()");
    XYSeries series = new XYSeries(0);
    if (analysis != null) {

        final CpuActivityList cpuAList = analysis.getCpuActivityList();
        boolean filterByTime = cpuAList.isFilterByTime();
        double beginTime = 0;
        double endTime = 0;
        if (filterByTime) {
            beginTime = cpuAList.getBeginTraceTime();
            endTime = cpuAList.getEndTraceTime();
            logger.log(Level.FINE, "begin: {0} end time: {1}", new Object[] { beginTime, endTime });
        }

        final List<CpuActivity> cpuData = cpuAList.getCpuActivityList();
        logger.log(Level.FINE, "Size of CPU data: " + cpuData.size());

        if (cpuData.size() > 0) {
            for (CpuActivity cpu : cpuData) {
                if (filterByTime) {
                    logger.log(Level.FINE, "timestamp: {0}", cpu.getTimeStamp());
                    if (cpu.getTimeStamp() >= beginTime && cpu.getTimeStamp() <= endTime) {
                        logger.log(Level.FINE, "CPU usage: {0}", cpu.getCpuUsageTotalFiltered());
                        series.add(cpu.getTimeStamp(), cpu.getCpuUsageTotalFiltered());
                    }

                } else {
                    logger.log(Level.FINE, "CPU usage: {0}", cpu.getCpuUsageTotalFiltered());
                    series.add(cpu.getTimeStamp(), cpu.getCpuUsageTotalFiltered());
                }
            }
        }

        // Assign ToolTip to renderer
        XYItemRenderer renderer = plot.getRenderer();

        renderer.setBaseToolTipGenerator(new XYToolTipGenerator() {
            @Override
            public String generateToolTip(XYDataset dataset, int series, int item) {
                return GraphPanel.generateToolTip(cpuAList, cpuData, item);
            }
        });

    }
    plot.setDataset(new XYSeriesCollection(series));
}

From source file:com.att.aro.diagnostics.GraphPanel.java

private static void populateRadioPlot(XYPlot plot, TraceData.Analysis analysis) {

    XYSeries series = new XYSeries(0);
    if (analysis != null) {

        final List<RadioInfo> radioInfos = analysis.getRadioInfos();

        if (radioInfos.size() > 0 && analysis.getFilter().getTimeRange() != null) {
            RadioInfo first = radioInfos.get(0);
            series.add(analysis.getFilter().getTimeRange().getBeginTime(),
                    first.getSignalStrength() < 0 ? first.getSignalStrength() : MIN_SIGNAL);
        }/*from  www  . j  av  a 2s.co  m*/
        for (RadioInfo ri : radioInfos) {
            series.add(ri.getTimeStamp(), ri.getSignalStrength() < 0 ? ri.getSignalStrength() : MIN_SIGNAL);
        }
        if (radioInfos.size() > 0) {
            RadioInfo last = radioInfos.get(radioInfos.size() - 1);
            if (analysis.getFilter().getTimeRange() != null) {
                series.add(analysis.getFilter().getTimeRange().getEndTime(),
                        last.getSignalStrength() < 0 ? last.getSignalStrength() : MIN_SIGNAL);
            } else {
                series.add(analysis.getTraceData().getTraceDuration(),
                        last.getSignalStrength() < 0 ? last.getSignalStrength() : MIN_SIGNAL);
            }
        }

        // Assign ToolTip to renderer
        XYItemRenderer renderer = plot.getRenderer();
        renderer.setBaseToolTipGenerator(new XYToolTipGenerator() {

            @Override
            public String generateToolTip(XYDataset dataset, int series, int item) {

                RadioInfo ri = radioInfos.get(Math.min(item, radioInfos.size() - 1));
                if (ri.getSignalStrength() < 0) {
                    if (ri.isLte()) {
                        return MessageFormat.format(rb.getString("radio.tooltip.lte"), ri.getLteRsrp(),
                                ri.getLteRsrq());
                    } else {
                        return MessageFormat.format(rb.getString("radio.tooltip"), ri.getSignalStrength());
                    }
                } else {
                    return rb.getString("radio.noSignal");
                }
            }

        });

    }

    plot.setDataset(new XYSeriesCollection(series));
}

From source file:com.att.aro.diagnostics.GraphPanel.java

/**
 * Creating Wakelock state for graph plot
 *///www .jav a  2 s . c o  m
private static void populateWakelockStatePlot(XYPlot plot, TraceData.Analysis analysis) {

    final XYIntervalSeriesCollection wakelockData = new XYIntervalSeriesCollection();
    if (analysis != null) {

        XYIntervalSeries series = new XYIntervalSeries(WakelockState.WAKELOCK_ACQUIRED);
        wakelockData.addSeries(series);

        // Populate the data set
        final Map<Double, WakelockInfo> dataMap = new HashMap<Double, WakelockInfo>();
        Iterator<WakelockInfo> iter = analysis.getWakelockInfos().iterator();
        if (iter.hasNext()) {
            WakelockInfo lastEvent = iter.next();
            logger.fine("Wakelock Plotting");
            // Check whether WAKELOCK was acquired before logging begins.
            if (lastEvent.getWakelockState() == WakelockState.WAKELOCK_RELEASED) {
                series.add(0, 0, lastEvent.getBeginTimeStamp(), 0.5, 0, 1);
                dataMap.put(lastEvent.getBeginTimeStamp(), lastEvent);
            }
            while (iter.hasNext()) {
                WakelockInfo currEvent = iter.next();
                if (lastEvent.getWakelockState() == WakelockState.WAKELOCK_ACQUIRED) {
                    logger.fine("Wakelock acquired curr " + currEvent.getBeginTimeStamp());
                    logger.fine("Wakelock acquired last " + lastEvent.getBeginTimeStamp());
                    series.add(lastEvent.getBeginTimeStamp(), lastEvent.getBeginTimeStamp(),
                            currEvent.getBeginTimeStamp(), 0.5, 0, 1);
                    dataMap.put(lastEvent.getBeginTimeStamp(), lastEvent);
                }
                lastEvent = currEvent;
            }
            if (lastEvent.getWakelockState() == WakelockState.WAKELOCK_ACQUIRED) {
                series.add(lastEvent.getBeginTimeStamp(), lastEvent.getBeginTimeStamp(),
                        analysis.getTraceData().getTraceDuration(), 0.5, 0, 1);
                dataMap.put(lastEvent.getBeginTimeStamp(), lastEvent);
            }
        }

        // Assign ToolTip to renderer
        XYItemRenderer renderer = plot.getRenderer();
        renderer.setBaseToolTipGenerator(new XYToolTipGenerator() {

            @Override
            public String generateToolTip(XYDataset dataset, int series, int item) {

                WakelockInfo wi = dataMap.get(dataset.getXValue(series, item));
                if (wi != null) {

                    StringBuffer displayInfo = new StringBuffer(rb.getString("wakelock.tooltip.prefix"));
                    displayInfo.append(MessageFormat.format(rb.getString("wakelock.tooltip.content"),
                            ResourceBundleManager.getEnumString(wi.getWakelockState()),
                            wi.getBeginTimeStamp()));
                    displayInfo.append(rb.getString("wakelock.tooltip.suffix"));
                    return displayInfo.toString();
                }
                return null;
            }
        });
    }

    plot.setDataset(wakelockData);
}