Example usage for org.jfree.chart.renderer.xy XYLineAndShapeRenderer setSeriesShape

List of usage examples for org.jfree.chart.renderer.xy XYLineAndShapeRenderer setSeriesShape

Introduction

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

Prototype

public void setSeriesShape(int series, Shape shape) 

Source Link

Document

Sets the shape used for a series and sends a RendererChangeEvent to all registered listeners.

Usage

From source file:de.bund.bfr.knime.pmm.common.chart.ChartCreator.java

private void plotDataSetStrict(XYPlot plot, Plotable plotable, String id) throws ConvertException {
    String legend = shortLegend.get(id);
    List<Color> colorList = colorLists.get(id);
    List<Shape> shapeList = shapeLists.get(id);
    ColorAndShapeCreator creator = new ColorAndShapeCreator(plotable.getNumberOfCombinations());
    int index = 0;

    if (addInfoInLegend) {
        legend = longLegend.get(id);//  w ww. j a v a2  s.c o m
    }

    if (colorList == null || colorList.isEmpty()) {
        colorList = creator.getColorList();
    }

    if (shapeList == null || shapeList.isEmpty()) {
        shapeList = creator.getShapeList();
    }

    for (Map<String, Integer> choiceMap : plotable.getAllChoices()) {
        double[][] dataPoints = plotable.getPoints(paramX, paramY, unitX, unitY, transformX, transformY,
                choiceMap);

        if (dataPoints != null) {
            DefaultXYDataset dataSet = new DefaultXYDataset();
            XYLineAndShapeRenderer dataRenderer = new XYLineAndShapeRenderer(drawLines, true);
            String addLegend = "";

            for (String arg : choiceMap.keySet()) {
                if (!arg.equals(paramX)) {
                    addLegend += " (" + arg + "="
                            + plotable.getFunctionArguments().get(arg).get(choiceMap.get(arg)) + ")";
                }
            }

            dataSet.addSeries(legend + addLegend, dataPoints);
            dataRenderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
            dataRenderer.setSeriesPaint(0, colorList.get(index));
            dataRenderer.setSeriesShape(0, shapeList.get(index));

            int i;

            if (plot.getDataset(0) == null) {
                i = 0;
            } else {
                i = plot.getDatasetCount();
            }

            plot.setDataset(i, dataSet);
            plot.setRenderer(i, dataRenderer);
        }

        index++;
    }
}

From source file:edu.umn.ecology.populus.plot.BasicPlotInfo.java

public ChartTheme getJFreeChartTheme() {
    class PopChartTheme implements ChartTheme {
        private BasicPlotInfo bpiRef;

        public PopChartTheme(BasicPlotInfo bpi) {
            this.bpiRef = bpi;
        }//from w  w w  .j  av a  2  s.c o  m

        public void apply(JFreeChart chart) {
            JFCXYAdapter jfca = new JFCXYAdapter();
            XYPlot plot = chart.getXYPlot();
            plot.setDataset(jfca);

            if (isLogPlot) {
                plot.setRangeAxis(new LogarithmicAxis(""));
            }
            if (isFrequencies) {
                ValueAxis va = plot.getRangeAxis();
                if (va instanceof NumberAxis) {
                    NumberAxis na = (NumberAxis) va;
                    na.setTickUnit(new NumberTickUnit(0.1));
                } else {
                    Logging.log("Range Axis is not NumberAxis, why?", Logging.kWarn);
                }
            }

            if (xMinSet)
                plot.getDomainAxis().setLowerBound(xAxisMin);
            if (xMaxSet)
                plot.getDomainAxis().setUpperBound(xAxisMax);
            if (yMinSet)
                plot.getRangeAxis().setLowerBound(yAxisMin);
            if (yMaxSet)
                plot.getRangeAxis().setUpperBound(yAxisMax);

            //TODO - just use this renderer
            plot.setRenderer(new ChartRendererWithOrientatedShapes(bpiRef));

            XYItemRenderer r = plot.getRenderer();
            //         AbstractXYItemRenderer r = plot.getRenderer();
            if (r instanceof XYLineAndShapeRenderer) {
                XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
                for (int i = 0; i < getNumSeries(); i++) {
                    //Set Line
                    renderer.setSeriesPaint(i, getLineColor(i));
                    renderer.setSeriesStroke(i, getLineStroke(i));

                    //Set Symbol
                    renderer.setSeriesFillPaint(i, getSymbolColor(i));
                    renderer.setSeriesOutlinePaint(i, getSymbolColor(i));

                    Shape shape = getSymbolShape(i);
                    if (shape != null) {
                        renderer.setSeriesShape(i, shape);
                        renderer.setSeriesShapesFilled(i, isSymbolOpaque(i));
                        renderer.setUseFillPaint(true);
                        renderer.setUseOutlinePaint(true);
                        renderer.setSeriesShapesVisible(i, true);
                    }
                }
            } else if (r instanceof XYBarRenderer) {
                XYBarRenderer barRenderer = (XYBarRenderer) r;
                barRenderer.setBarPainter(new StandardXYBarPainter());
            } else {
                Logging.log("Unknown renderer type: " + r.getClass(), Logging.kWarn);
            }

            //inner labels, used in AIDS: Therapy
            plot.clearAnnotations();
            Enumeration<InnerLabel> e = innerLabels.elements();
            while (e.hasMoreElements()) {
                InnerLabel lab = (InnerLabel) e.nextElement();
                Logging.log("Adding " + lab.caption + " at " + lab.x + ", " + lab.y);

                XYTextAnnotation annotation = new XYTextAnnotation(lab.caption, lab.x, lab.y);
                annotation.setTextAnchor(TextAnchor.BOTTOM_CENTER);
                annotation.setOutlineVisible(true);
                plot.addAnnotation(annotation);

                //I actually think the annotation above is ugly.  We can use one of these instead in the future, maybe...
                /*PointerAnnotation may look cool...
                 * That 2.0 is the angle, randomly picked
                 * XYPointerAnnotation annotation = new XYPointerAnnotation(lab.caption, lab.x, lab.y, 2.0); 
                 */

                /*
                ValueMarker marker = new ValueMarker(lab.x);
                marker.setLabel(lab.caption);
                marker.setLabelAnchor(RectangleAnchor.BOTTOM_LEFT);
                plot.addDomainMarker(marker);
                 */

            }

            //This is set for GD: AMCM
            if (startGridded) {
                plot.setDomainGridlinesVisible(true);
                plot.setDomainGridlinePaint(Color.BLACK);
                plot.setRangeGridlinesVisible(true);
                plot.setRangeGridlinePaint(Color.BLACK);
            }

        }
    }
    return new PopChartTheme(this);
}

