2012-03-19 125 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