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

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

Introduction

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

Prototype

public void setSeriesPaint(int series, Paint paint) 

Source Link

Document

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

Usage

From source file:de.dmarcini.submatix.pclogger.gui.spx42LogGraphPanel.java

/**
 * Erzeuge je einen Graphen fr die Sensoren Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui
 * //from ww  w  .j a va 2 s  . com
 * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 02.08.2012
 * @param diveList
 * @param thePlot
 * @param sensor
 */
private void makePpoGraph(Vector<Integer[]> diveList, XYPlot thePlot, int sensor) {
    XYDataset ppo2DataSet;
    int indexForCreate;
    int posForGraph;
    int posColor;
    String title;
    //
    lg.debug("create Sensor <" + sensor + "> dataset");
    // Titel schon mal...
    title = String.format(LangStrings.getString("spx42LogGraphPanel.graph.ppo2SensorScalaTitle"), sensor);
    //
    // Dataset Index einstellen
    switch (sensor) {
    case 0:
        indexForCreate = LogDerbyDatabaseUtil.PPO2;
        posForGraph = GRAPH_PPO2ALL;
        posColor = ProjectConst.GRAPH_PPO2ALL_RCOLOR;
        title = LangStrings.getString("spx42LogGraphPanel.graph.ppo2ScalaTitle");
        break;
    case 1:
        indexForCreate = LogDerbyDatabaseUtil.PPO2_01;
        posForGraph = GRAPH_PPO2_01;
        posColor = ProjectConst.GRAPH_PPO2_01_RCOLOR;
        break;
    case 2:
        indexForCreate = LogDerbyDatabaseUtil.PPO2_02;
        posForGraph = GRAPH_PPO2_02;
        posColor = ProjectConst.GRAPH_PPO2_02_RCOLOR;
        break;
    case 3:
        indexForCreate = LogDerbyDatabaseUtil.PPO2_03;
        posForGraph = GRAPH_PPO2_03;
        posColor = ProjectConst.GRAPH_PPO2_02_RCOLOR;
        break;
    default:
        indexForCreate = LogDerbyDatabaseUtil.PPO2_01;
        posForGraph = GRAPH_PPO2_01;
        posColor = ProjectConst.GRAPH_PPO2_01_RCOLOR;
    }
    if (showingUnitSystem == savedUnitSystem || showingUnitSystem == ProjectConst.UNITS_DEFAULT) {
        ppo2DataSet = createXYDataset(title, diveList, ProjectConst.UNITS_DEFAULT, 0, indexForCreate);
    } else {
        ppo2DataSet = createXYDataset(title, diveList, showingUnitSystem, 0, indexForCreate);
    }
    final XYLineAndShapeRenderer ppo2Renderer = new XYLineAndShapeRenderer(true, true);
    // die Achse sollte schon erstellt sein
    thePlot.setDataset(posForGraph, ppo2DataSet);
    thePlot.mapDatasetToRangeAxis(posForGraph, GRAPH_PPO2ALL);
    ppo2Renderer.setSeriesPaint(0, new Color(posColor));
    ppo2Renderer.setSeriesShapesVisible(0, false);
    ppo2Renderer.setDrawSeriesLineAsPath(true);
    thePlot.setRenderer(posForGraph, ppo2Renderer);
}

From source file:de.dmarcini.submatix.pclogger.gui.spx42LogGraphPanel.java

/**
 * Erzeuge eine Grafik fr die Nullzeitanzeige Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui
 * /*from   w w w . j a va 2 s. c om*/
 * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 02.08.2012
 * @param diveList
 * @param thePlot
 */