From source file:lucee.runtime.tag.Chart.java

private void setMarker(JFreeChart chart, Plot p) {
    if (!showmarkers)
        return;//from w w w .j  ava  2s.  c o  m

    if (markersize < 1 || markersize > 100)
        markersize = 4;

    if (p instanceof XYPlot) {
        XYPlot xyp = (XYPlot) p;
        XYItemRenderer r = xyp.getRenderer();
        if (r instanceof XYLineAndShapeRenderer) {
            XYLineAndShapeRenderer xyr = (XYLineAndShapeRenderer) r;
            xyr.setBaseShapesVisible(true);
            xyr.setBaseShapesFilled(true);

            int seriesCount = _series.size();
            for (int i = 0; i < seriesCount; i++) {
                xyr.setSeriesShapesVisible(i, true);
                xyr.setSeriesItemLabelsVisible(i, true);
                xyr.setSeriesShape(i, ShapeUtilities.createDiamond(markersize));
                xyr.setUseFillPaint(true);
                xyr.setBaseFillPaint(databackgroundcolor);
            }
        }
    } else if (p instanceof CategoryPlot) {
        CategoryPlot cp = (CategoryPlot) p;
        CategoryItemRenderer r = cp.getRenderer();
        if (r instanceof LineAndShapeRenderer) {
            LineAndShapeRenderer lsr = (LineAndShapeRenderer) r;

            int seriesCount = _series.size();
            for (int i = 0; i < seriesCount; i++) {
                lsr.setSeriesShapesVisible(i, true);
                lsr.setSeriesItemLabelsVisible(i, true);
                lsr.setSeriesShape(i, ShapeUtilities.createDiamond(markersize));
                lsr.setUseFillPaint(true);
                lsr.setBaseFillPaint(databackgroundcolor);
            }
        }
    }
}

From source file:com.planetmayo.debrief.satc_rcp.views.MaintainContributionsView.java

