Estoy tratando de agregar una leyenda debajo del gráfico en un gráfico disperso como se muestra a continuación. Alguien sabe si esto es posible?¿Es posible agregar Legend a la gráfica en JFreeChart?
Antes:
Después:
Estoy tratando de agregar una leyenda debajo del gráfico en un gráfico disperso como se muestra a continuación. Alguien sabe si esto es posible?¿Es posible agregar Legend a la gráfica en JFreeChart?
Antes:
Después:
extienden StandardXYItemLabelGenerator
es a menudo un enfoque útil, pero el constructors suministrado puede ser suficiente. Para este generador, la MessageFormat
ArgumentIndex valores corresponden al nombre serie, dominio y gama.
NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(2); // etc.
XYItemLabelGenerator generator =
new StandardXYItemLabelGenerator("{0} {1} {2}", format, format);
renderer.setBaseItemLabelGenerator(generator);
renderer.setBaseItemLabelsVisible(true);
Además, se puede controlar el etiquetado series individuales con
renderer.setSeriesItemLabelsVisible(true);
Esto se controla en el procesador:
XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
renderer.setBaseItemLabelsVisible(true);
Gracias por la respuesta. Intenté esto pero todavía apareció. ¿Hay algo más que deba hacer antes? ¿Tal vez asignar etiquetas a cada parcela? – rmartinus
Creo que lo tengo ahora ... Creé mi propio generador de etiquetas de elementos llamado "LegendXYItemLabelGenerator (..)" y lo puse a funcionar. Además de "renderer.setBaseItemLabelsVisible (true);", agregué "renderer.setBaseItemLabelGenerator (new LegendXYItemLabelGenerator (plot.getLegendItems()));" – rmartinus
¿Es esto posible en un 'XYAreaRenderer'? Estoy intentando ponerlo en funcionamiento y puedo hacerlo con 'XYLineAndShapeRenderer', pero el mismo código no funciona para' XYAreaRenderer'. ' – skaz
Aquí está el generador de etiqueta personalizada que creé:
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();
}
}
y luego añade este código, además de @ código de Guilaume:
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelGenerator(new LegendXYItemLabelGenerator(plot.getLegendItems()));
y aquí está el resultado:
+1 para el buen ejemplo. He sugerido un enfoque alternativo en otra respuesta. – trashgod
Vea también este [ejemplo] (http://stackoverflow.com/a/8932920/230513) para 'StandardCategoryToolTipGenerator'. – trashgod