List of usage examples for org.jfree.chart.plot XYPlot addAnnotation
public void addAnnotation(XYAnnotation annotation)
From source file:net.sourceforge.processdash.ui.web.psp.TimeLogPhaseWaterfallChart.java
private void setupGaps(GapSkipTracker gapTracker, DateAxis dateAxis, XYPlot plot) { if (gapTracker.gaps.isEmpty()) return;/*from ww w . jav a 2s. c o m*/ SegmentedTimeline timeline = new SegmentedTimeline(1000, 100, 0); timeline.setStartTime(gapTracker.leftEnd); for (Span gap : gapTracker.gaps) { timeline.addException(gap.start + GAP_SPACING, gap.end - 1000); long annotationX = gap.start + GAP_SPACING / 2; plot.addAnnotation(new XYLineAnnotation(annotationX, VERT_LINE_MIN_Y, annotationX, VERT_LINE_MAX_Y, GAP_STROKE, Color.darkGray)); double boxW = GAP_SPACING * 0.4; XYBoxAnnotation box = new XYBoxAnnotation(annotationX - boxW, VERT_LINE_MIN_Y, annotationX + boxW, VERT_LINE_MAX_Y, null, null, null); String toolTip = resources.format("No_Activity_FMT", gap.getStart(), gap.getEnd()); box.setToolTipText(toolTip); plot.addAnnotation(box); } dateAxis.setTimeline(timeline); }
From source file:org.jgrasstools.gears.utils.chart.Scatter.java
public void addAnnotation(String text, double x) { XYPlot plot = (XYPlot) getChart().getPlot(); Color color = new Color(0, 0, 0, 100); Marker updateMarker = new ValueMarker(x, color, new BasicStroke(2f)); plot.addDomainMarker(updateMarker);/*from w w w.j av a 2 s . c o m*/ if (text != null) { XYTextAnnotation updateLabel = new XYTextAnnotation(text, x, 0); updateLabel.setRotationAnchor(TextAnchor.BASELINE_CENTER); updateLabel.setTextAnchor(TextAnchor.BASELINE_CENTER); updateLabel.setRotationAngle(-3.14 / 2); updateLabel.setPaint(Color.black); plot.addAnnotation(updateLabel); } setShapeLinesVisibility(plot); }
From source file:grafix.graficos.eixos.Eixo.java
private void incluirLegenda(final XYPlot plot) { if (isLegenda()) { LegendTitle lt = new LegendTitle(plot); lt.setItemFont(new Font("Dialog", Font.PLAIN, 11)); lt.setBackgroundPaint(new Color(255, 255, 255, 100)); lt.setBorder(new BlockBorder(new Color(180, 180, 180))); lt.setPosition(RectangleEdge.TOP); XYTitleAnnotation ta = new XYTitleAnnotation(0.01, 0.98, lt, RectangleAnchor.TOP_LEFT); ta.setMaxWidth(0.48);/*from w w w. j a va 2 s . c o m*/ plot.addAnnotation(ta); } }
From source file:Applet.EmbeddedChart.java
/** * Creates a chart.//from w w w . j a va 2 s . com * * @param dataset * the data for the chart. * * @return a chart. */ private JFreeChart createChart(final XYDataset dataset, String title, boolean gofr) { // create the chart... final JFreeChart chart = ChartFactory.createXYLineChart(null, // chart // title "Radial Distance, r/\u03c3", // x axis label title, // y axis label dataset, // data PlotOrientation.VERTICAL, true, // include legend true, // tooltips false // urls ); // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART... chart.setBackgroundPaint(Color.white); chart.getLegend().setPosition(RectangleEdge.RIGHT); // final StandardLegend legend = (StandardLegend) chart.getLegend(); // legend.setDisplaySeriesShapes(true); // get a reference to the plot for further customisation... final XYPlot plot = chart.getXYPlot(); plot.setBackgroundPaint(Color.lightGray); // plot.setAxisOffset(new Spacer(Spacer.ABSOLUTE, 5.0, 5.0, 5.0, 5.0)); plot.setDomainGridlinePaint(Color.white); plot.setRangeGridlinePaint(Color.white); XYTitleAnnotation xyta = new XYTitleAnnotation(0.98, 0.98, chart.getLegend(), RectangleAnchor.TOP_RIGHT); chart.removeLegend(); plot.addAnnotation(xyta); final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, false); for (int i = 0; i < 2; i++) { renderer.setSeriesPaint(i * 6 + 0, new Color(255, 0, 0)); renderer.setSeriesPaint(i * 6 + 1, new Color(0, 0, 255)); renderer.setSeriesPaint(i * 6 + 2, new Color(0, 139, 0)); renderer.setSeriesPaint(i * 6 + 3, new Color(255, 165, 0)); renderer.setSeriesPaint(i * 6 + 4, new Color(255, 0, 255)); renderer.setSeriesPaint(i * 6 + 5, new Color(0, 0, 0)); renderer.setSeriesStroke(i * 6 + 0, new BasicStroke(1.3f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, new float[] { 10.0f }, 0.0f)); renderer.setSeriesStroke(i * 6 + 1, new BasicStroke(1.3f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, new float[] { 50.0f, 2.0f }, 0.0f)); renderer.setSeriesStroke(i * 6 + 2, new BasicStroke(1.3f, BasicStroke.JOIN_ROUND, BasicStroke.JOIN_MITER, 10.0f, new float[] { 30.0f, 1.0f, 1.0f }, 0.0f)); renderer.setSeriesStroke(i * 6 + 3, new BasicStroke(1.3f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 10.0f, new float[] { 1.0f, 3.0f }, 0.0f)); renderer.setSeriesStroke(i * 6 + 4, new BasicStroke(1.3f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, new float[] { 1.0f, 2.0f, 3.0f, 4.0f }, 0.0f)); renderer.setSeriesStroke(i * 6 + 5, new BasicStroke(1.3f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, new float[] { 5.0f, 1.0f, 20.0f, 1.0f }, 0.0f)); } plot.setRenderer(renderer); return chart; }
From source file:be.ugent.maf.cellmissy.gui.controller.analysis.singlecell.explore.EnclosingBallController.java
public void plotXTBalls(TrackDataHolder trackDataHolder) { int selectedIndexEpsilon = exploreTrackController.getExploreTrackPanel().getEnclosingBallEpsCombobox() .getSelectedIndex();/*from w w w . j av a2s .c o m*/ List<List<EnclosingBall>> xtEnclosingBallList = trackDataHolder.getStepCentricDataHolder() .getxTEnclosingBalls(); List<EnclosingBall> xTempBalls = xtEnclosingBallList.get(selectedIndexEpsilon); // get the track coordinates matrix and transpose it Double[][] transpose2DArray = AnalysisUtils .transpose2DArray(trackDataHolder.getStepCentricDataHolder().getCoordinatesMatrix()); // we get the x coordinates and the time information double[] xCoordinates = ArrayUtils.toPrimitive(AnalysisUtils.excludeNullValues(transpose2DArray[0])); double[] timeIndexes = trackDataHolder.getStepCentricDataHolder().getTimeIndexes(); // we create the series and set its key XYSeries xtSeries = JFreeChartUtils.generateXYSeries(timeIndexes, xCoordinates); String seriesKey = "track " + trackDataHolder.getTrack().getTrackNumber() + ", well " + trackDataHolder.getTrack().getWellHasImagingType().getWell(); xtSeries.setKey(seriesKey); // we then create the XYSeriesCollection and use it to make a new line chart XYSeriesCollection xtSeriesCollection = new XYSeriesCollection(xtSeries); JFreeChart chart = ChartFactory.createXYLineChart(seriesKey + " - enclosing balls", "time", "x (m)", xtSeriesCollection, PlotOrientation.VERTICAL, false, true, false); XYPlot xyPlot = chart.getXYPlot(); xyPlot.getDomainAxis().setStandardTickUnits(NumberAxis.createIntegerTickUnits()); NumberAxis yaxis = (NumberAxis) xyPlot.getRangeAxis(); yaxis.setAutoRangeIncludesZero(false); JFreeChartUtils.setupXYPlot(xyPlot); JFreeChartUtils.setupSingleTrackPlot(chart, exploreTrackController.getExploreTrackPanel().getTracksList().getSelectedIndex(), true); xTBallsChartPanel.setChart(chart); xTempBalls.stream().forEach((ball) -> { xyPlot.addAnnotation(new XYShapeAnnotation(ball.getShape(), JFreeChartUtils.getDashedLine(), GuiUtils.getDefaultColor())); }); }
From source file:be.ugent.maf.cellmissy.gui.controller.analysis.singlecell.explore.EnclosingBallController.java
public void plotYTBalls(TrackDataHolder trackDataHolder) { int selectedIndexEpsilon = exploreTrackController.getExploreTrackPanel().getEnclosingBallEpsCombobox() .getSelectedIndex();// w ww . j ava 2s .com List<List<EnclosingBall>> ytEnclosingBallList = trackDataHolder.getStepCentricDataHolder() .getyTEnclosingBalls(); List<EnclosingBall> yTempBalls = ytEnclosingBallList.get(selectedIndexEpsilon); // get the track coordinates matrix and transpose it Double[][] transpose2DArray = AnalysisUtils .transpose2DArray(trackDataHolder.getStepCentricDataHolder().getCoordinatesMatrix()); // we get the y coordinates and the time information double[] yCoordinates = ArrayUtils.toPrimitive(AnalysisUtils.excludeNullValues(transpose2DArray[1])); double[] timeIndexes = trackDataHolder.getStepCentricDataHolder().getTimeIndexes(); // we create the series and set its key XYSeries ytSeries = JFreeChartUtils.generateXYSeries(timeIndexes, yCoordinates); String seriesKey = "track " + trackDataHolder.getTrack().getTrackNumber() + ", well " + trackDataHolder.getTrack().getWellHasImagingType().getWell(); ytSeries.setKey(seriesKey); // we then create the XYSeriesCollection and use it to make a new line chart XYSeriesCollection ytSeriesCollection = new XYSeriesCollection(ytSeries); JFreeChart chart = ChartFactory.createXYLineChart(seriesKey + " - enclosing balls", "time", "y (m)", ytSeriesCollection, PlotOrientation.VERTICAL, false, true, false); XYPlot xyPlot = chart.getXYPlot(); xyPlot.getDomainAxis().setStandardTickUnits(NumberAxis.createIntegerTickUnits()); NumberAxis yaxis = (NumberAxis) xyPlot.getRangeAxis(); yaxis.setAutoRangeIncludesZero(false); JFreeChartUtils.setupXYPlot(xyPlot); JFreeChartUtils.setupSingleTrackPlot(chart, exploreTrackController.getExploreTrackPanel().getTracksList().getSelectedIndex(), true); yTBallsChartPanel.setChart(chart); yTempBalls.stream().forEach((ball) -> { xyPlot.addAnnotation(new XYShapeAnnotation(ball.getShape(), JFreeChartUtils.getDashedLine(), GuiUtils.getDefaultColor())); }); }
From source file:ecosim.gui.SummaryPane.java
/** * Private method to build the binning chart. * * @return A ChartPanel containing the binning chart. *//* w w w . ja v a 2s . c o m*/ private ChartPanel makeBinningChart() { final DefaultXYDataset binData = new DefaultXYDataset(); final NumberFormat nf = NumberFormat.getInstance(); final NumberAxis xAxis = new NumberAxis("Sequence identity criterion"); nf.setMinimumFractionDigits(2); xAxis.setLowerBound(Binning.binLevels[0]); xAxis.setUpperBound(1.0D); xAxis.setTickUnit(new NumberTickUnit(0.05D, nf)); LogAxis yAxis = new LogAxis("Number of bins"); yAxis.setBase(2.0D); yAxis.setNumberFormatOverride(NumberFormat.getInstance()); yAxis.setTickUnit(new NumberTickUnit(2.0D)); yAxis.setMinorTickMarksVisible(true); yAxis.setAutoRangeMinimumSize(4.0D); yAxis.setSmallestValue(1.0D); XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, false); for (int i = 0; i < seriesColors.length; i++) { renderer.setSeriesPaint(i, seriesColors[i]); renderer.setSeriesStroke(i, new BasicStroke(seriesStroke[i])); } XYPlot plot = new XYPlot(binData, xAxis, yAxis, renderer); JFreeChart binChart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, false); binChart.setPadding(new RectangleInsets(0.0D, 0.0D, 0.0D, 10.0D)); LegendTitle legend = new LegendTitle(plot); legend.setMargin(new RectangleInsets(1.0D, 1.0D, 1.0D, 1.0D)); legend.setFrame(new LineBorder()); legend.setBackgroundPaint(Color.white); legend.setPosition(RectangleEdge.BOTTOM); plot.addAnnotation(new XYTitleAnnotation(0.001D, 0.999D, legend, RectangleAnchor.TOP_LEFT)); final ChartPanel pane = new ChartPanel(binChart, false, true, true, false, false); // Watch for changes to the Summary object. summary.addObserver(new Observer() { public void update(Observable o, Object obj) { Summary s = (Summary) obj; ParameterEstimate estimate = s.getEstimate(); ArrayList<BinLevel> bins = s.getBins(); if (bins.size() > 0) { double[][] values = new double[2][bins.size()]; Double low = 1.0d; for (int i = 0; i < bins.size(); i++) { BinLevel bin = bins.get(i); values[0][i] = bin.getCrit(); values[1][i] = bin.getLevel(); if (values[0][i] < low) low = values[0][i]; } binData.addSeries("sequences", values); xAxis.setLowerBound(low); if (low > 0.95d - MasterVariables.EPSILON) { xAxis.setTickUnit(new NumberTickUnit(0.005D, nf)); } else if (low > 0.90d - MasterVariables.EPSILON) { xAxis.setTickUnit(new NumberTickUnit(0.010D, nf)); } else if (low > 0.80d - MasterVariables.EPSILON) { xAxis.setTickUnit(new NumberTickUnit(0.025D, nf)); } if (estimate != null) { double[][] omega = new double[2][bins.size()]; double[][] sigma = new double[2][bins.size()]; double[] omegaLine = estimate.getOmega(); double[] sigmaLine = estimate.getSigma(); for (int i = 0; i < bins.size(); i++) { double crit = 1.0D - values[0][i]; double snp = s.getLength() * crit; omega[0][i] = values[0][i]; sigma[0][i] = values[0][i]; omega[1][i] = Math.pow(2.0D, snp * omegaLine[0] + omegaLine[1]); sigma[1][i] = Math.pow(2.0D, snp * sigmaLine[0] + sigmaLine[1]); } if (-1.0D * omegaLine[0] > MasterVariables.EPSILON) { binData.addSeries("omega", omega); } if (-1.0D * sigmaLine[0] > MasterVariables.EPSILON) { binData.addSeries("sigma", sigma); } } // Repaint the summary pane. pane.repaint(); } } }); return pane; }
From source file:com.bdb.weather.display.day.DayWindPane.java
@Override protected void addAnnotations(XYPlot plot, SummaryRecord summaryRecord) { plot.clearAnnotations();//from w w w.j a va 2 s. co m if (summaryRecord == null) return; LocalDateTime maxSpeedTime = summaryRecord.getMaxWindSpeedTime(); if (maxSpeedTime != null) { double maxSpeed = summaryRecord.getMaxWindSpeed().get(); String maxSpeedAnnotation = Speed.getDefaultFormatter().format(maxSpeed) + Speed.getDefaultUnit() + " " + DisplayConstants.formatTime(maxSpeedTime.toLocalTime()); XYTextAnnotation a = new XYTextAnnotation(maxSpeedAnnotation, (double) TimeUtils.localDateTimeToEpochMillis(maxSpeedTime), maxSpeed); a.setTextAnchor(TextAnchor.BASELINE_CENTER); plot.addAnnotation(a); } }
From source file:org.owasp.benchmark.score.report.Scatter.java
private void makeLegend(OverallResults or, int x, int y, XYSeriesCollection dataset, XYPlot xyplot) { char ch = 'A'; int i = 0;//from w ww . j a va2 s.c om for (OverallResult r : or.getResults()) { String label = (ch == 'I' ? ch + ": " : "" + ch + ": "); int score = (int) (100 * (r.tpr - r.fpr)); String msg = "\u25A0 " + label + r.category + " (" + score + "%)"; XYTextAnnotation stroketext = new XYTextAnnotation(msg, x, y + i * -3.3); stroketext.setTextAnchor(TextAnchor.CENTER_LEFT); stroketext.setBackgroundPaint(Color.white); stroketext.setPaint(Color.blue); stroketext.setFont(theme.getRegularFont()); xyplot.addAnnotation(stroketext); i++; ch++; } }
From source file:com.intel.stl.ui.main.view.HealthHistoryView.java
public void setDataset(final IntervalXYDataset dataset) { JFreeChart chart = ComponentFactory.createStepAreaChart(dataset, new XYItemLabelGenerator() { @Override/*from w ww . j a va 2 s. c o m*/ public String generateLabel(XYDataset dataset, int series, int item) { Number val = dataset.getY(series, item); return UIConstants.INTEGER.format(val.intValue()); } }); chart.addProgressListener(new ChartProgressListener() { @Override public void chartProgress(ChartProgressEvent event) { if (event.getType() == ChartProgressEvent.DRAWING_STARTED && currentValue != null) { currentValue.setText(scoreString); currentValue.setPaint(scoreColor); currentValue.setToolTipText(scoreTip); } } }); XYPlot plot = chart.getXYPlot(); plot.getRangeAxis().setRange(0, 105); plot.getRenderer().setSeriesPaint(0, UIConstants.INTEL_BLUE); currentValue = new TextTitle(scoreString, scoreFont); currentValue.setPaint(scoreColor); currentValue.setToolTipText(scoreTip); // currentValue.setBackgroundPaint(new Color(255, 255, 255, 128)); currentValue.setPosition(RectangleEdge.BOTTOM); XYTitleAnnotation xytitleannotation = new XYTitleAnnotation(0.49999999999999998D, 0.49999999999999998D, currentValue, RectangleAnchor.CENTER); // xytitleannotation.setMaxWidth(0.47999999999999998D); plot.addAnnotation(xytitleannotation); chartPanel.setChart(chart); }