2010-06-30 35 views

Trả lời

5

Mở rộng StandardXYItemLabelGenerator thường là một phương pháp hữu ích, nhưng cung cấp constructors có thể đủ. Đối với máy phát điện này, MessageFormatArgumentIndex giá trị tương ứng với tên loạt, miềnphạm vi.

NumberFormat format = NumberFormat.getNumberInstance(); 
format.setMaximumFractionDigits(2); // etc. 
XYItemLabelGenerator generator = 
    new StandardXYItemLabelGenerator("{0} {1} {2}", format, format); 
renderer.setBaseItemLabelGenerator(generator); 
renderer.setBaseItemLabelsVisible(true); 

Bên cạnh đó, bạn có thể kiểm soát việc ghi nhãn hàng loạt cá nhân với

renderer.setSeriesItemLabelsVisible(true); 
+0

Xem thêm [ví dụ] (http://stackoverflow.com/a/8932920/230513) cho 'StandardCategoryToolTipGenerator'. – trashgod

1

này được kiểm soát trên các renderer:

XYPlot plot = (XYPlot) chart.getPlot(); 
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(); 
renderer.setBaseItemLabelsVisible(true); 
+0

Cảm ơn cho câu trả lời. Tôi đã thử điều này nhưng bây giờ nó vẫn xuất hiện. Có điều gì khác mà tôi có thể cần phải làm trước đây không? Có thể gán nhãn cho từng ô? – rmartinus

+0

Tôi nghĩ rằng tôi đã nhận nó ngay bây giờ .. Tôi đã tạo ra máy phát điện nhãn hiệu riêng của tôi gọi là "LegendXYItemLabelGenerator (..)" và nhận nó để làm việc. Ngoài "renderer.setBaseItemLabelsVisible (true);", tôi đã thêm "renderer.setBaseItemLabelGenerator (new LegendXYItemLabelGenerator (plot.getLegendItems()));" – rmartinus

+0

Điều này có thể xảy ra đối với 'XYAreaRenderer' không? Tôi đang cố gắng để có được nó làm việc và tôi có thể cho 'XYLineAndShapeRenderer' nhưng mã tương tự không làm việc cho' XYAreaRenderer'. ' – skaz

7

Dưới đây là các máy phát điện nhãn tùy chỉnh mà tôi tạo ra:

public class LegendXYItemLabelGenerator extends StandardXYItemLabelGenerator 
     implements XYItemLabelGenerator, Cloneable, PublicCloneable, 
     Serializable { 
    private LegendItemCollection legendItems; 

    public LegendXYItemLabelGenerator(LegendItemCollection legendItems) { 
     super(); 
     this.legendItems = legendItems; 
    } 

    @Override 
    public String generateLabel(XYDataset dataset, int series, int item) { 
     LegendItem legendItem = legendItems.get(series); 
     return legendItem.getLabel(); 
    } 
} 

và sau đó tôi thêm mã này, thêm vào @ đang Guilaume của:

renderer.setBaseItemLabelsVisible(true); 
renderer.setBaseItemLabelGenerator(new LegendXYItemLabelGenerator(plot.getLegendItems())); 

và đây là kết quả:

alt text

+0

+1 cho ví dụ tốt. Tôi đã đề xuất một cách tiếp cận khác trong câu trả lời khác. – trashgod

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