protected void redoOwnshipStates() {
    if (legPlot == null)
        return;/* w w w . j  a  v a  2s .c o  m*/

    boolean showCourses = true;
    if (showOSCourse != null)
        showCourses = showOSCourse.getSelection();

    java.awt.Color courseCol = java.awt.Color.blue.darker().darker();
    java.awt.Color speedCol = java.awt.Color.blue.brighter().brighter();

    // ok, now loop through and set them
    long startTime = Long.MAX_VALUE;
    long endTime = Long.MIN_VALUE;

    // clear any datasets
    legPlot.setDataset(0, null);
    legPlot.setDataset(1, null);

    // hmm, actually we have to remove any target leg markers
    @SuppressWarnings("unchecked")
    Collection<IntervalMarker> markers = legPlot.getDomainMarkers(Layer.BACKGROUND);
    if (markers != null) {
        ArrayList<IntervalMarker> markersToDelete = new ArrayList<IntervalMarker>(markers);
        Iterator<IntervalMarker> mIter = markersToDelete.iterator();
        while (mIter.hasNext()) {
            IntervalMarker im = mIter.next();
            legPlot.removeDomainMarker(im);
        }
    }

    // hey, does it have any ownship legs?
    TimeSeriesCollection tscC = new TimeSeriesCollection();
    TimeSeriesCollection tscS = new TimeSeriesCollection();
    TimeSeriesCollection tscCLegs = new TimeSeriesCollection();
    TimeSeriesCollection tscSLegs = new TimeSeriesCollection();
    TimeSeries courses = new TimeSeries("Course");
    TimeSeries bearings = new TimeSeries("Bearings");
    TimeSeries speeds = new TimeSeries("Speed");
    TimeSeries courseLegs = new TimeSeries("Course (leg)");
    TimeSeries speedLegs = new TimeSeries("Speed (leg)");

    Iterator<BaseContribution> conts = activeSolver.getContributions().iterator();
    while (conts.hasNext()) {
        BaseContribution baseC = conts.next();
        if (baseC.isActive())
            if (baseC instanceof BearingMeasurementContribution) {
                BearingMeasurementContribution bmc = (BearingMeasurementContribution) baseC;

                Iterator<LegOfData> lIter = null;
                LegOfData thisLeg = null;

                if (bmc.getOwnshipLegs() != null) {
                    lIter = bmc.getOwnshipLegs().iterator();
                    thisLeg = lIter.next();
                }

                List<HostState> hostStates = bmc.getHostState();
                if (hostStates != null) {
                    Iterator<HostState> stateIter = hostStates.iterator();
                    while (stateIter.hasNext()) {
                        BearingMeasurementContribution.HostState hostState = stateIter.next();
                        long thisTime = hostState.time;
                        double thisCourse = hostState.courseDegs;
                        if (showCourses)
                            courses.add(new FixedMillisecond(thisTime), thisCourse);
                        double thisSpeed = hostState.speedKts;
                        speeds.add(new FixedMillisecond(thisTime), thisSpeed);
                        startTime = Math.min(thisTime, startTime);
                        endTime = Math.max(thisTime, endTime);

                        // sort out if this is in a leg or not
                        if (thisLeg != null) {
                            if (thisTime > thisLeg.getEnd() && lIter.hasNext()) {
                                thisLeg = lIter.next();
                            } else {
                                if (thisTime >= thisLeg.getStart()) {
                                    speedLegs.add(new FixedMillisecond(thisTime), thisSpeed);
                                    if (showCourses)
                                        courseLegs.add(new FixedMillisecond(thisTime), thisCourse);
                                }
                            }
                        }
                    }
                }

                // also, we wish to show the bearings from the BMC
                Iterator<BMeasurement> cuts = bmc.getMeasurements().iterator();
                while (cuts.hasNext()) {
                    BearingMeasurementContribution.BMeasurement measurement = cuts.next();
                    if (measurement.isActive()) {
                        long thisT = measurement.getDate().getTime();
                        bearings.add(new FixedMillisecond(thisT),
                                Math.toDegrees(Math.abs(measurement.getBearingRads())));
                    }
                }

            }
    }

    // HEY, also shade the ownship legs
    conts = activeSolver.getContributions().iterator();
    while (conts.hasNext()) {
        BaseContribution baseC = conts.next();
        if (baseC.isActive()) {
            if (baseC instanceof BearingMeasurementContribution) {
                BearingMeasurementContribution bmc = (BearingMeasurementContribution) baseC;

                Iterator<LegOfData> lIter = null;
                if (bmc.getOwnshipLegs() != null) {
                    int ctr = 1;
                    lIter = bmc.getOwnshipLegs().iterator();
                    while (lIter.hasNext()) {
                        LegOfData thisL = lIter.next();
                        long thisStart = thisL.getStart();
                        long thisFinish = thisL.getEnd();

                        java.awt.Color transCol = new java.awt.Color(0, 0, 255, 12);

                        final Marker bst = new IntervalMarker(thisStart, thisFinish, transCol,
                                new BasicStroke(2.0f), null, null, 1.0f);
                        bst.setLabel("O/S-" + ctr++);
                        bst.setLabelAnchor(RectangleAnchor.TOP_LEFT);
                        bst.setLabelFont(new Font("SansSerif", Font.ITALIC + Font.BOLD, 10));
                        bst.setLabelTextAnchor(TextAnchor.TOP_LEFT);
                        legPlot.addDomainMarker(bst, Layer.BACKGROUND);
                    }
                }
            }
        }
    }

    tscS.addSeries(speeds);
    tscSLegs.addSeries(speedLegs);
    tscC.addSeries(bearings);

    if (showCourses) {
        tscC.addSeries(courses);
        tscCLegs.addSeries(courseLegs);
    }

    legPlot.setDataset(0, null);
    legPlot.setDataset(1, null);
    legPlot.setDataset(2, null);
    legPlot.setDataset(3, null);
    legPlot.setDataset(0, tscC);
    legPlot.setDataset(1, tscS);
    legPlot.setDataset(2, tscCLegs);
    legPlot.setDataset(3, tscSLegs);

    final NumberAxis axis2 = new NumberAxis("Speed (Kts)");
    legPlot.setRangeAxis(1, axis2);
    legPlot.mapDatasetToRangeAxis(1, 1);
    legPlot.mapDatasetToRangeAxis(3, 1);

    legPlot.getRangeAxis(0).setLabel("Crse/Brg (Degs)");
    legPlot.mapDatasetToRangeAxis(0, 0);
    legPlot.mapDatasetToRangeAxis(2, 0);

    final XYLineAndShapeRenderer lineRenderer1 = new XYLineAndShapeRenderer(true, true);
    lineRenderer1.setSeriesPaint(1, courseCol);
    lineRenderer1.setSeriesShape(1, ShapeUtilities.createDiamond(0.1f));
    lineRenderer1.setSeriesPaint(0, java.awt.Color.RED);
    lineRenderer1.setSeriesShape(0, ShapeUtilities.createDiamond(2f));

    final XYLineAndShapeRenderer lineRenderer2 = new XYLineAndShapeRenderer(true, false);
    lineRenderer2.setSeriesPaint(0, speedCol);

    final XYLineAndShapeRenderer lineRenderer3 = new XYLineAndShapeRenderer(false, true);
    lineRenderer3.setSeriesPaint(0, courseCol);
    lineRenderer3.setSeriesShape(0, ShapeUtilities.createUpTriangle(2f));

    final XYLineAndShapeRenderer lineRenderer4 = new XYLineAndShapeRenderer(false, true);
    lineRenderer4.setSeriesPaint(0, speedCol);
    lineRenderer4.setSeriesShape(0, ShapeUtilities.createDownTriangle(2f));

    // ok, and store them
    legPlot.setRenderer(0, lineRenderer1);
    legPlot.setRenderer(1, lineRenderer2);
    legPlot.setRenderer(2, lineRenderer3);
    legPlot.setRenderer(3, lineRenderer4);

    if (startTime != Long.MAX_VALUE)
        legPlot.getDomainAxis().setRange(startTime, endTime);

    // ok - get the straight legs to sort themselves out
    // redoStraightLegs();
}

