Я пытаюсь добавить легенду под сюжет в разбросанной диаграмме, как показано ниже. Кто-нибудь знает, возможно ли это?Можно ли добавить Легенду к сюжету в JFreeChart?
До:
После:
Я пытаюсь добавить легенду под сюжет в разбросанной диаграмме, как показано ниже. Кто-нибудь знает, возможно ли это?Можно ли добавить Легенду к сюжету в JFreeChart?
До:
После:
Расширение StandardXYItemLabelGenerator
часто полезный подход, но входящий в комплект поставки constructors может быть достаточно. Для этого генератора, то 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);
Это контролируется на визуализатора:
XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
renderer.setBaseItemLabelsVisible(true);
Спасибо за ответ. Я попробовал это, но он все еще появился. Есть ли что-нибудь еще, что мне, вероятно, нужно делать раньше? Может быть, назначить ярлыки для каждого сюжета? – rmartinus
Я думаю, что получил его сейчас. Я создал свой собственный генератор ярлыков элементов под названием «LegendXYItemLabelGenerator (..)» и получил его для работы. В дополнение к «renderer.setBaseItemLabelsVisible (true)», я добавил «renderer.setBaseItemLabelGenerator (новый LegendXYItemLabelGenerator (plot.getLegendItems())); – rmartinus
Возможно ли это на 'XYAreaRenderer'? Я пытаюсь заставить его работать, и я могу для 'XYLineAndShapeRenderer', но тот же код не работает для' XYAreaRenderer'. ' – skaz
Вот заказ ярлык генератор, который я создал:
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()));
и вот результат:
+1 для хорошего примера. Я предложил альтернативный подход в другом ответе. – trashgod
См. Также этот [пример] (http://stackoverflow.com/a/8932920/230513) для 'StandardCategoryToolTipGenerator'. – trashgod