List of usage examples for org.jfree.chart.renderer.xy XYItemRenderer setSeriesShape
public void setSeriesShape(int series, Shape shape);
From source file:org.esa.beam.timeseries.ui.graph.TimeSeriesGraphModel.java
@Override public void addTimeSeries(List<TimeSeries> timeSeriesList, TimeSeriesType type) { final int timeSeriesCount; final int collectionOffset; if (TimeSeriesType.INSITU.equals(type)) { timeSeriesCount = displayAxisMapping.getInsituCount(); collectionOffset = INSITU_COLLECTION_INDEX_OFFSET; } else {/* w w w.j av a2 s . c o m*/ timeSeriesCount = displayAxisMapping.getRasterCount(); if (TimeSeriesType.CURSOR.equals(type)) { collectionOffset = CURSOR_COLLECTION_INDEX_OFFSET; } else { collectionOffset = PIN_COLLECTION_INDEX_OFFSET; } } final String[] aliasNames = getAliasNames(); for (int aliasIdx = 0; aliasIdx < aliasNames.length; aliasIdx++) { final int targetCollectionIndex = collectionOffset + aliasIdx * 3; final TimeSeriesCollection targetTimeSeriesCollection = (TimeSeriesCollection) timeSeriesPlot .getDataset(targetCollectionIndex); if (targetTimeSeriesCollection != null) { targetTimeSeriesCollection.removeAllSeries(); } } if (timeSeriesCount == 0) { return; } final int numPositions = timeSeriesList.size() / timeSeriesCount; int timeSeriesIndexOffset = 0; for (int posIdx = 0; posIdx < numPositions; posIdx++) { final Shape posShape = getShapeForPosition(type, posIdx); for (int aliasIdx = 0; aliasIdx < aliasNames.length; aliasIdx++) { final int targetCollectionIndex = collectionOffset + aliasIdx * 3; final TimeSeriesCollection targetTimeSeriesCollection = (TimeSeriesCollection) timeSeriesPlot .getDataset(targetCollectionIndex); if (targetTimeSeriesCollection == null) { continue; } final XYItemRenderer renderer = timeSeriesPlot.getRenderer(targetCollectionIndex); final int dataSourceCount = getDataSourceCount(type, aliasNames[aliasIdx]); for (int ignoredIndex = 0; ignoredIndex < dataSourceCount; ignoredIndex++) { final TimeSeries currentTimeSeries = timeSeriesList.get(timeSeriesIndexOffset); targetTimeSeriesCollection.addSeries(currentTimeSeries); final int timeSeriesTargetIdx = targetTimeSeriesCollection.getSeriesCount() - 1; renderer.setSeriesShape(timeSeriesTargetIdx, posShape); renderer.setSeriesPaint(timeSeriesTargetIdx, renderer.getSeriesPaint(timeSeriesTargetIdx % dataSourceCount)); renderer.setSeriesVisibleInLegend(timeSeriesTargetIdx, !currentTimeSeries.isEmpty()); timeSeriesIndexOffset++; } final ValueAxis axisForDataset = timeSeriesPlot.getDomainAxisForDataset(targetCollectionIndex); axisForDataset.configure(); } } updateAnnotation(getCurrentView().getRaster()); }
From source file:com.att.aro.ui.view.diagnostictab.plot.BufferOccupancyPlot.java
@Override public void populate(XYPlot plot, AROTraceData analysis) { if (analysis != null) { bufferFillDataCollection.removeAllSeries(); seriesBufferFill = new XYSeries("Buffer Fill"); seriesDataSets = new TreeMap<>(); seriesDataSets = bufferOccupancyCalculatorImpl.populateBufferOccupancyDataSet( analysis.getAnalyzerResult().getVideoUsage(), chunkPlayTimeList); bufferSizeList.clear();/*from w w w . ja v a2 s.c om*/ double xCoordinate, yCoordinate; String ptCoordinate[] = new String[2]; // to hold x & y values if (!seriesDataSets.isEmpty()) { for (int key : seriesDataSets.keySet()) { ptCoordinate = seriesDataSets.get(key).trim().split(","); xCoordinate = Double.parseDouble(ptCoordinate[0]); yCoordinate = Double.parseDouble(ptCoordinate[1]); yCoordinate = yCoordinate / 1024; //Converting Buffer size measurement unit to KB bufferSizeList.add(yCoordinate); seriesBufferFill.add(xCoordinate, yCoordinate); } } Collections.sort(bufferSizeList); BufferOccupancyBPResult bufferOccupancyResult = bufferOccupancyCalculatorImpl .setMaxBuffer(bufferSizeList.get(bufferSizeList.size() - 1)); bufferOccupancyResult.setBufferByteDataSet(bufferSizeList); analysis.getAnalyzerResult().setBufferOccupancyResult(bufferOccupancyResult); // populate collection bufferFillDataCollection.addSeries(seriesBufferFill); XYItemRenderer renderer = new StandardXYItemRenderer(); renderer.setBaseToolTipGenerator(new XYToolTipGenerator() { @Override public String generateToolTip(XYDataset dataset, int series, int item) { // Tooltip value Number timestamp = dataset.getX(series, item); Number bufferSize = dataset.getY(series, item); StringBuffer tooltipValue = new StringBuffer(); tooltipValue.append(String.format("%.2f", bufferSize) + "," + String.format("%.2f", timestamp)); String[] value = tooltipValue.toString().split(","); return (MessageFormat.format(BUFFEROCCUPANCY_TOOLTIP, value[0], value[1])); //return "BufferSize: " + String.format("%.2f", bufferSize) + "KB \n Timestamp: " + String.format("%.2f", timestamp)+"S"; } }); renderer.setSeriesStroke(0, new BasicStroke(2.0f)); renderer.setSeriesPaint(0, Color.blue); renderer.setSeriesShape(0, shape); plot.setRenderer(renderer); } plot.setDataset(bufferFillDataCollection); }
From source file:charts.Chart.java
public static void ScatterPlot(XYSeriesCollection dataset, String title, String xAxisLabel, String yAxisLabel) { NumberAxis xAxis = new NumberAxis(xAxisLabel); xAxis.setAutoRangeIncludesZero(false); NumberAxis yAxis = new NumberAxis(yAxisLabel); yAxis.setAutoRangeIncludesZero(false); XYToolTipGenerator toolTipGenerator = new StandardXYToolTipGenerator(); XYURLGenerator urlGenerator = new StandardXYURLGenerator(); XYItemRenderer renderer = new XYLineAndShapeRenderer(false, true);//(boolean lines, boolean shapes) renderer.setBaseToolTipGenerator(toolTipGenerator); renderer.setURLGenerator(urlGenerator); XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer); //plot.setDataset(dataset); //plot.setDomainAxis(xAxis); //plot.setRangeAxis(yAxis); //plot.setRenderer(renderer); plot.setOrientation(PlotOrientation.VERTICAL); plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD); plot.setSeriesRenderingOrder(SeriesRenderingOrder.FORWARD); JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true);//true==legend //INVERTER AS CORES DOS PONTOS E LEGENDA. if (dataset.getSeriesCount() > 1) { Shape s0 = plot.getLegendItems().get(0).getShape(); Shape s1 = plot.getLegendItems().get(1).getShape(); renderer.setSeriesShape(0, s1); renderer.setSeriesShape(1, s0);/* w w w.j a va 2 s .c o m*/ Paint p0 = plot.getLegendItems().get(0).getLinePaint(); Paint p1 = plot.getLegendItems().get(1).getLinePaint(); renderer.setSeriesPaint(0, p1); renderer.setSeriesPaint(1, p0); } //FIM DA INVERSAO. JFrame chartwindow = new JFrame(title); JPanel jpanel = new ChartPanel(chart); jpanel.setPreferredSize(new Dimension(defaultwidth, defaultheight)); chartwindow.setContentPane(jpanel); chartwindow.pack(); RefineryUtilities.centerFrameOnScreen(chartwindow); chartwindow.setVisible(true); }
From source file:com.chart.SwingChart.java
/** * /*from w w w .j ava 2s .c o m*/ * @param axis Axis name to wich the new series belongs * @param cs Series Coinfiguration */ @Override public final void addSeries(String axis, SimpleSeriesConfiguration cs) { for (int i = 0; i < axes.size(); i++) { if (axes.get(i).getName().equals(axis)) { String strColor; javafx.scene.paint.Color color; int indice = seriesList.size(); if (cs.getColor() == null) { color = getColor(indice); } else { color = cs.getColor(); } strColor = color.toString(); XYSeriesCollection dataset = datasetList.get(i); Series series = new Series(cs.getName(), "color: " + strColor + ";width: " + String.valueOf(cs.getLineWidth()) + ";shape: " + cs.getShapeName() + ";", i, dataset.getSeriesCount()); dataset.addSeries(series); XYItemRenderer renderer = plot.getRenderer(i); renderer.setSeriesPaint(dataset.getSeriesCount() - 1, scene2awtColor(color)); SeriesShape simb = new SeriesShape(cs.getShapeName(), javafx.scene.paint.Color.web(strColor.replace("#", "0x"))); if (cs.getLineWidth() > 0) { ((XYLineAndShapeRenderer) renderer).setSeriesLinesVisible(dataset.getSeriesCount() - 1, true); renderer.setSeriesStroke(dataset.getSeriesCount() - 1, new BasicStroke(cs.getLineWidth())); } else { ((XYLineAndShapeRenderer) renderer).setSeriesLinesVisible(dataset.getSeriesCount() - 1, false); } if (cs.getShapeName().equals("null")) { renderer.setSeriesShape(dataset.getSeriesCount() - 1, null); ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(dataset.getSeriesCount() - 1, false); } else { renderer.setSeriesShape(dataset.getSeriesCount() - 1, simb.getShapeAWT()); ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(dataset.getSeriesCount() - 1, true); if (cs.getShapeName().contains("empty")) { ((XYLineAndShapeRenderer) renderer).setSeriesShapesFilled(dataset.getSeriesCount() - 1, false); } else { ((XYLineAndShapeRenderer) renderer).setSeriesShapesFilled(dataset.getSeriesCount() - 1, true); } } if (i == 0) { plot.setRenderer(renderer); } else { plot.setRenderer(i, renderer); } seriesList.add(series); final LegendAxis le = getLegendAxis(axis); final Label label = new Label(cs.toString()); Platform.runLater(() -> { label.setStyle("fondo: " + strChartBackgroundColor + ";-fx-background-color: fondo;-fx-text-fill: ladder(fondo, white 49%, black 50%);-fx-padding:5px;-fx-background-radius: 5;-fx-font-size: " + String.valueOf(fontSize) + "px"); }); label.setOnMouseClicked((MouseEvent t) -> { if (t.getClickCount() == 2) { for (int i1 = 0; i1 < seriesList.size(); i1++) { if (seriesList.get(i1).getKey().toString().equals(label.getText())) { editSeries(seriesList.get(i1)); break; } } } }); label.setOnMouseExited((MouseEvent t) -> { label.setStyle( label.getStyle().replace("-fx-background-color: blue", "-fx-background-color: fondo")); }); label.setOnMouseEntered((MouseEvent t) -> { label.setStyle( label.getStyle().replace("-fx-background-color: fondo", "-fx-background-color: blue")); for (Node le1 : legendFrame.getChildren()) { if (le1 instanceof LegendAxis) { le1.setStyle("-fx-background-color:" + strBackgroundColor); ((LegendAxis) le1).selected = false; } } }); label.setStyle("fondo: " + strChartBackgroundColor + ";-fx-text-fill: white;-fx-background-color: fondo;-fx-padding:5px;-fx-background-radius: 5;-fx-font-size: " + String.valueOf(fontSize) + "px"); le.getChildren().add(label); label.setGraphic(simb.getShapeGraphic()); break; } } }
From source file:com.chart.SwingChart.java
/** * Series edition//from w ww . j av a2 s . c o m * @param series Series to edit */ void editSeries(final Series series) { String[] style = series.getStyle().split(";"); String strColor = "black"; final TextField editWidth = new TextField(); String tempS = "null"; for (String e : style) { if (e.contains("color: ")) { strColor = e.replace("color: ", ""); } else if (e.contains("width: ")) { editWidth.setText(e.replace("width: ", "")); } else if (e.contains("shape: ")) { tempS = e.replace("shape: ", ""); } } final String symbol = tempS; final List<SeriesShape> symbolList = new ArrayList<>(); final ObservableList<SeriesShape> symbolListModel; final ListView<SeriesShape> comboSymbol = new ListView(); symbolList.add(new SeriesShape("null", javafx.scene.paint.Color.web(strColor))); symbolList.add(new SeriesShape("rectangle", javafx.scene.paint.Color.web(strColor))); symbolList.add(new SeriesShape("circle", javafx.scene.paint.Color.web(strColor))); symbolList.add(new SeriesShape("triangle", javafx.scene.paint.Color.web(strColor))); symbolList.add(new SeriesShape("crux", javafx.scene.paint.Color.web(strColor))); symbolList.add(new SeriesShape("diamond", javafx.scene.paint.Color.web(strColor))); symbolList.add(new SeriesShape("empty rectangle", javafx.scene.paint.Color.web(strColor))); symbolList.add(new SeriesShape("empty circle", javafx.scene.paint.Color.web(strColor))); symbolList.add(new SeriesShape("empty triangle", javafx.scene.paint.Color.web(strColor))); symbolList.add(new SeriesShape("empty diamond", javafx.scene.paint.Color.web(strColor))); symbolListModel = FXCollections.observableList(symbolList); comboSymbol.setItems(symbolListModel); comboSymbol.setCellFactory(new Callback<ListView<SeriesShape>, ListCell<SeriesShape>>() { @Override public ListCell<SeriesShape> call(ListView<SeriesShape> p) { ListCell<SeriesShape> cell = new ListCell<SeriesShape>() { @Override protected void updateItem(SeriesShape t, boolean bln) { super.updateItem(t, bln); if (t != null) { setText(""); setGraphic(t.getShapeGraphic()); } } }; return cell; } }); for (SeriesShape smb : symbolListModel) { if (smb.getName().equals(symbol)) { comboSymbol.getSelectionModel().select(smb); } } final ColorPicker colorPicker = new ColorPicker(javafx.scene.paint.Color.web(strColor)); colorPicker.setOnAction((ActionEvent t) -> { String sc = colorPicker.getValue().toString(); symbolListModel.clear(); symbolListModel.add(new SeriesShape("null", javafx.scene.paint.Color.web(sc))); symbolListModel.add(new SeriesShape("rectangle", javafx.scene.paint.Color.web(sc))); symbolListModel.add(new SeriesShape("circle", javafx.scene.paint.Color.web(sc))); symbolListModel.add(new SeriesShape("triangle", javafx.scene.paint.Color.web(sc))); symbolListModel.add(new SeriesShape("crux", javafx.scene.paint.Color.web(sc))); symbolListModel.add(new SeriesShape("diamond", javafx.scene.paint.Color.web(sc))); symbolListModel.add(new SeriesShape("empty rectangle", javafx.scene.paint.Color.web(sc))); symbolListModel.add(new SeriesShape("empty circle", javafx.scene.paint.Color.web(sc))); symbolListModel.add(new SeriesShape("empty triangle", javafx.scene.paint.Color.web(sc))); symbolListModel.add(new SeriesShape("empty diamond", javafx.scene.paint.Color.web(sc))); comboSymbol.setItems(symbolListModel); for (SeriesShape smb : symbolListModel) { if (smb.getName().equals(symbol)) { comboSymbol.getSelectionModel().select(smb); } } }); GridPane grid = new GridPane(); grid.setHgap(10); grid.setVgap(10); grid.setPadding(new Insets(0, 10, 0, 10)); grid.add(new Label("Series"), 0, 0); grid.add(new Label(series.getKey().toString()), 1, 0); grid.add(new Label("Color"), 0, 1); grid.add(colorPicker, 1, 1); grid.add(new Label("Width"), 0, 2); grid.add(editWidth, 1, 2); grid.add(new Label("Shape"), 0, 3); grid.add(comboSymbol, 1, 3); new PseudoModalDialog(skeleton, grid, true) { @Override public boolean validation() { String strColor = colorPicker.getValue().toString(); String strWidth = editWidth.getText(); double dWidth = Double.valueOf(strWidth); String strSimbolo = "null"; SeriesShape simb = new SeriesShape(comboSymbol.getSelectionModel().getSelectedItem().toString(), javafx.scene.paint.Color.web(strColor)); XYItemRenderer renderer = (XYItemRenderer) plot.getRenderer(series.getAxisIndex()); renderer.setSeriesPaint(series.getSeriesIndex(), scene2awtColor(colorPicker.getValue())); try { if (Double.valueOf(strWidth) > 0) { ((XYLineAndShapeRenderer) renderer).setSeriesLinesVisible(series.getSeriesIndex(), true); renderer.setSeriesStroke(series.getSeriesIndex(), new BasicStroke(Integer.valueOf(strWidth))); } else { ((XYLineAndShapeRenderer) renderer).setSeriesLinesVisible(series.getSeriesIndex(), false); } } catch (NumberFormatException ex) { } if (simb.getName().contains("null")) { ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(series.getSeriesIndex(), false); renderer.setSeriesShape(series.getSeriesIndex(), null); } else { ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(series.getSeriesIndex(), true); renderer.setSeriesShape(series.getSeriesIndex(), simb.getShapeAWT()); if (simb.getName().contains("empty")) { ((XYLineAndShapeRenderer) renderer).setSeriesShapesFilled(series.getSeriesIndex(), false); } else { ((XYLineAndShapeRenderer) renderer).setSeriesShapesFilled(series.getSeriesIndex(), true); } } series.setStyle( "color: " + strColor + ";width: " + editWidth.getText() + ";shape: " + strSimbolo + ";"); for (Node le : legendFrame.getChildren()) { if (le instanceof LegendAxis) { for (Node nn : ((LegendAxis) le).getChildren()) { if (nn instanceof Label) { if (((Label) nn).getText().equals(series.getKey().toString())) { ((Label) nn).setGraphic(simb.getShapeGraphic()); } } } } } return true; } }.show(); }
From source file:org.gumtree.vis.awt.time.TimePlotChartEditor.java
@Override public void updateChart(JFreeChart chart) { super.updateChart(chart); if (currentDataset != null && currentSeriesIndex >= 0) { XYItemRenderer renderer = chart.getXYPlot().getRendererForDataset(currentDataset); if (renderer instanceof XYLineAndShapeRenderer) { renderer.setSeriesPaint(currentSeriesIndex, curveColorPaint.getPaint()); Stroke stroke = curveStrokeSample.getStroke(); if (stroke == null) { ((XYLineAndShapeRenderer) renderer).setSeriesLinesVisible(currentSeriesIndex, false); } else { ((XYLineAndShapeRenderer) renderer).setSeriesLinesVisible(currentSeriesIndex, true); renderer.setSeriesStroke(currentSeriesIndex, stroke); }/*from www.j a va2 s .co m*/ // if (!isMarkerVisible) { // for (int i = 0; i < chart.getXYPlot().getSeriesCount(); i++) { // ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(i, // isMarkerVisible); // } // } // ((XYLineAndShapeRenderer) renderer).setBaseShapesVisible( // isMarkerVisible); ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(currentSeriesIndex, showMarker.isSelected()); Shape shape = currentShape.getShape(); if (shape == null) { ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(currentSeriesIndex, false); } else { // ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible( // currentSeriesIndex, true); renderer.setSeriesShape(currentSeriesIndex, shape); } ((XYLineAndShapeRenderer) renderer).setSeriesShapesFilled(currentSeriesIndex, markerFilled.isSelected()); renderer.setSeriesVisible(currentSeriesIndex, curveVisable.isSelected()); //Update logarithm X filed ValueAxis axis = chart.getXYPlot().getDomainAxis(); if (showAllHistory.isSelected()) { axis.setFixedAutoRange(0d); } if (showPartHistory.isSelected()) { double fixedTimeSec = 0; try { fixedTimeSec = Double.valueOf(timeField.getText()); } catch (Exception e) { // TODO: handle exception } if (fixedTimeSec <= 0) { fixedTimeSec = 60; } axis.setFixedAutoRange(fixedTimeSec * 1000); } //Update logarithm Y filed axis = chart.getXYPlot().getRangeAxis(); if (axis instanceof LogarithmizableAxis) { // if (logarithmY.isSelected() != initialLogarithmY) { // ((LogarithmizableAxis) axis).setLogarithmic( // logarithmY.isSelected()); // ((LogarithmizableAxis) axis).autoAdjustRange(); // } } } } }
From source file:org.gumtree.vis.plot1d.Plot1DChartEditor.java
@Override public void updateChart(JFreeChart chart) { super.updateChart(chart); if (currentSeriesIndex >= 0) { XYItemRenderer renderer = chart.getXYPlot().getRenderer(); if (renderer instanceof XYLineAndShapeRenderer) { renderer.setSeriesPaint(currentSeriesIndex, curveColorPaint.getPaint()); Stroke stroke = curveStrokeSample.getStroke(); if (stroke == null) { ((XYLineAndShapeRenderer) renderer).setSeriesLinesVisible(currentSeriesIndex, false); } else { ((XYLineAndShapeRenderer) renderer).setSeriesLinesVisible(currentSeriesIndex, true); renderer.setSeriesStroke(currentSeriesIndex, stroke); }/*from w w w. j a va 2 s.c o m*/ ((XYErrorRenderer) renderer).setDrawYError(showError.isSelected()); boolean isMarkerVisible = showMarker.isSelected(); if (!isMarkerVisible) { for (int i = 0; i < chart.getXYPlot().getSeriesCount(); i++) { ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(i, isMarkerVisible); } } ((XYLineAndShapeRenderer) renderer).setBaseShapesVisible(isMarkerVisible); Shape shape = currentShape.getShape(); if (shape == null) { ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(currentSeriesIndex, false); } else { ((XYLineAndShapeRenderer) renderer).setSeriesShapesVisible(currentSeriesIndex, isMarkerVisible); renderer.setSeriesShape(currentSeriesIndex, shape); } ((XYLineAndShapeRenderer) renderer).setSeriesShapesFilled(currentSeriesIndex, markerFilled.isSelected()); renderer.setSeriesVisible(currentSeriesIndex, curveVisable.isSelected()); //Update logarithm X filed ValueAxis axis = chart.getXYPlot().getDomainAxis(); if (axis instanceof LogarithmizableAxis) { if (logarithmX.isSelected() != initialLogarithmX) { ((LogarithmizableAxis) axis).setLogarithmic(logarithmX.isSelected()); ((LogarithmizableAxis) axis).autoAdjustRange(); } } if (flipX.isSelected() != initialFlipX) { axis.setInverted(flipX.isSelected()); } float newMargin = initialMargin; try { newMargin = Float.valueOf(horizontalMargin.getText()); if (newMargin < 0) { newMargin = 0; } else if (newMargin > 0.10) { newMargin = 0.10f; } } catch (Exception e) { } if (newMargin != initialMargin) { axis.setLowerMargin(newMargin); axis.setUpperMargin(newMargin); } //Update logarithm Y filed axis = chart.getXYPlot().getRangeAxis(); if (axis instanceof LogarithmizableAxis) { if (logarithmY.isSelected() != initialLogarithmY) { ((LogarithmizableAxis) axis).setLogarithmic(logarithmY.isSelected()); ((LogarithmizableAxis) axis).autoAdjustRange(); } } if (flipY.isSelected() != initialFlipY) { axis.setInverted(flipY.isSelected()); } } } applyROIChange(); }
From source file:com.att.aro.ui.view.diagnostictab.plot.BufferInSecondsPlot.java
@Override public void populate(XYPlot plot, AROTraceData analysis) { if (analysis != null) { VideoUsage videoUsage = analysis.getAnalyzerResult().getVideoUsage(); bufferFillDataCollection.removeAllSeries(); seriesBufferFill = new XYSeries("Buffer Against Play Time"); seriesDataSets = new TreeMap<>(); seriesDataSets = bufferInSecondsCalculatorImpl.populate(videoUsage, chunkPlayTimeList); //updating video stall result in packetAnalyzerResult analysis.getAnalyzerResult().setVideoStalls(bufferInSecondsCalculatorImpl.getVideoStallResult()); bufferTimeList.clear();// ww w . j a v a 2s .com double xCoordinate, yCoordinate; String ptCoordinate[] = new String[2]; // to hold x & y values if (!seriesDataSets.isEmpty()) { for (int key : seriesDataSets.keySet()) { ptCoordinate = seriesDataSets.get(key).trim().split(","); xCoordinate = Double.parseDouble(ptCoordinate[0]); yCoordinate = Double.parseDouble(ptCoordinate[1]); bufferTimeList.add(yCoordinate); seriesBufferFill.add(xCoordinate, yCoordinate); } } Collections.sort(bufferTimeList); BufferTimeBPResult bufferTimeResult = bufferInSecondsCalculatorImpl .updateBufferTimeResult(bufferTimeList); analysis.getAnalyzerResult().setBufferTimeResult(bufferTimeResult); // populate collection bufferFillDataCollection.addSeries(seriesBufferFill); XYItemRenderer renderer = new StandardXYItemRenderer(); renderer.setBaseToolTipGenerator(new XYToolTipGenerator() { @Override public String generateToolTip(XYDataset dataset, int series, int item) { // Tooltip value Number timestamp = dataset.getX(series, item); Number bufferTime = dataset.getY(series, item); StringBuffer tooltipValue = new StringBuffer(); Map<Double, Long> segmentEndTimeMap = bufferInSecondsCalculatorImpl.getSegmentEndTimeMap(); Map<Long, Double> segmentStartTimeMap = bufferInSecondsCalculatorImpl.getSegmentStartTimeMap(); double firstSegmentNo = videoUsage.getChunksBySegmentNumber().get(0).getSegment(); DecimalFormat decimalFormat = new DecimalFormat("0.##"); if (segmentStartTimeMap == null || segmentStartTimeMap.isEmpty()) { return "-,-,-"; } List<Long> segmentList = new ArrayList<Long>(segmentEndTimeMap.values()); Collections.sort(segmentList); Long lastSegmentNo = segmentList.get(segmentList.size() - 1); Long segmentNumber = 0L; boolean isSegmentPlaying = false; boolean startup = false; boolean endPlay = false; for (double segmentEndTime : segmentEndTimeMap.keySet()) { if (segmentEndTime > timestamp.doubleValue()) { segmentNumber = segmentEndTimeMap.get(segmentEndTime); if (segmentNumber == firstSegmentNo) { startup = true; } if (segmentStartTimeMap.get(segmentNumber) <= timestamp.doubleValue()) { tooltipValue.append(decimalFormat.format(segmentNumber) + ","); isSegmentPlaying = true; startup = false; } } else if (lastSegmentNo.equals(segmentEndTimeMap.get(segmentEndTime)) && segmentEndTime == timestamp.doubleValue()) { endPlay = true; } } if (endPlay || startup) { tooltipValue.append("-,"); } else if (!isSegmentPlaying && !startup) { tooltipValue.append("Stall,"); } tooltipValue.append(String.format("%.2f", bufferTime) + "," + String.format("%.2f", timestamp)); String[] value = tooltipValue.toString().split(","); return (MessageFormat.format(BUFFER_TIME_OCCUPANCY_TOOLTIP, value[0], value[1], value[2])); } }); renderer.setSeriesStroke(0, new BasicStroke(2.0f)); renderer.setSeriesPaint(0, Color.MAGENTA); renderer.setSeriesShape(0, shape); plot.setRenderer(renderer); } plot.setDataset(bufferFillDataCollection); }