From source file:ro.nextreports.engine.chart.JFreeChartExporter.java

private JFreeChart createLineChart() throws QueryException {
    XYSeriesCollection dataset = new XYSeriesCollection();
    String chartTitle = replaceParameters(chart.getTitle().getTitle());
    chartTitle = StringUtil.getI18nString(chartTitle, I18nUtil.getLanguageByName(chart, language));
    Object[] charts = new Object[chart.getYColumns().size()];
    List<String> legends = chart.getYColumnsLegends();
    boolean hasLegend = false;
    for (int i = 0; i < charts.length; i++) {
        String legend = "";
        try {/*from   w  w  w .  j  ava  2  s  .co  m*/
            legend = replaceParameters(legends.get(i));
            legend = StringUtil.getI18nString(legend, I18nUtil.getLanguageByName(chart, language));
        } catch (IndexOutOfBoundsException ex) {
            // no legend set
        }
        if ((legend != null) && !"".equals(legend.trim())) {
            hasLegend = true;
        }
        XYSeries lineChart = new XYSeries(legend);
        charts[i] = lineChart;
        dataset.addSeries(lineChart);
    }

    String xLegend = StringUtil.getI18nString(replaceParameters(chart.getXLegend().getTitle()),
            I18nUtil.getLanguageByName(chart, language));
    String yLegend = StringUtil.getI18nString(replaceParameters(chart.getYLegend().getTitle()),
            I18nUtil.getLanguageByName(chart, language));

    JFreeChart jfreechart = ChartFactory.createXYLineChart(chartTitle, // Title
            replaceParameters(xLegend), // x-axis Label
            replaceParameters(yLegend), // y-axis Label
            dataset, // Dataset
            PlotOrientation.VERTICAL, // Plot Orientation
            true, // Show Legend
            true, // Use tooltips
            false // Configure chart to generate URLs?
    );

    // hide legend if necessary
    if (!hasLegend) {
        jfreechart.removeLegend();
    }

    // hide border
    jfreechart.setBorderVisible(false);

    // title
    setTitle(jfreechart);

    // charts colors & values 
    boolean showValues = (chart.getShowYValuesOnChart() == null) ? false : chart.getShowYValuesOnChart();
    DecimalFormat decimalFormat;
    DecimalFormat percentageFormat;
    if (chart.getYTooltipPattern() == null) {
        decimalFormat = new DecimalFormat("#");
        percentageFormat = new DecimalFormat("0.00%");
    } else {
        decimalFormat = new DecimalFormat(chart.getYTooltipPattern());
        percentageFormat = decimalFormat;
    }
    XYPlot plot = (XYPlot) jfreechart.getPlot();
    for (int i = 0; i < charts.length; i++) {
        plot.getRenderer().setSeriesPaint(i, chart.getForegrounds().get(i));
        if (showValues) {
            plot.getRenderer().setSeriesItemLabelsVisible(i, true);
            plot.getRenderer().setSeriesItemLabelGenerator(i,
                    new StandardXYItemLabelGenerator("{2}", decimalFormat, percentageFormat));
        }
    }

    if (showValues) {
        // increase a little bit the range axis to view all item label values over points
        plot.getRangeAxis().setUpperMargin(0.2);
    }

    // grid axis visibility & colors 
    if ((chart.getXShowGrid() != null) && !chart.getXShowGrid()) {
        plot.setDomainGridlinesVisible(false);
    } else {
        if (chart.getXGridColor() != null) {
            plot.setDomainGridlinePaint(chart.getXGridColor());
        } else {
            plot.setDomainGridlinePaint(Color.BLACK);
        }
    }
    if ((chart.getYShowGrid() != null) && !chart.getYShowGrid()) {
        plot.setRangeGridlinesVisible(false);
    } else {
        if (chart.getYGridColor() != null) {
            plot.setRangeGridlinePaint(chart.getYGridColor());
        } else {
            plot.setRangeGridlinePaint(Color.BLACK);
        }
    }

    // chart background
    plot.setBackgroundPaint(chart.getBackground());

    // labels color
    plot.getDomainAxis().setTickLabelPaint(chart.getXColor());
    plot.getRangeAxis().setTickLabelPaint(chart.getYColor());

    //legend color
    plot.getDomainAxis().setLabelPaint(chart.getXLegend().getColor());
    plot.getRangeAxis().setLabelPaint(chart.getYLegend().getColor());

    // legend font
    plot.getDomainAxis().setLabelFont(chart.getXLegend().getFont());
    plot.getRangeAxis().setLabelFont(chart.getYLegend().getFont());

    // hide labels
    if ((chart.getXShowLabel() != null) && !chart.getXShowLabel()) {
        plot.getDomainAxis().setTickLabelsVisible(false);
        plot.getDomainAxis().setTickMarksVisible(false);
    }
    if ((chart.getYShowLabel() != null) && !chart.getYShowLabel()) {
        plot.getRangeAxis().setTickLabelsVisible(false);
        plot.getRangeAxis().setTickMarksVisible(false);
    }

    // label orientation 
    if (chart.getXorientation() == Chart.VERTICAL) {
        plot.getDomainAxis().setVerticalTickLabels(true);
    }

    // labels fonts
    plot.getDomainAxis().setTickLabelFont(chart.getXLabelFont());
    plot.getRangeAxis().setTickLabelFont(chart.getYLabelFont());

    // point style
    Shape pointShape = null;
    byte style = chart.getType().getStyle();
    switch (style) {
    case ChartType.STYLE_LINE_DOT_SOLID:
    case ChartType.STYLE_LINE_DOT_HOLLOW:
        pointShape = new Ellipse2D.Float(-3.0f, -3.0f, 6.0f, 6.0f);
        break;
    case ChartType.STYLE_LINE_DOT_ANCHOR: // triangle
        GeneralPath s5 = new GeneralPath();
        s5.moveTo(0.0f, -3.0f);
        s5.lineTo(3.0f, 3.0f);
        s5.lineTo(-3.0f, 3.0f);
        s5.closePath();
        pointShape = s5;
        break;
    case ChartType.STYLE_LINE_DOT_BOW:
        GeneralPath s4 = new GeneralPath();
        s4.moveTo(-3.0f, -3.0f);
        s4.lineTo(3.0f, -3.0f);
        s4.lineTo(-3.0f, 3.0f);
        s4.lineTo(3.0f, 3.0f);
        s4.closePath();
        pointShape = s4;
        break;
    case ChartType.STYLE_LINE_DOT_STAR:
        pointShape = new Star(-3.0f, 0f).getShape();
        break;
    default:
        // no shape
        break;
    }

    if (pointShape != null) {
        XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
        renderer.setUseFillPaint(true);
        for (int i = 0; i < charts.length; i++) {
            renderer.setSeriesShapesVisible(i, true);
            if (style != ChartType.STYLE_LINE_DOT_SOLID) {
                renderer.setSeriesFillPaint(i, chart.getBackground());
            } else {
                renderer.setSeriesFillPaint(i, chart.getForegrounds().get(i));
            }
            renderer.setSeriesShape(i, pointShape);
        }
    }

    final HashMap<String, String> formatValues = createChart(plot.getRangeAxis(), charts);

    // in x axis does not contain number values , values are strings representing one unit 
    if (!integerXValue) {
        ((NumberAxis) plot.getDomainAxis()).setTickUnit(new NumberTickUnit(1));
        ((NumberAxis) plot.getDomainAxis()).setNumberFormatOverride(new DecimalFormat() {
            @Override
            public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) {
                String s = formatValues.get(String.valueOf(Math.round(number)));
                if (s == null) {
                    s = "";
                }
                return result.append(s);
            }
        });
    }

    return jfreechart;

}

