2012-03-19 176 views
0

我有两个属于同一个数据集的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); 

回答

3

在此基础上example,我编辑以下行来获得下面的图片。

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

附录:要获得双配色的,可以覆盖getItemPaint()如图所示herehere

enter image description here

+0

[更新](http://stackoverflow.com/posts/9763985/revisions)来使用相同的颜色为两个系列。 – trashgod 2012-03-19 01:49:47

+0

谢谢。但我省略了一些东西。在我的图表中可以有很多系列,每个系列都有两个系列。所以每个数据集都有一个颜色,由库自动提供。 – Jacopo 2012-03-19 12:02:56

+0

你可以重载'getItemPaint()';我已经链接到上面的例子。 – trashgod 2012-03-19 14:42:59