private void makeNulltimeGraph(Vector<Integer[]> diveList, XYPlot thePlot) {
    XYDataset nullTimeDataSet;
    //
    lg.debug("create nulltime dataset");
    nullTimeDataSet = createXYDataset(LangStrings.getString("spx42LogGraphPanel.graph.nulltimeScalaTitle"),
            diveList, ProjectConst.UNITS_DEFAULT, 0, LogDerbyDatabaseUtil.NULLTIME);
    final XYLineAndShapeRenderer lineNullTimeRenderer = new XYLineAndShapeRenderer(true, true);
    final LogarithmicAxis nullTimeAxis = new LogarithmicAxis(
            LangStrings.getString("spx42LogGraphPanel.graph.nulltimeAxisTitle"));
    nullTimeAxis.setNumberFormatOverride(new DecimalFormat("#.###"));
    lineNullTimeRenderer.setSeriesPaint(0, new Color(ProjectConst.GRAPH_NULLTIME_ACOLOR));
    lineNullTimeRenderer.setSeriesShapesVisible(0, false);
    lineNullTimeRenderer.setDrawSeriesLineAsPath(true);
    nullTimeAxis.setAutoRange(false);
    nullTimeAxis.setRange(0.0D, 200.0D); // Lege die Nullzeit Axenreichweite auf ein bersichtliches Ma fest
    // nullTimeAxis.setAutoRangeIncludesZero( true );
    thePlot.setRangeAxis(GRAPH_NULLTIME, nullTimeAxis);
    thePlot.mapDatasetToRangeAxis(GRAPH_NULLTIME, GRAPH_NULLTIME);
    thePlot.setDataset(GRAPH_NULLTIME, nullTimeDataSet);
    thePlot.setRenderer(GRAPH_NULLTIME, lineNullTimeRenderer);
}

From source file:de.dmarcini.submatix.pclogger.gui.spx42LogGraphPanel.java

/**
 * Temperaturgraph machen Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui
 * /*  w w  w  .  j a  v  a2s. co m*/
 * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 02.08.2012
 * @param labels
 * @param thePlot
 * @param diveList
 */
private void makeTemperatureGraph(Vector<Integer[]> diveList, XYPlot thePlot, String[] labels) {
    XYDataset tempDataSet;
    Color axisColor = new Color(ProjectConst.GRAPH_TEMPERATURE_ACOLOR);
    Color renderColor = new Color(ProjectConst.GRAPH_TEMPERATURE_RCOLOR);
    //
    lg.debug("create temp dataset");
    if (showingUnitSystem == savedUnitSystem || showingUnitSystem == ProjectConst.UNITS_DEFAULT) {
        // Keine nderung norwendig!
        tempDataSet = createXYDataset(LangStrings.getString("spx42LogGraphPanel.graph.tempScalaTitle"),
                diveList, ProjectConst.UNITS_DEFAULT, 0, LogDerbyDatabaseUtil.TEMPERATURE);
    } else {
        // bitte konvertiere die Einheiten ins gewnschte Format!
        tempDataSet = createXYDataset(LangStrings.getString("spx42LogGraphPanel.graph.tempScalaTitle"),
                diveList, showingUnitSystem, 0, LogDerbyDatabaseUtil.TEMPERATURE);
    }
    final XYLineAndShapeRenderer lineTemperatureRenderer = new XYLineAndShapeRenderer(true, true);
    final NumberAxis tempAxis = new NumberAxis(
            LangStrings.getString("spx42LogGraphPanel.graph.tempAxisTitle") + " " + labels[1]);
    tempAxis.setLabelPaint(axisColor);
    tempAxis.setTickLabelPaint(axisColor);
    tempAxis.setNumberFormatOverride(new DecimalFormat("###.##"));
    lineTemperatureRenderer.setSeriesPaint(0, renderColor);
    lineTemperatureRenderer.setSeriesShapesVisible(0, false);
    lineTemperatureRenderer.setDrawSeriesLineAsPath(true);
    tempAxis.setAutoRangeIncludesZero(true);
    thePlot.setRangeAxis(GRAPH_DEPTH, tempAxis);
    thePlot.mapDatasetToRangeAxis(GRAPH_DEPTH, 0);
    thePlot.setDataset(GRAPH_TEMPERATURE, tempDataSet);
    thePlot.setRenderer(GRAPH_TEMPERATURE, lineTemperatureRenderer);
}