From source file:edu.ucla.stat.SOCR.applications.demo.PortfolioApplication2.java

void updateGraph() {
    /*   System.out.println("updateGraph get called----------------mouseClicked="+mouseClicked);
       Exception e = new Exception();//from  w w w . j a  v  a2  s . com
       e.printStackTrace();*/
    //   printMatrix(COVR, "after COVR");
    //   printMatrix(CORR, "after CORR");

    //setupStockOptions();

    p_serie = new XYSeries("Stock", false);
    t_serie = new XYSeries("Tangent", false);
    m_serie = new XYSeries("M", false);
    s_serie = new XYSeries("Positives", false);

    StringBuffer text = new StringBuffer();
    text.append("mouse clicked at (Risk, Expected Return) = " + tooltip + "\n");
    //   text.append("The stock combinations are:");

    for (int i = 0; i < chartDataPoints.getPointCount(); i++) {
        double point_x = chartDataPoints.getX(i);
        double point_y = chartDataPoints.getY(i);
        p_serie.add(point_x, point_y);
        //  System.out.println("chart point " +(i+1)+" is ("+point_x+", "+point_y+")");
        if (isAllPositive(chartDataPoints.getSDPpointer(i))) {
            s_serie.add(point_x, point_y);
        }
    }

    if (show_tangent) {
        t_serie.add(t1_x, t1_y);
        t_serie.add(t2_x, t2_y);
    }

    if (mouseClicked) {
        //   System.out.println("mouse_x="+mouse_x+", mouse_y="+mouse_y);
        m_serie.add(mouse_x, mouse_y);
    }

    XYSeriesCollection ds = new XYSeriesCollection();

    ds.addSeries(m_serie);
    ds.addSeries(t_serie);
    ds.addSeries(s_serie);
    ds.addSeries(p_serie);

    JFreeChart chart = ChartFactory.createXYLineChart("", // chart title
            "Risk (Standard Deviation)", // x axis label
            "Expected Return", // y axis label
            ds, // data
            PlotOrientation.VERTICAL, false, // include legend
            true, // tooltips
            false // urls
    );
    chart.setBackgroundPaint(Color.white);
    XYPlot subplot1 = (XYPlot) chart.getPlot();
    XYLineAndShapeRenderer renderer1 = (XYLineAndShapeRenderer) subplot1.getRenderer();

    NumberAxis xAxis = (NumberAxis) subplot1.getDomainAxis();
    NumberAxis yAxis = (NumberAxis) subplot1.getRangeAxis();
    if (t2_x > 0)
        xAxis.setRange(0, t2_x);
    else
        xAxis.setRange(t2_x, 0);

    if (t2_y > 0)
        yAxis.setRange(-t2_y, t2_y);
    else
        yAxis.setRange(t2_y, -t2_y);

    renderer1.setSeriesPaint(3, Color.blue);
    renderer1.setSeriesPaint(2, Color.red);
    renderer1.setSeriesPaint(1, Color.red);
    renderer1.setSeriesPaint(0, Color.green);

    Shape shape = renderer1.getBaseShape();
    renderer1.setSeriesShape(1, shape);
    renderer1.setSeriesShape(3, shape);

    renderer1.setSeriesLinesVisible(0, false);
    renderer1.setSeriesLinesVisible(1, true);
    renderer1.setSeriesLinesVisible(2, false);
    renderer1.setSeriesLinesVisible(3, false);
    // renderer1.setLinesVisible();
    renderer1.setBaseShapesVisible(true);
    renderer1.setBaseShapesFilled(true);

    graphPanel.removeAll();
    chartPanel = new ChartPanel(chart, false);
    chartPanel.setPreferredSize(new Dimension(CHART_SIZE_X, CHART_SIZE_Y));
    chartPanel.addChartMouseListener(this);
    graphPanel.add(chartPanel);
    graphPanel.validate();
    //  super.updateGraph(chartPanel);
    //

    if (mouseClicked) {
        getRecordTable().setText(text.toString());
    } else {
        text = new StringBuffer();
        /* text.append("("+tooltip_formatter.format(minPoint.mean)+" , "+ tooltip_formatter.format(minPoint.std)+")\n");
         for (int j=0; j<numStocks; j++)
           text.append("Stock "+(j+1)+" : x["+(j+1)+"]="+tooltip_formatter.format(minPoint.x[j])+"\n");
        text.append("---\n");*/
        getRecordTable().setText(text.toString());
        ;
    }

    mouseClicked = false;
}

From source file:CGgui.java

public void addMinima(double value) {
    //updata dataset and graph
    if (value != -1) {
        //remove previous minima for this number of CGs
        for (int i = 0; i < minimadataset.getItemCount(); i++) {
            if (minimadataset.getYValue(0, i) == CurrCG) {
                minimadataset.remove(minimadataset.getX(0, i), (String) key, true);
                break;
            }/* w w w .  java2  s . c o m*/
        }

        //add new minima
        minimadataset.add(value, (double) CurrCG, (String) key);
    } else
        return;

    //get plot
    XYPlot xyplot = minchart.getXYPlot();
    minchart.clearSubtitles();

    //set render options
    XYLineAndShapeRenderer renderer1 = new XYLineAndShapeRenderer();
    XYLineAndShapeRenderer renderer2 = new XYLineAndShapeRenderer();

    Shape shape = xyplot.getRenderer().getSeriesShape(0);
    renderer1.setSeriesLinesVisible(0, false);
    renderer1.setSeriesPaint(0, Color.RED);
    renderer1.setSeriesShape(0, shape);
    if (minimadataset.getItemCount() > 1) {
        renderer2.setSeriesLinesVisible(0, true);
        renderer2.setSeriesShapesVisible(0, false);
        renderer2.setBaseSeriesVisibleInLegend(false);
        renderer2.setSeriesPaint(0, Color.BLUE);
    }

    //get regression
    LineFunction2D localregline = null;
    XYDataset regseries;
    if (minimadataset.getItemCount() > 1) {
        //create the regression
        double[] reg = Regression.getOLSRegression(minimadataset, 0);
        //looking for x values so put x in terms of y
        //y = a + bx     for local
        //x = y/b - a/b  for global
        if (DEBUG)
            PrintText("Regression: y = " + reg[0] + " + " + reg[1] + "x\n");

        //global (in terms of y)
        regLine = new LineFunction2D(-reg[0] / reg[1], 1 / reg[1]);

        //local (in terms of x)
        localregline = new LineFunction2D(reg[0], reg[1]);
        regseries = DatasetUtilities.sampleFunction2D(localregline, minimadataset.getDomainLowerBound(false),
                minimadataset.getDomainUpperBound(false), 2, "Linear Regression");

        //plot line
        xyplot.setDataset(1, regseries);
        xyplot.setRenderer(1, renderer2);
        minchart.addSubtitle(0, new TextTitle("Regression: y = " + reg[0] + " + " + reg[1] + "x"));
    }

    xyplot.setDataset(0, minimadataset);
    xyplot.setRenderer(0, renderer1);

    //f.pack();

    //System.gc();
}

From source file:edu.ucla.stat.SOCR.chart.demo.SOCR_EM_MixtureModelChartDemo.java

/**
 * Creates a chart.//from ww w . java 2  s.com
 * 
 * @param dataset  the data for the chart.
 * 
 * @return a chart.
 */
// protected JFreeChart createChart(XYDataset dataset, double[][] polygons, int num_poly) {

