List of usage examples for org.jfree.chart.renderer.xy XYLineAndShapeRenderer setBaseItemLabelFont
public void setBaseItemLabelFont(Font font)
From source file:org.codehaus.mojo.dashboard.report.plugin.chart.time.TimeChartRenderer.java
public void createChart() { XYDataset dataset = (XYDataset) this.datasetStrategy.getDataset(); report = ChartFactory.createTimeSeriesChart(this.datasetStrategy.getTitle(), // title this.datasetStrategy.getXAxisLabel(), // x-axis label this.datasetStrategy.getYAxisLabel(), // y-axis label dataset, // data true, // create legend? true, // generate tooltips? false // generate URLs? );/*from w w w.j a v a 2s . co m*/ // report.setBackgroundPaint( Color.lightGray ); XYPlot plot = report.getXYPlot(); plot.setBackgroundPaint(Color.white); plot.setDomainGridlinePaint(Color.lightGray); plot.setRangeGridlinePaint(Color.lightGray); plot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D)); XYItemRenderer xyitemrenderer = plot.getRenderer(); if (xyitemrenderer instanceof XYLineAndShapeRenderer) { XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) xyitemrenderer; renderer.setBaseShapesVisible(true); renderer.setBaseShapesFilled(true); renderer.setBaseShapesVisible(true); renderer.setDrawOutlines(true); renderer.setBaseItemLabelGenerator( ((AbstractTimeChartStrategy) this.datasetStrategy).getLabelGenerator()); renderer.setBaseItemLabelFont(new Font("SansSerif", Font.BOLD, 10)); renderer.setBaseItemLabelsVisible(true); renderer.setBasePositiveItemLabelPosition( new ItemLabelPosition(ItemLabelAnchor.OUTSIDE10, TextAnchor.BASELINE_RIGHT)); } Paint[] paints = this.datasetStrategy.getPaintColor(); for (int i = 0; i < dataset.getSeriesCount() && i < paints.length; i++) { xyitemrenderer.setSeriesPaint(i, paints[i]); xyitemrenderer.setSeriesStroke(i, new BasicStroke(2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); } plot.setRangeAxis(((AbstractTimeChartStrategy) this.datasetStrategy).getRangeAxis()); DashDateAxis axisDate = new DashDateAxis(); axisDate.setDateFormatOverride( ((AbstractTimeChartStrategy) this.datasetStrategy).getTimePeriod().getDateFormat()); axisDate.setLabel(this.datasetStrategy.getXAxisLabel()); axisDate.setTickUnit(getTickUnit(((AbstractTimeChartStrategy) this.datasetStrategy).getTimePeriod())); axisDate.setUpperMargin(0.0D); axisDate.setDateTickLabelAngle(-0.6); if (((AbstractTimeChartStrategy) this.datasetStrategy).getStartDate() != null && ((AbstractTimeChartStrategy) this.datasetStrategy).getEndDate() != null) { axisDate.setRangeWithMargins( new DateRange(((AbstractTimeChartStrategy) this.datasetStrategy).getStartDate(), ((AbstractTimeChartStrategy) this.datasetStrategy).getEndDate())); } plot.setDomainAxis(axisDate); Date[] dates = DateUtils.getAllDates(((AbstractTimeChartStrategy) this.datasetStrategy).getStartDate(), ((AbstractTimeChartStrategy) this.datasetStrategy).getEndDate(), ((AbstractTimeChartStrategy) this.datasetStrategy).getTimePeriod()); int width = (dates.length * ChartUtils.STANDARD_TIME_ENTRY_WIDTH) + ChartUtils.STANDARD_TIME_ADDITIONAL_WIDTH; if (width > ChartUtils.MINIMUM_WIDTH) { this.setWidth(width); } else { this.setWidth(ChartUtils.MINIMUM_WIDTH); } }
From source file:com.marvelution.jira.plugins.hudson.charts.BuildTestResultsRatioChartGenerator.java
/** * {@inheritDoc}//from ww w .ja v a2 s . c om */ @Override public ChartHelper generateChart() { buildMap = new HashMap<Integer, Build>(); final CategoryTableXYDataset dataset = new CategoryTableXYDataset(); for (Build build : builds) { final TestResult results = build.getTestResult(); double percentagePass = 0.0D, percentageFail = 0.0D, percentageSkipped = 0.0D; if (results != null && results.getTotal() > 0) { percentagePass = Double.valueOf(results.getPassed()) / Double.valueOf(results.getTotal()) * 100.0D; percentageFail = Double.valueOf(results.getFailed()) / Double.valueOf(results.getTotal()) * 100.0D; percentageSkipped = Double.valueOf(results.getSkipped()) / Double.valueOf(results.getTotal()) * 100.0D; } dataset.add(Double.valueOf(build.getBuildNumber()), percentagePass, seriesNames[0]); dataset.add(Double.valueOf(build.getBuildNumber()), percentageFail, seriesNames[1]); dataset.add(Double.valueOf(build.getBuildNumber()), percentageSkipped, seriesNames[2]); buildMap.put(Integer.valueOf(build.getBuildNumber()), build); } final JFreeChart chart = ChartFactory.createStackedXYAreaChart("", "", getI18n().getText("hudson.charts.tests"), dataset, PlotOrientation.VERTICAL, false, false, false); chart.setBackgroundPaint(Color.WHITE); chart.setBorderVisible(false); XYPlot xyPlot = chart.getXYPlot(); xyPlot.setDataset(1, dataset); if (dataset.getItemCount() > 0) { XYLineAndShapeRenderer shapeRenderer = new XYLineAndShapeRenderer(false, true); shapeRenderer.setSeriesShapesVisible(1, false); shapeRenderer.setSeriesLinesVisible(1, false); shapeRenderer.setSeriesShapesVisible(2, false); shapeRenderer.setSeriesLinesVisible(2, false); shapeRenderer.setSeriesShape(0, new Ellipse2D.Double(-3.0D, -3.0D, 6.0D, 6.0D)); shapeRenderer.setSeriesPaint(0, GREEN_PAINT); shapeRenderer.setSeriesShapesFilled(0, true); shapeRenderer.setBaseToolTipGenerator(this); shapeRenderer.setBaseItemLabelFont(ChartDefaults.defaultFont); shapeRenderer.setBaseItemLabelsVisible(false); xyPlot.setRenderer(0, shapeRenderer); StackedXYAreaRenderer2 renderer = new StackedXYAreaRenderer2(); renderer.setSeriesPaint(0, GREEN_PAINT); renderer.setSeriesPaint(1, RED_PAINT); renderer.setSeriesPaint(2, YELLOW_PAINT); renderer.setBaseItemLabelFont(ChartDefaults.defaultFont); renderer.setBaseItemLabelsVisible(false); xyPlot.setRenderer(1, renderer); renderer.setBaseToolTipGenerator(this); } ValueAxis rangeAxis = xyPlot.getRangeAxis(); rangeAxis.setLowerBound(0.0D); rangeAxis.setUpperBound(100.0D); final NumberAxis domainAxis = new NumberAxis(); domainAxis.setLowerBound(Collections.min(buildMap.keySet())); domainAxis.setUpperBound(Collections.max(buildMap.keySet())); final TickUnitSource ticks = NumberAxis.createIntegerTickUnits(); domainAxis.setStandardTickUnits(ticks); xyPlot.setDomainAxis(domainAxis); ChartUtil.setupPlot(xyPlot); return new ChartHelper(chart); }
From source file:org.codehaus.mojo.dashboard.report.plugin.chart.time.SurefirePercentAxisDecorator.java
/** * *//*from w w w . j av a 2s . c o m*/ public void createChart() { XYPlot xyplot = (XYPlot) report.getPlot(); if (this.decoratedChart instanceof TimeChartRenderer && this.results != null && !this.results.isEmpty()) { Iterator iter = this.results.iterator(); TimeSeriesCollection defaultdataset = new TimeSeriesCollection(); TimeSeries s1 = new TimeSeries("% success", Day.class); while (iter.hasNext()) { SurefireReportBean surefire = (SurefireReportBean) iter.next(); Date date = surefire.getDateGeneration(); s1.addOrUpdate(new Day(TimePeriod.DAY.normalize(date)), surefire.getSucessRate() / PCENT); } defaultdataset.addSeries(s1); XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); renderer.setBaseShapesVisible(true); renderer.setBaseShapesFilled(true); renderer.setSeriesPaint(0, ChartColor.DARK_BLUE); renderer.setBaseShapesVisible(true); renderer.setDrawOutlines(true); StandardXYItemLabelGenerator labelgenerator = new StandardXYItemLabelGenerator( StandardXYItemLabelGenerator.DEFAULT_ITEM_LABEL_FORMAT, TimePeriod.DAY.getDateFormat(), NumberFormat.getPercentInstance(Locale.getDefault())); renderer.setBaseItemLabelGenerator(labelgenerator); renderer.setBaseItemLabelFont(new Font("SansSerif", Font.BOLD, ITEM_LABEL_FONT_SIZE)); renderer.setBaseItemLabelsVisible(true); renderer.setBasePositiveItemLabelPosition( new ItemLabelPosition(ItemLabelAnchor.OUTSIDE10, TextAnchor.BASELINE_RIGHT)); renderer.setBaseStroke(new BasicStroke(2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); LegendTitle legendtitle = new LegendTitle(xyplot.getRenderer(0)); legendtitle.setMargin(new RectangleInsets(2D, 2D, 2D, 2D)); legendtitle.setFrame(new BlockBorder()); legendtitle.setBackgroundPaint(ChartColor.WHITE); LegendTitle legendtitle1 = new LegendTitle(renderer); legendtitle1.setMargin(new RectangleInsets(2D, 2D, 2D, 2D)); legendtitle1.setFrame(new BlockBorder()); legendtitle1.setBackgroundPaint(ChartColor.WHITE); BlockContainer blockcontainer = new BlockContainer(new BorderArrangement()); blockcontainer.add(legendtitle, RectangleEdge.LEFT); blockcontainer.add(legendtitle1, RectangleEdge.RIGHT); blockcontainer.add(new EmptyBlock(BLOCK_CONTAINER_WIDTH, 0.0D)); CompositeTitle compositetitle = new CompositeTitle(blockcontainer); compositetitle.setPosition(RectangleEdge.BOTTOM); report.clearSubtitles(); report.addSubtitle(compositetitle); xyplot.setDataset(1, defaultdataset); NumberAxis valueaxis = new NumberAxis("% success"); valueaxis.setLowerMargin(0.0D); valueaxis.setUpperMargin(AXIS_UPPER_MARGIN); valueaxis.setRangeWithMargins(0.0D, 1.0D); valueaxis.setNumberFormatOverride(NumberFormat.getPercentInstance()); xyplot.setRangeAxis(1, valueaxis); xyplot.mapDatasetToRangeAxis(1, 1); xyplot.setRenderer(1, renderer); } }
From source file:it.eng.spagobi.engines.chart.bo.charttypes.targetcharts.SparkLine.java
@Override public JFreeChart createChart(DatasetMap datasets) { logger.debug("IN"); XYDataset dataset = (XYDataset) datasets.getDatasets().get("1"); final JFreeChart sparkLineGraph = ChartFactory.createTimeSeriesChart(null, null, null, dataset, legend, false, false);// ww w .j ava 2s.co m sparkLineGraph.setBackgroundPaint(color); TextTitle title = setStyleTitle(name, styleTitle); sparkLineGraph.setTitle(title); if (subName != null && !subName.equals("")) { TextTitle subTitle = setStyleTitle(subName, styleSubTitle); sparkLineGraph.addSubtitle(subTitle); } sparkLineGraph.setBorderVisible(false); sparkLineGraph.setBorderPaint(Color.BLACK); XYPlot plot = sparkLineGraph.getXYPlot(); plot.setOutlineVisible(false); plot.setInsets(new RectangleInsets(0.0, 0.0, 0.0, 0.0)); plot.setBackgroundPaint(null); plot.setDomainGridlinesVisible(false); plot.setDomainCrosshairVisible(false); plot.setRangeGridlinesVisible(false); plot.setRangeCrosshairVisible(false); plot.setBackgroundPaint(color); // calculate the last marker color Paint colorLast = getLastPointColor(); // Calculate average, minimum and maximum to draw plot borders. boolean isFirst = true; double avg = 0, min = Double.POSITIVE_INFINITY, max = Double.NEGATIVE_INFINITY; int count = 0; for (int i = 0; i < timeSeries.getItemCount(); i++) { if (timeSeries.getValue(i) != null) { count++; if (isFirst) { min = timeSeries.getValue(i).doubleValue(); max = timeSeries.getValue(i).doubleValue(); isFirst = false; } double n = timeSeries.getValue(i).doubleValue(); //calculate avg, min, max avg += n; if (n < min) min = n; if (n > max) max = n; } } // average avg = avg / (double) count; // calculate min and max between thresholds! boolean isFirst2 = true; double lb = 0, ub = 0; for (Iterator iterator = thresholds.keySet().iterator(); iterator.hasNext();) { Double thres = (Double) iterator.next(); if (isFirst2 == true) { ub = thres.doubleValue(); lb = thres.doubleValue(); isFirst2 = false; } if (thres.doubleValue() > ub) ub = thres.doubleValue(); if (thres.doubleValue() < lb) lb = thres.doubleValue(); } plot.getRangeAxis().setRange(new Range(Math.min(lb, min - 2), Math.max(ub, max + 2) + 2)); addMarker(1, avg, Color.GRAY, 0.8f, plot); //addAvaregeSeries(series, plot); addPointSeries(timeSeries, plot); int num = 3; for (Iterator iterator = thresholds.keySet().iterator(); iterator.hasNext();) { Double thres = (Double) iterator.next(); TargetThreshold targThres = thresholds.get(thres); Color color = Color.WHITE; if (targThres != null && targThres.getColor() != null) { color = targThres.getColor(); } if (targThres.isVisible()) { addMarker(num++, thres.doubleValue(), color, 0.5f, plot); } } ValueAxis domainAxis = plot.getDomainAxis(); domainAxis.setVisible(false); domainAxis.setUpperMargin(0.2); NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setVisible(false); plot.getRenderer().setSeriesPaint(0, Color.BLACK); XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, false) { public boolean getItemShapeVisible(int _series, int item) { TimeSeriesDataItem tsdi = timeSeries.getDataItem(item); if (tsdi == null) return false; Month period = (Month) tsdi.getPeriod(); int currMonth = period.getMonth(); int currYear = period.getYearValue(); int lastMonthFilled = lastMonth.getMonth(); int lastYearFilled = lastMonth.getYearValue(); boolean isLast = false; if (currYear == lastYearFilled && currMonth == lastMonthFilled) { isLast = true; } return isLast; } }; renderer.setSeriesPaint(0, Color.decode("0x000000")); renderer.setBaseShapesVisible(true); renderer.setBaseShapesFilled(true); renderer.setDrawOutlines(true); renderer.setUseFillPaint(true); renderer.setBaseFillPaint(colorLast); renderer.setBaseOutlinePaint(Color.BLACK); renderer.setUseOutlinePaint(true); renderer.setSeriesShape(0, new Ellipse2D.Double(-4.0, -4.0, 8.0, 8.0)); if (wlt_mode.doubleValue() == 0) { renderer.setBaseItemLabelsVisible(Boolean.FALSE, true); } else { renderer.setBaseItemLabelsVisible(Boolean.TRUE, true); renderer.setBaseItemLabelFont( new Font(styleValueLabels.getFontName(), Font.PLAIN, styleValueLabels.getSize())); renderer.setBaseItemLabelPaint(styleValueLabels.getColor()); renderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator("{2}", new DecimalFormat("0.###"), new DecimalFormat("0.###")) { public String generateLabel(CategoryDataset dataset, int row, int column) { if (dataset.getValue(row, column) == null || dataset.getValue(row, column).doubleValue() == 0) return ""; String columnKey = (String) dataset.getColumnKey(column); int separator = columnKey.indexOf('-'); String month = columnKey.substring(0, separator); String year = columnKey.substring(separator + 1); int monthNum = Integer.parseInt(month); if (wlt_mode.doubleValue() >= 1 && wlt_mode.doubleValue() <= 4) { if (wlt_mode.doubleValue() == 2 && column % 2 == 0) return ""; Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH, monthNum - 1); SimpleDateFormat dataFormat = new SimpleDateFormat("MMM"); return dataFormat.format(calendar.getTime()); } else return "" + monthNum; } }); } if (wlt_mode.doubleValue() == 3) { renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, org.jfree.ui.TextAnchor.BOTTOM_CENTER, org.jfree.ui.TextAnchor.BOTTOM_RIGHT, Math.PI / 2)); renderer.setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, org.jfree.ui.TextAnchor.TOP_CENTER, org.jfree.ui.TextAnchor.HALF_ASCENT_LEFT, Math.PI / 2)); } else if (wlt_mode.doubleValue() == 4) { renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, org.jfree.ui.TextAnchor.BOTTOM_CENTER, org.jfree.ui.TextAnchor.BOTTOM_RIGHT, Math.PI / 4)); renderer.setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, org.jfree.ui.TextAnchor.TOP_CENTER, org.jfree.ui.TextAnchor.HALF_ASCENT_LEFT, Math.PI / 4)); } if (legend == true) { LegendItemCollection collection = createThresholdLegend(plot); LegendItem item = new LegendItem("Avg", "Avg", "Avg", "Avg", new Rectangle(10, 10), colorAverage); collection.add(item); plot.setFixedLegendItems(collection); } plot.setRenderer(0, renderer); logger.debug("OUT"); return sparkLineGraph; }
From source file:probe.com.view.body.quantdatasetsoverview.quantproteinstabsheet.studies.ProteinStudyComparisonScatterPlotLayout.java
/** * Creates a sample jFreeChart./*from w w w .jav a 2s . c o m*/ * * @param dataset the dataset. * * @return The jFreeChart. */ private void generateScatterplotchart(DiseaseGroupsComparisonsProteinLayout cp, int w, int h) { final XYSeriesCollection dataset = new XYSeriesCollection(); XYSeries downSer = new XYSeries(0); XYSeries stableSer = new XYSeries(1); XYSeries upSer = new XYSeries(2); XYSeries novalueProvidedSer = new XYSeries(3); XYSeries downSerII = new XYSeries(4); XYSeries stableSerII = new XYSeries(5); XYSeries upSerII = new XYSeries(6); XYSeries novalueProvidedSerII = new XYSeries(7); // XYSeries plusSeries = new XYSeries(6); double downCounter = 1; double stableCounter = 3; double upCounter = 5; double novalueProvidedCounter = 3; patientGroupsNumToDsIdMap.clear(); final Map<Integer, int[]> paTGrNumbtrendMap = new HashMap<Integer, int[]>(); double maxPatNumber = -1.0; for (String protTrend : cp.getPatientsNumToTrindMap().keySet()) { List<Integer> patNums = cp.getPatientsNumToTrindMap().get(protTrend); int coun = 0; for (int i : patNums) { if (i > maxPatNumber) { maxPatNumber = i; } if (!patientGroupsNumToDsIdMap.containsKey(i)) { ComparisonDetailsBean pGr = new ComparisonDetailsBean(); patientGroupsNumToDsIdMap.put(i, pGr); } if (!paTGrNumbtrendMap.containsKey(i)) { int[] values = new int[4]; paTGrNumbtrendMap.put(i, values); } int[] values = paTGrNumbtrendMap.get(i); ComparisonDetailsBean pGr = patientGroupsNumToDsIdMap.get(i); if (protTrend.equalsIgnoreCase("noValueProvided")) { values[3] = values[3] + 1; pGr.addNovalueProvided(cp.getDSID(3, coun)); } else if (protTrend.equalsIgnoreCase("up")) { values[2] = values[2] + 1; pGr.addUpRegulated(cp.getDSID(0, coun)); } else if (protTrend.equalsIgnoreCase("down")) { values[0] = values[0] + 1; pGr.addDownRegulated(cp.getDSID(2, coun)); } else { values[1] = values[1] + 1; pGr.addNotRegulated(cp.getDSID(1, coun)); } paTGrNumbtrendMap.put(i, values); patientGroupsNumToDsIdMap.put(i, pGr); coun++; } } for (int i : paTGrNumbtrendMap.keySet()) { int[] values = paTGrNumbtrendMap.get(i); if ((values[2] > 1)) { upSer.add(upCounter, i); upSerII.add(upCounter, i); } else if ((values[2] == 1)) { upSer.add(upCounter, i); } if ((values[1] == 1)) { stableSer.add(stableCounter, i); } else if ((values[1] > 1)) { stableSer.add(stableCounter, i); stableSerII.add(stableCounter, i); } if ((values[0] > 1)) { downSer.add(downCounter, i); downSerII.add(downCounter, i); } else if ((values[0] == 1)) { downSer.add(downCounter, i); } if ((values[3] == 1)) { novalueProvidedSer.add(novalueProvidedCounter, i); } else if ((values[3] > 1)) { novalueProvidedSer.add(stableCounter, i); novalueProvidedSerII.add(stableCounter, i); } } dataset.addSeries(downSer); dataset.addSeries(stableSer); dataset.addSeries(upSer); dataset.addSeries(novalueProvidedSer); dataset.addSeries(downSerII); dataset.addSeries(stableSerII); dataset.addSeries(upSerII); dataset.addSeries(novalueProvidedSerII); // if((downSerII.getItemCount()+stableSerII.getItemCount()+upSerII.getItemCount()+downSer.getItemCount()+stableSer.getItemCount()+upSer.getItemCount())==0) // return; // dataset.addSeries(plusSeries); final String[] labels = new String[] { " ", ("Decreased (" + cp.getSignificantDown() + ")"), " ", ("Equal (" + cp.getStable() + ")"), " ", ("Increased (" + cp.getSignificantUp() + ")"), "" }; final Color[] labelsColor = new Color[] { Color.LIGHT_GRAY, new Color(80, 183, 71), Color.LIGHT_GRAY, new Color(1, 141, 244), Color.LIGHT_GRAY, Color.RED, Color.LIGHT_GRAY }; final SymbolAxis domainAxis = new SymbolAxis("X", labels) { @Override protected void drawGridBandsVertical(Graphics2D g2, Rectangle2D drawArea, Rectangle2D plotArea, boolean firstGridBandIsDark, List ticks) { List udatedTicksList = new ArrayList(); for (Object tick : ticks) { if (tick.toString().equalsIgnoreCase(labels[custTrend + 1])) { udatedTicksList.add(tick); } } // System.out.println("at ticks is "+ticks); // System.out.println("at udatedTicksList is "+udatedTicksList); // int factor = (int) ((plotArea.getHeight() / 5) * 0.25); // // Rectangle2D up = new Rectangle((int) drawArea.getX(), (int) drawArea.getY() - factor, (int) drawArea.getWidth(), (int) drawArea.getHeight()); // Rectangle2D pa = new Rectangle((int) plotArea.getX(), (int) plotArea.getY() - factor, (int) plotArea.getWidth(), (int) plotArea.getHeight()); super.drawGridBandsVertical(g2, drawArea, plotArea, firstGridBandIsDark, udatedTicksList); //To change body of generated methods, choose Tools | Templates. } int x = 0; @Override public Paint getTickLabelPaint() { if (x >= labels.length) { x = 0; } return labelsColor[x++]; } }; domainAxis.setAutoRangeIncludesZero(false); Font f = new Font("Verdana", Font.PLAIN, 11); domainAxis.setTickLabelFont(f); domainAxis.setAutoRange(false); domainAxis.setLabel(null); // domainAxis.setGridBandsVisible(false); String xTile = "#Patients"; JFreeChart jFreeChart = ChartFactory.createScatterPlot(null, null, // domain axis label null, // range axis label dataset, // data PlotOrientation.HORIZONTAL, // orientation false, // include legend false, // tooltips? false // URLs? ); XYPlot plot1 = (XYPlot) jFreeChart.getPlot(); XYPlot xyplot = new XYPlot(dataset, plot1.getDomainAxis(), plot1.getRangeAxis(), plot1.getRenderer()) { @Override public void drawDomainTickBands(Graphics2D g2, Rectangle2D dataArea, List ticks) { if (custTrend == -1) { super.drawDomainTickBands(g2, dataArea, ticks); return; } List udatedTicksList = new ArrayList(); for (Object tick : ticks) { if (tick.toString().equalsIgnoreCase(labels[custTrend + 1])) { udatedTicksList.add(tick); } } Rectangle2D up; int factor = (int) ((dataArea.getHeight() / 5) * 0.5); if (custTrend == 4) { up = new Rectangle((int) dataArea.getX(), (int) dataArea.getY() + factor, (int) dataArea.getWidth(), (int) dataArea.getHeight()); } else if (custTrend == 2) { up = new Rectangle((int) dataArea.getX(), (int) dataArea.getY() - factor, (int) dataArea.getWidth(), (int) dataArea.getHeight()); } else { up = new Rectangle((int) dataArea.getX(), (int) dataArea.getY() - factor, (int) dataArea.getWidth(), (int) dataArea.getHeight()); } super.drawDomainTickBands(g2, up, udatedTicksList); //To change body of generated methods, choose Tools | Templates. } @Override protected void drawDomainGridlines(Graphics2D g2, Rectangle2D dataArea, List ticks) { super.drawDomainGridlines(g2, dataArea, ticks); //To change body of generated methods, choose Tools | Templates. } private int x = 0; @Override public Paint getDomainGridlinePaint() { if (x >= labels.length) { x = 0; } if (x == 1 || x == 3 || x == 5) { x++; return Color.WHITE; } else { x++; return super.getDomainGridlinePaint(); //To change body of generated methods, choose Tools | Templates. } } }; if (custTrend != -1) { domainAxis.setGridBandsVisible(true); if (custTrend == 4) { domainAxis.setGridBandPaint(Color.decode("#ffe5e5")); xyplot.setDomainTickBandPaint(Color.decode("#ffe5e5")); domainAxis.setGridBandAlternatePaint(Color.decode("#ffe5e5")); } else if (custTrend == 0) { domainAxis.setGridBandPaint(Color.decode("#e5ffe5")); xyplot.setDomainTickBandPaint(Color.white); } else if (custTrend == 2) { domainAxis.setGridBandPaint(Color.decode("#e6f4ff")); xyplot.setDomainTickBandPaint(Color.white); } } else { domainAxis.setGridBandsVisible(false); } xyplot.setOrientation(PlotOrientation.HORIZONTAL); JFreeChart tempScatterPlot = new JFreeChart(xyplot); tempScatterPlot.setBackgroundPaint(Color.WHITE); tempScatterPlot.getLegend().setVisible(false); Color c = new Color(242, 242, 242); xyplot.setDomainAxis(domainAxis); xyplot.setDomainGridlinePaint(Color.GRAY); xyplot.setDomainGridlinesVisible(true); xyplot.setRangeGridlinesVisible(true); xyplot.setRangeGridlinePaint(Color.GRAY); xyplot.setOutlinePaint(Color.GRAY); XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) xyplot.getRenderer(); ValueAxis va = xyplot.getDomainAxis(); va.setAutoRange(false); va.setMinorTickCount(0); va.setVisible(true); maxPatNumber = Math.ceil(maxPatNumber / 100.0) * 100; xyplot.getRangeAxis().setRange(0, maxPatNumber); NumberAxis rangeAxis = (NumberAxis) xyplot.getRangeAxis(); rangeAxis.setTickUnit(new NumberTickUnit(10)); rangeAxis.setLabel(xTile); rangeAxis.setLabelFont(f); rangeAxis.setLabelPaint(Color.GRAY); va.setRange(0, 6); xyplot.setBackgroundPaint(Color.WHITE); renderer.setUseOutlinePaint(true); Color c0 = new Color(80, 183, 71); renderer.setSeriesPaint(0, c0); renderer.setSeriesOutlinePaint(0, Color.WHITE); Color c1 = new Color(1, 141, 244); renderer.setSeriesPaint(1, c1); renderer.setSeriesOutlinePaint(1, Color.WHITE); Color c2 = new Color(204, 0, 0); renderer.setSeriesPaint(2, c2); renderer.setSeriesOutlinePaint(2, Color.WHITE); renderer.setSeriesPaint(3, Color.decode("#b5babb")); renderer.setSeriesOutlinePaint(3, Color.WHITE); renderer.setSeriesPaint(4, new Color(150, 212, 145)); renderer.setSeriesOutlinePaint(4, new Color(150, 212, 145)); renderer.setSeriesPaint(5, new Color(103, 187, 248)); renderer.setSeriesOutlinePaint(5, new Color(103, 187, 248)); renderer.setSeriesPaint(6, new Color(224, 102, 102)); renderer.setSeriesOutlinePaint(6, new Color(224, 102, 102)); renderer.setSeriesPaint(7, Color.decode("#b5babb")); renderer.setSeriesOutlinePaint(7, Color.GRAY); // renderer.setSeriesPaint(6, Color.BLACK); // renderer.setSeriesOutlinePaint(6, Color.BLACK); Shape downArr = ShapeUtilities.createDownTriangle(7f); Shape notRShape = ShapeUtilities.createDiamond(7f); Shape upArr = ShapeUtilities.createUpTriangle(7); Shape downArrII = ShapeUtilities.createTranslatedShape(ShapeUtilities.createDownTriangle(6f), 5, -5); Shape notRShapeII = ShapeUtilities.createTranslatedShape(ShapeUtilities.createDiamond(6f), 0, -7); Shape upArrII = ShapeUtilities.createTranslatedShape(ShapeUtilities.createUpTriangle(6f), 4, -4); // Shape plus = ShapeUtilities.createTranslatedShape(ShapeUtilities.createRegularCross(3f, 0.4f), 11, -7); renderer.setSeriesShape(0, downArr); renderer.setSeriesShape(1, notRShape); renderer.setSeriesShape(2, upArr); renderer.setSeriesShape(3, notRShape); renderer.setSeriesShape(4, downArrII); renderer.setSeriesShape(5, notRShapeII); renderer.setSeriesShape(6, upArrII); renderer.setSeriesShape(7, notRShapeII); // renderer.setSeriesShape(6, plus); renderer.setBaseItemLabelsVisible(true); renderer.setBaseItemLabelGenerator(new SymbolicXYItemLabelGenerator() { private final int[] indexer = new int[] { 0, 1, 2, 3, 0, 1, 2, 3 }; @Override public String generateLabel(XYDataset dataset, int series, int category) { if (series > 3) { int patNumber = (int) dataset.getYValue(series, category); // int trend = (int) dataset.getXValue(series, category); if (series == 7 || series == 5) { return "\t " + paTGrNumbtrendMap.get(patNumber)[indexer[series]]; } else { return "\t " + paTGrNumbtrendMap.get(patNumber)[indexer[series]]; } } return ""; //To change body of generated methods, choose Tools | Templates. } }); ItemLabelPosition position = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT, TextAnchor.TOP_LEFT, 0.0); renderer.setSeriesPositiveItemLabelPosition(4, position); renderer.setSeriesPositiveItemLabelPosition(5, position); renderer.setSeriesPositiveItemLabelPosition(6, position); renderer.setSeriesPositiveItemLabelPosition(7, position); renderer.setBaseItemLabelFont(f); tempScatterPlot.setBorderVisible(false); xyplot.setSeriesRenderingOrder(SeriesRenderingOrder.REVERSE); heighlightedScatterPlottImgUrl = saveToFile(tempScatterPlot, w, h, defaultScatterPlotRenderingInfo); xyplot.setBackgroundPaint(Color.WHITE); defaultScatterPlottImgUrl = saveToFile(tempScatterPlot, w, h, defaultScatterPlotRenderingInfo); // xyplot.setBackgroundPaint(c); if (custTrend != -1) { domainAxis.setGridBandsVisible(true); if (custTrend == 4) { domainAxis.setGridBandPaint(Color.decode("#ffe5e5")); xyplot.setDomainTickBandPaint(Color.decode("#ffe5e5")); domainAxis.setGridBandAlternatePaint(Color.decode("#ffe5e5")); } else if (custTrend == 0) { domainAxis.setGridBandPaint(Color.decode("#e5ffe5")); xyplot.setDomainTickBandPaint(c); } else if (custTrend == 2) { domainAxis.setGridBandPaint(Color.decode("#e6f4ff")); xyplot.setDomainTickBandPaint(c); } } String textTitle = comparisonTitle.getValue().split("bold;'>")[1].replace("</font>", ""); TextTitle title = new TextTitle(textTitle, f); scatterPlot = new JFreeChart(xyplot); scatterPlot.setTitle(title); scatterPlot.setBorderVisible(false); scatterPlot.setBackgroundPaint(Color.WHITE); scatterPlot.getLegend().setVisible(false); dsKeyDatasetMap.clear(); for (int i = 0; i < defaultScatterPlotRenderingInfo.getEntityCollection().getEntityCount(); i++) { final ChartEntity entity = defaultScatterPlotRenderingInfo.getEntityCollection().getEntity(i); if (entity instanceof XYItemEntity) { int x = ((XYItemEntity) entity).getSeriesIndex(); int y = ((XYItemEntity) entity).getItem(); if (((XYItemEntity) entity).getDataset().getYValue(x, y) > (int) ((XYItemEntity) entity).getDataset().getYValue(x, y)) { continue; } if (((XYItemEntity) entity).getSeriesIndex() > 3) { continue; } String[] arr = ((XYItemEntity) entity).getShapeCoords().split(","); int xSer = Integer.valueOf(arr[0]); int ySer = Integer.valueOf(arr[1]); int ySerEnd = Integer.valueOf(arr[3]); int patGrNumber = (int) ((XYItemEntity) entity).getDataset().getYValue(x, y); int trend = Integer.valueOf(((XYItemEntity) entity).getDataset() .getSeriesKey(((XYItemEntity) entity).getSeriesIndex()).toString()); ComparisonDetailsBean cpDetails = patientGroupsNumToDsIdMap.get(patGrNumber); List<Integer> dsList = cpDetails.getRegulatedList(trend); StringBuilder sb = new StringBuilder(); for (int dsId : dsList) { QuantDatasetObject ds; sb.append("<h4>").append((Quant_Central_Manager.getFullQuantDatasetMap().get(dsId)).getAuthor()) .append(" ") .append((Quant_Central_Manager.getFullQuantDatasetMap().get(dsId)).getYear()) .append("<h4/>"); sb.append("<p></p>"); ds = Quant_Central_Manager.getFullQuantDatasetMap().get(dsId); dsKeyDatasetMap.put("_-_" + dsId + "_-_" + comparisonProtein.getProteinAccssionNumber() + "_-_", ds); } String tooltip = sb.toString().substring(0, sb.toString().length() - 7); SquaredDot square = new SquaredDot("squared"); if (paTGrNumbtrendMap.get(patGrNumber)[trend] > 1) { square.setWidth(20 + "px"); square.setHeight(15 + "px"); } else { square.setWidth(10 + "px"); square.setHeight(10 + "px"); } square.setDescription(tooltip); square.setParam("trend", trend); square.setParam("pGrNumber", patGrNumber); int top = (ySer - 4); if (ySer > ySerEnd) { top = ySerEnd - 3; } defaultChartLayout.addComponent(square, "left: " + (xSer - 5) + "px; top: " + top + "px;"); } } }