From source file:com.rapidminer.gui.plotter.charts.ScatterPlotter2.java

@Override
public AbstractXYItemRenderer getItemRenderer(boolean nominal, int size, final double minColor,
        final double maxColor) {
    if (nominal) {
        // renderer settings
        XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(false, true) {

            private static final long serialVersionUID = 8435520335829606084L;

            // public boolean getItemVisible(int series, int item) {
            // String id = getId(series, item);
            // return (id != null && dataTable.isDeselected(id));
            // }/*  ww  w.j a  va2 s  .  co m*/

            @Override
            public Paint getItemPaint(int series, int item) {
                String id = getId(series, item);
                if (id != null && dataTable.isDeselected(id)) {
                    return DESELECTED_COLOR;
                } else {
                    return super.getItemPaint(series, item);
                }
            }

            @Override
            public Paint getItemOutlinePaint(int series, int item) {
                String id = getId(series, item);
                if (id != null && dataTable.isDeselected(id)) {
                    return DESELECTED_COLOR;
                } else {
                    return super.getItemOutlinePaint(series, item);
                }
            }
        };
        renderer.setBaseOutlinePaint(Color.BLACK);
        renderer.setUseOutlinePaint(true);
        renderer.setDrawOutlines(true);

        if (size > 1) {
            for (int i = 0; i < size; i++) {
                renderer.setSeriesPaint(i, getColorProvider().getPointColor(i / (double) (size - 1)));
                renderer.setSeriesShape(i, new Ellipse2D.Double(-3, -3, POINT_SIZE, POINT_SIZE));
            }
        } else {
            renderer.setSeriesPaint(0, getColorProvider().getPointColor(1.0d));
            renderer.setSeriesShape(0, new Ellipse2D.Double(-3, -3, POINT_SIZE, POINT_SIZE));
        }
        return renderer;
    } else {
        XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(false, true) {

            private static final long serialVersionUID = 7869118044747608622L;

            private ColorProvider colorProvider = new ColorProvider();

            // public boolean getItemVisible(int series, int item) {
            // String id = getId(series, item);
            // return (id != null && dataTable.isDeselected(id));
            // }

            @Override
            public Paint getItemPaint(int series, int item) {
                String id = getId(series, item);
                if (id != null && dataTable.isDeselected(id)) {
                    return DESELECTED_COLOR;
                } else {
                    double colorValue = ((XYZDataset) getPlot().getDataset()).getZValue(series, item);
                    double normalized = (colorValue - minColor) / (maxColor - minColor);
                    return colorProvider.getPointColor(normalized);
                }
            }

            @Override
            public Paint getItemOutlinePaint(int series, int item) {
                String id = getId(series, item);
                if (id != null && dataTable.isDeselected(id)) {
                    return DESELECTED_COLOR;
                } else {
                    return super.getItemOutlinePaint(series, item);
                }
            }
        };

        renderer.setBaseOutlinePaint(Color.BLACK);
        renderer.setUseOutlinePaint(true);
        renderer.setDrawOutlines(true);
        renderer.setSeriesShape(0, new Ellipse2D.Double(-3, -3, POINT_SIZE, POINT_SIZE));
        return renderer;
    }
}

From source file:com.rapidminer.gui.new_plotter.engine.jfreechart.ChartRendererFactory.java