protected JFreeChart createChart(XYDataset[] dataset) {
    //System.out.println("createChart get called");
    boolean legend = false;
    /*if (num_series>1&&segment_flag==false)
       legend = true;*/

    //   System.out.println("createchart: inde="+independentVarLength);
    // create the chart...
    JFreeChart chart = ChartFactory.createXYLineChart(chartTitle, // chart title
            "X", // x axis label
            "Y", // y axis label
            dataset[0], // data
            PlotOrientation.VERTICAL, legend, // include legend
            true, // tooltips
            false // urls
    );

    //printDataset(dataset, num_series);

    // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
    chart.setBackgroundPaint(Color.white);

    // get a reference to the plot for further customisation...
    XYPlot subplot1 = (XYPlot) chart.getPlot();
    subplot1.setBackgroundPaint(Color.lightGray);
    subplot1.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
    subplot1.setDomainGridlinePaint(Color.white);
    subplot1.setRangeGridlinePaint(Color.white);

    XYLineAndShapeRenderer renderer1 = (XYLineAndShapeRenderer) subplot1.getRenderer();

    renderer1.setBaseLinesVisible(false);
    renderer1.setBaseShapesVisible(true);
    renderer1.setBaseShapesFilled(true);

    int[] num_group = new int[num_series];
    Paint color_mainGroup = mEMexperiment[0].getColorOfMainGroup();

    // use same color   for all series if EM together    
    //  System.out.println("dataset0. seriescount="+dataset[0].getSeriesCount()+" itemcount="+dataset[0].getItemCount(0));
    if (num_series == 1)
        for (int s = 0; s < dataset[0].getSeriesCount(); s++) {
            renderer1.setSeriesLinesVisible(s, false);
            renderer1.setSeriesShapesVisible(s, true);
            renderer1.setSeriesShapesFilled(s, true);
            renderer1.setSeriesShape(s, series_shapes[0]); // for the shape of the dots
            renderer1.setSeriesPaint(s, color_mainGroup);
        }

    //  System.out.println("num_series="+num_series);
    //   System.out.println("num_group="+num_group);
    //  System.out.println("segment_flag="+segment_flag);

    if (legend) {
        LegendItemCollection legends_old = subplot1.getFixedLegendItems();
        LegendItemCollection legends_new = new LegendItemCollection();
        for (int s = 0; s < num_series; s++) {
            legends_new.add(legends_old.get(s));
        }
        subplot1.setFixedLegendItems(legends_new);

    }
    //segment

    for (int s = 0; s < num_series; s++) {
        num_group[s] = mEMexperiment[s].getNumOfGroup();
    }

    // System.out.println("num_group[0]="+num_group[0]);

    if (num_group[0] > 0 && segment_flag && (mixSelected == CG_MIX)) {
        Paint[] color_groups = mEMexperiment[0].getColorOfGroups();

        for (int i = 0; i < num_group[0] - 1; i++) {
            //System.out.println("color "+ i +"=" + color_groups[i].toString());
            renderer1.setSeriesPaint(i, color_groups[i]);
        }
        //System.out.println("color main ="+ color_mainGroup.toString());
        renderer1.setSeriesPaint(nkSelected, color_mainGroup);
    } else
        renderer1.setBasePaint(color_mainGroup);

    // renderer1.setShape(series_shapes[0]);   

    // subplot1.setDataset(0, dataset[0]);
    //System.out.println("setting renderer for " +0);
    //   subplot1.setRenderer(0, renderer1);
    // System.out.println("SOCR_EM creatChart: pt0="+dataset.getXValue(0, 0)+ ","+dataset.getYValue(0, 0));

    // change the auto tick unit selection to integer units only...
    NumberAxis rangeAxis = (NumberAxis) subplot1.getRangeAxis();
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    rangeAxis.setAutoRangeIncludesZero(true);
    //   rangeAxis.setUpperMargin(0);
    //  rangeAxis.setLowerMargin(0);

    NumberAxis domainAxis = (NumberAxis) subplot1.getDomainAxis();
    domainAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    domainAxis.setAutoRangeIncludesZero(true);
    //  domainAxis.setUpperMargin(0);
    //  domainAxis.setLowerMargin(0);

    XYLineAndShapeRenderer[] renderer1a = new XYLineAndShapeRenderer[num_series];
    if (num_series > 1) {
        for (int s = 0; s < num_series; s++) {
            //   System.out.println("adding pt for series:"+s +": seriesCount "+ dataset[s].getSeriesCount()+"itemcount="+dataset[s].getItemCount(0));
            renderer1a[s] = new XYLineAndShapeRenderer();
            if (num_group[0] > 0 && segment_flag && (mixSelected == CG_MIX)) {
                Paint[] color_groups = mEMexperiment[0].getColorOfGroups();

                for (int i = 0; i < num_group[0] - 1; i++) {
                    //System.out.println("color "+ i +"=" + color_groups[i].toString());
                    renderer1a[s].setSeriesPaint(i, color_groups[i]);
                }
                //System.out.println("color main ="+ color_mainGroup.toString());
                renderer1a[s].setSeriesPaint(nkSelected, color_mainGroup);
            } else
                renderer1a[s].setBasePaint(color_mainGroup);
            renderer1a[s].setBaseLinesVisible(false);
            renderer1a[s].setBaseShapesVisible(true);
            renderer1a[s].setBaseShapesFilled(true);
            renderer1a[s].setBaseShape(series_shapes[s]); // different shape of dots for each pair of input    
            subplot1.setDataset(s, dataset[s]);
            // System.out.println("setting renderer for " +s);
            subplot1.setRenderer(s, renderer1a[s]);
        }

    }

    if (kernels != null) {
        /*  System.out.println("draw kernels");
          System.out.println("num_series="+num_series);
          System.out.println("nkSelected="+nkSelected);*/
        XYLineAndShapeRenderer[][] renderer2 = new XYLineAndShapeRenderer[num_series][nkSelected];
        for (int s = 0; s < num_series; s++) {

            Paint[] color_kernels = mEMexperiment[s].getColorOfKernels();
            // System.out.println("SOCR_EM creatChart adding kernels:" +num_kernels+ "ws[0]="+ws[0]);
            for (int i = 0; i < nkSelected; i++) {
                // System.out.println("drawing kernel for series: "+s +" kernel:" +i);
                //  System.out.println("SOCR_EM creatChart: kernel "+i+" pt0="+kernels[i].getXValue(0, 0)+","+kernels[i].getYValue(0, 0));
                renderer2[s][i] = new XYLineAndShapeRenderer();
                renderer2[s][i].setBaseStroke(series_strokes[s]);
                renderer2[s][i].setBaseLinesVisible(true);
                renderer2[s][i].setBaseShapesVisible(false);
                //  renderer2[s][i].setShapesFilled(false);
                renderer2[s][i].setBasePaint(color_kernels[i]);
                subplot1.setDataset(num_series - 1 + s * num_series + i + 1, kernels[s][i]);
                // System.out.println("setting renderer for " +(num_series-1+s*num_series+i+1));
                subplot1.setRenderer(num_series - 1 + s * num_series + i + 1, renderer2[s][i]);
                //subplot1.setRangeAxis(i+1, rangeAxis);
            } //i
        } //s
    }

    segment_flag = false;
    return chart;

}

