Действительно ли возможно добавить Легенду к графику в JFreeChart?

Я пытаюсь добавить легенду в соответствии с графиком в рассеянной диаграмме как показано ниже. Кто-либо знает, возможно ли это?

Прежде: alt text

После: alt text

5
задан Community 8 February 2017 в 14:27
поделиться

3 ответа

Расширение StandardXYItemLabelGenerator часто является полезным подходом, но поставляемых конструкторов может хватить. Для этого генератора значения MessageFormat ArgumentIndex соответствуют имени серии , домену и диапазону .

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

Кроме того, вы можете управлять маркировкой отдельных серий с помощью

renderer.setSeriesItemLabelsVisible(true);
5
ответ дан 18 December 2019 в 14:42
поделиться

Вот созданный мной пользовательский генератор меток:

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

, а затем я добавил этот код в дополнение к коду @ Guilaume:

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

и вот результат:

alt text

7
ответ дан 18 December 2019 в 14:42
поделиться

Это контролируется средством визуализации:

XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
renderer.setBaseItemLabelsVisible(true);
1
ответ дан 18 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: