2012-04-12 39 views
9

Tôi đã tạo biểu đồ đường XY bằng JFreeChart, có hai bộ dữ liệu, tôi muốn cả hai dòng có màu khác nhau. Tôi đã cố gắng sử dụng sau số-Màu khác nhau cho các chuỗi khác nhau trong biểu đồ 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); 

Ngoài ra tôi đã cố gắng sử dụng mã sau đây, nơi tôi sử dụng renderer khác nhau (không biết liệu đây là cách chính xác để làm điều đó) -

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); 

Trong cả hai trường hợp của nó in cả hai dòng màu xanh lam. Có gì sai? Bất kỳ đề xuất??

Trả lời

17

Tìm thấy các giải pháp, nó hoạt động đối với tôi, sử dụng hai Renderer khác nhau, trước đó tôi đã không làm việc đó properly--

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

Cách tiếp cận được hiển thị hoạt động trong example này và một trình kết xuất đơn lẻ là đủ. An sscce có thể giúp cô lập vấn đề.

Để kiểm soát các mục riêng lẻ, bạn có thể ghi đè getItemPaint(), được hiển thị here.

-1

Cố gắng thiết lập các sơn Series để null trong các renderer setSeriesPaint(null);

Nếu bạn nhìn vào nguồn đầu tiên nó kiểm tra xem sơn có phải là !null hay không, sau đó sử dụng màu gốc.

Nếu null, sử dụng các màu được liên kết với thanh thời gian từ bảng tra cứu.

Các vấn đề liên quan