From source file:msi.gama.outputs.layers.charts.ChartJFreeChartOutputScatter.java

@Override
public void setSerieMarkerShape(final IScope scope, final String serieid, final String markershape) {
    final AbstractXYItemRenderer newr = (AbstractXYItemRenderer) this.getOrCreateRenderer(scope, serieid);
    if (newr instanceof XYLineAndShapeRenderer) {
        final XYLineAndShapeRenderer serierenderer = (XYLineAndShapeRenderer) getOrCreateRenderer(scope,
                serieid);/*from w w w  . j  a v  a 2  s.c  o m*/
        if (markershape != null) {
            if (markershape.equals(ChartDataStatement.MARKER_EMPTY)) {
                serierenderer.setSeriesShapesVisible(0, false);
            } else {
                Shape myshape = defaultmarkers[0];
                if (markershape.equals(ChartDataStatement.MARKER_CIRCLE)) {
                    myshape = defaultmarkers[1];
                } else if (markershape.equals(ChartDataStatement.MARKER_UP_TRIANGLE)) {
                    myshape = defaultmarkers[2];
                } else if (markershape.equals(ChartDataStatement.MARKER_DIAMOND)) {
                    myshape = defaultmarkers[3];
                } else if (markershape.equals(ChartDataStatement.MARKER_HOR_RECTANGLE)) {
                    myshape = defaultmarkers[4];
                } else if (markershape.equals(ChartDataStatement.MARKER_DOWN_TRIANGLE)) {
                    myshape = defaultmarkers[5];
                } else if (markershape.equals(ChartDataStatement.MARKER_HOR_ELLIPSE)) {
                    myshape = defaultmarkers[6];
                } else if (markershape.equals(ChartDataStatement.MARKER_RIGHT_TRIANGLE)) {
                    myshape = defaultmarkers[7];
                } else if (markershape.equals(ChartDataStatement.MARKER_VERT_RECTANGLE)) {
                    myshape = defaultmarkers[8];
                } else if (markershape.equals(ChartDataStatement.MARKER_LEFT_TRIANGLE)) {
                    myshape = defaultmarkers[9];
                }
                serierenderer.setSeriesShape(0, myshape);

            }
        }

    } else if (newr instanceof XYShapeRenderer) {
        final XYShapeRenderer serierenderer = (XYShapeRenderer) getOrCreateRenderer(scope, serieid);
        if (markershape != null) {
            if (markershape.equals(ChartDataStatement.MARKER_EMPTY)) {
                serierenderer.setSeriesShape(0, null);
            } else {
                Shape myshape = defaultmarkers[0];
                if (markershape.equals(ChartDataStatement.MARKER_CIRCLE)) {
                    myshape = defaultmarkers[1];
                } else if (markershape.equals(ChartDataStatement.MARKER_UP_TRIANGLE)) {
                    myshape = defaultmarkers[2];
                } else if (markershape.equals(ChartDataStatement.MARKER_DIAMOND)) {
                    myshape = defaultmarkers[3];
                } else if (markershape.equals(ChartDataStatement.MARKER_HOR_RECTANGLE)) {
                    myshape = defaultmarkers[4];
                } else if (markershape.equals(ChartDataStatement.MARKER_DOWN_TRIANGLE)) {
                    myshape = defaultmarkers[5];
                } else if (markershape.equals(ChartDataStatement.MARKER_HOR_ELLIPSE)) {
                    myshape = defaultmarkers[6];
                } else if (markershape.equals(ChartDataStatement.MARKER_RIGHT_TRIANGLE)) {
                    myshape = defaultmarkers[7];
                } else if (markershape.equals(ChartDataStatement.MARKER_VERT_RECTANGLE)) {
                    myshape = defaultmarkers[8];
                } else if (markershape.equals(ChartDataStatement.MARKER_LEFT_TRIANGLE)) {
                    myshape = defaultmarkers[9];
                }
                serierenderer.setSeriesShape(0, myshape);

            }
        }

    }

}

From source file:probe.com.view.body.quantdatasetsoverview.quantproteinstabsheet.studies.ProteinStudyComparisonScatterPlotLayout.java

/**
 * Creates a sample jFreeChart./*ww  w.java 2 s.  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;");
        }
    }

}