2012-04-12 3 views
9

두 개의 데이터 세트가있는 JFreeChart를 사용하여 XY 선형 차트를 만들었습니다. 두 라인이 다른 색상으로 나타나기를 바랍니다. 나는 다음과 같은 사용하여 시도 코드 -XYline 차트에서 다른 시리즈의 다른 색상 JFreeChart

또한 내가 다른 렌더러를 사용하고 다음 코드를 사용하여 시도했다 (이 그것을 할 올바른 방법인지 모른다)
XYPlot plot = chart.getXYPlot(); 
    XYItemRenderer xyir = plot.getRenderer(); 
    xyir.setSeriesPaint(0, Color.GREEN); 
    plot.setDataset(0, xyDataset1); 

    xyir.setSeriesPaint(1, Color.blue); 
    plot.setDataset(1, xyDataset2); 

-

XYPlot plot1 = chart.getXYPlot(); 
    XYPlot plot2 = chart.getXYPlot(); 

    XYItemRenderer xyir1 = plot1.getRenderer(); 
    xyir1.setSeriesPaint(0, Color.GREEN); 
    plot1.setDataset(0, xyDataset1); 

    XYItemRenderer xyir2 = plot2.getRenderer(); 
    xyir2.setSeriesPaint(1, Color.blue); 
    plot2.setDataset(1, xyDataset2); 

에서가 두 경우 모두 파란색으로 줄을 인쇄합니다. 무엇이 잘못 되었나요 ?? 어떤 제안 ??

답변

17

솔루션은, 그 이전에 내가 그것을 렌더러에 nullSeries 페인트를 설정하는

XYPlot plot = chart.getXYPlot(); 
    plot.setDataset(0, xyDataset1); 
    plot.setDataset(1, xyDataset2); 
    XYLineAndShapeRenderer renderer0 = new XYLineAndShapeRenderer(); 
    XYLineAndShapeRenderer renderer1 = new XYLineAndShapeRenderer(); 
    plot.setRenderer(0, renderer0); 
    plot.setRenderer(1, renderer1); 
    plot.getRendererForDataset(plot.getDataset(0)).setSeriesPaint(0, Color.red); 
    plot.getRendererForDataset(plot.getDataset(1)).setSeriesPaint(0, Color.blue); 
2

표시된 접근 방식은 example에서 작동하며 단일 렌더러로 충분합니다. sscce은 문제를 격리하는 데 도움이 될 수 있습니다.

개별 항목을 제어하려면 getItemPaint()을 무시할 수 있습니다 (here).

-1

시도를 properly-- 일을하지 않은, 두 개의 서로 다른 렌더러를 사용하여, 나를 위해 작동을 찾을 수 setSeriesPaint(null);

소스를 살펴보면 페인트가 !null인지 먼저 확인한 다음 기본 색상을 사용합니다.

null의 경우 조회 테이블에서 시간 세리와 관련된 색을 사용합니다.

관련 문제