private static void configureXYLineAndShapeRenderer(XYLineAndShapeRenderer renderer, ValueSource valueSource,
        PlotInstance plotInstance) {/*w  w w  . j a  v a 2 s .  c o  m*/
    renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
    SeriesFormat seriesFormat = valueSource.getSeriesFormat();
    DimensionConfig domainConfig = valueSource.getDomainConfig();
    DimensionConfig colorDimensionConfig = plotInstance.getCurrentPlotConfigurationClone()
            .getDimensionConfig(PlotDimension.COLOR);
    DimensionConfig shapeDimensionConfig = plotInstance.getCurrentPlotConfigurationClone()
            .getDimensionConfig(PlotDimension.SHAPE);
    ValueSourceData valueSourceData = plotInstance.getPlotData().getValueSourceData(valueSource);

    int seriesCount = valueSourceData.getSeriesDataForAllGroupCells().groupCellCount();

    // Loop all series and set series format.
    // Format based on dimension configs will be set later on in initFormatDelegate().
    for (int seriesIdx = 0; seriesIdx < seriesCount; ++seriesIdx) {
        // configure linestyle
        if (seriesFormat.getLineStyle() == LineStyle.NONE) {
            renderer.setSeriesLinesVisible(seriesIdx, false);
        } else {
            renderer.setSeriesLinesVisible(seriesIdx, true);
            renderer.setSeriesStroke(seriesIdx, seriesFormat.getStroke(), false);
        }

        // configure series shape if necessary
        if (!SeriesFormat.calculateIndividualFormatForEachItem(domainConfig, shapeDimensionConfig)) {
            if (seriesFormat.getItemShape() != ItemShape.NONE) {
                renderer.setSeriesShapesVisible(seriesIdx, true);
                renderer.setSeriesShape(seriesIdx, seriesFormat.getItemShape().getShape());
            } else {
                renderer.setSeriesShapesVisible(seriesIdx, false);
            }
        }

        // configure series color if necessary
        if (!SeriesFormat.calculateIndividualFormatForEachItem(domainConfig, colorDimensionConfig)) {
            Color itemColor = seriesFormat.getItemColor();
            renderer.setSeriesPaint(seriesIdx, itemColor);
            renderer.setSeriesFillPaint(seriesIdx, itemColor);
        }
        renderer.setSeriesOutlinePaint(seriesIdx, PlotConfiguration.DEFAULT_SERIES_OUTLINE_PAINT);
        renderer.setUseOutlinePaint(true);
    }
}

From source file:org.esa.beam.visat.toolviews.stat.StatisticsPanel.java

private static ChartPanel getScatterPlotPanel(XIntervalSeriesCollection dataset, String xAxisLabel,
        String yAxisLabel, Color color, double domainBounds[], double rangeBounds[]) {
    //  JFreeChart chart = ChartFactory.createScatterPlot(
    JFreeChart chart = ChartFactory.createXYLineChart(null, xAxisLabel, yAxisLabel, dataset,
            PlotOrientation.VERTICAL, false, // Legend?
            true, // tooltips
            false // url
    );//from  w  w  w  . j ava 2s .  co m
    final XYPlot xyPlot = chart.getXYPlot();
    //   xyPlot.setForegroundAlpha(0.85f);
    xyPlot.setBackgroundAlpha(0.0f);
    xyPlot.setNoDataMessage("No data");
    xyPlot.setAxisOffset(new RectangleInsets(5, 5, 5, 10));

    // todo Danny set bounds here

    //        if (domainBounds[0] != domainBounds[1]) {
    //            xyPlot.getDomainAxis().setLowerBound(domainBounds[0]);
    //            xyPlot.getDomainAxis().setUpperBound(domainBounds[1]);
    //        }
    //
    //        if (rangeBounds[0] != rangeBounds[1]) {
    //            xyPlot.getRangeAxis().setLowerBound(rangeBounds[0]);
    //            xyPlot.getRangeAxis().setUpperBound(rangeBounds[1]);
    //        }

    if (!Double.isNaN(domainBounds[0])) {
        xyPlot.getDomainAxis().setLowerBound(domainBounds[0]);
    }

    if (!Double.isNaN(domainBounds[1])) {
        xyPlot.getDomainAxis().setUpperBound(domainBounds[1]);
    }

    if (!Double.isNaN(rangeBounds[0])) {
        xyPlot.getRangeAxis().setLowerBound(rangeBounds[0]);
    }

    if (!Double.isNaN(rangeBounds[1])) {
        xyPlot.getRangeAxis().setUpperBound(rangeBounds[1]);
    }

    final XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) xyPlot.getRenderer();
    renderer.setSeriesPaint(0, color);
    renderer.setUseFillPaint(true);
    renderer.setDrawOutlines(true);
    renderer.setSeriesShapesFilled(0, true);
    renderer.setSeriesFillPaint(0, color);

    ChartPanel chartPanel = new ChartPanel(chart);
    //    chartPanel.setPreferredSize(new Dimension(300, 200));

    return chartPanel;
}

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);//from w  w w  . ja v a 2  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.ucla.stat.SOCR.applications.demo.PortfolioApplication2.java

