Получите разные серии, чтобы иметь одинаковый цвет - PullRequest
0 голосов
/ 19 марта 2012

У меня есть два XYSeries, которые принадлежат одному и тому же набору данных. Первая серия должна показывать только фигуры, а вторая серия должна показывать только линии. Оба должны иметь одинаковый цвет. Есть ли способ сделать это?

Предоставление фрагмента кода для лучшего понимания:

XYSeries series = new XYSeries("S1", false); // autosort disabled
    for(int i = 0; i < xValues.length; ++i)
        series.add(xValues[i], yValues[i]);

    XYSeries series1 = new XYSeries("S2", false);
    for(int i = 0; i < xValues.length; ++i)
        series1.add(yValues[i], xValues[i]);

    XYSeriesCollection dataset = new XYSeriesCollection();

    dataset.addSeries(series);

    dataset.addSeries(series1);

    // create a chart with title, axis labels, tooltips and maybe a legend
    JFreeChart chart = ChartFactory.createScatterPlot(title, xLabel, yLabel, dataset, 
            PlotOrientation.VERTICAL, legend, true, false);

    XYPlot plot = (XYPlot) chart.getPlot();
    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();

    renderer.setSeriesLinesVisible(0, true);
    renderer.setSeriesShapesVisible(1, false);
    renderer.setSeriesLinesVisible(1, true);

1 Ответ

3 голосов
/ 19 марта 2012

Основываясь на этом примере , я отредактировал следующие строки, чтобы получить изображение ниже.

XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) xyPlot.getRenderer();
renderer.setSeriesLinesVisible(1, true);
renderer.setSeriesShapesVisible(1, false);
renderer.setSeriesPaint(1, Color.blue);

Добавление: чтобы получить пары совпадающих цветов, вы можете переопределить getItemPaint() какпоказано здесь и здесь .

enter image description here

...