void updateGraph() {
    /*   System.out.println("updateGraph get called----------------mouseClicked="+mouseClicked);
       Exception e = new Exception();//  www .  ja v  a  2  s  . co  m
       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:org.yardstickframework.report.jfreechart.JFreeChartGraphPlotter.java

/**
 * @param folderToWrite Folder to write the resulted charts.
 * @param plots Collections of plots.//from  w w  w .  j a v  a  2s. com
 * @param infoMap Map with additional plot info.
 * @param mode Generation mode.
 * @throws Exception If failed.
 */
private static void processPlots(File folderToWrite, Collection<List<PlotData>> plots,
        Map<String, List<JFreeChartPlotInfo>> infoMap, JFreeChartGenerationMode mode) throws Exception {
    ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

    XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, false);

    int idx = -1;

    while (true) {
        idx++;

        DefaultXYDataset dataSet = new DefaultXYDataset();

        List<JFreeChartPlotInfo> infoList = new ArrayList<>();

        String xAxisLabel = "";
        String yAxisLabel = "";
        String plotName = "";

        int cnt = 0;

        for (List<PlotData> plotData0 : plots) {
            if (plotData0.size() <= idx)
                continue;

            PlotData plotData = plotData0.get(idx);

            dataSet.addSeries(plotData.plotName() + "_" + cnt++, plotData.series().data);

            xAxisLabel = plotData.xAxisLabel;
            yAxisLabel = plotData.yAxisLabel;
            plotName = plotData.plotName();

            infoList.add(info(plotData.series(), mode));
        }

        if (infoList.isEmpty())
            break;

        JFreeChart chart = ChartFactory.createXYLineChart("", xAxisLabel, yAxisLabel, dataSet,
                PlotOrientation.VERTICAL, false, false, false);

        AxisSpace as = new AxisSpace();

        as.add(150, RectangleEdge.LEFT);

        XYPlot plot = (XYPlot) chart.getPlot();

        BasicStroke stroke = new BasicStroke(1);

        plot.setRenderer(renderer);
        plot.setBackgroundPaint(WHITE);
        plot.setRangeGridlinePaint(GRAY);
        plot.setDomainGridlinePaint(GRAY);
        plot.setFixedRangeAxisSpace(as);
        plot.setOutlineStroke(stroke);

        for (int i = 0; i < infoList.size(); i++) {
            Color color = PLOT_COLORS[i % PLOT_COLORS.length];

            renderer.setSeriesPaint(i, color);
            renderer.setSeriesStroke(i, new BasicStroke(3)); // Line thickness.

            infoList.get(i).color(Integer.toHexString(color.getRGB()).substring(2));
        }

        ValueAxis axis = plot.getRangeAxis();

        Font font = new Font("Helvetica,Arial,sans-serif", Font.BOLD, axis.getTickLabelFont().getSize() + 5);

        axis.setTickLabelFont(font);
        axis.setLabelFont(font);
        plot.getDomainAxis().setTickLabelFont(font);
        plot.getDomainAxis().setLabelFont(font);

        chart.setTitle(new TextTitle(yAxisLabel, new Font(font.getName(), font.getStyle(), 30)));

        File res = new File(folderToWrite, plotName + ".png");

        ChartUtilities.saveChartAsPNG(res, chart, 1000, 500, info);

        infoMap.put(res.getAbsolutePath(), infoList);

        println("Chart is saved to file: ", res);
    }
}

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

/**
 * Creates a sample jFreeChart./*from www .  jav  a2 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;");
        }
    }

}