pie example descargar chart java charts jfreechart

java - example - ¿Es posible agregar leyenda a la trama en JFreeChart?



pie chart java (3)

Estoy tratando de agregar una leyenda debajo de la trama en un gráfico disperso como se muestra a continuación. Alguien sabe si esto es posible?

Antes de:

Después:


Esto se controla en el renderizador:

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


La extensión de StandardXYItemLabelGenerator es a menudo un enfoque útil, pero los constructores suministrados pueden ser suficientes. Para este generador, los valores de MessageFormat ArgumentIndex corresponden al nombre , dominio y rango de la serie .

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, puede controlar el etiquetado de series individuales con

renderer.setSeriesItemLabelsVisible(true);


Aquí está el generador de etiquetas personalizado 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 agregué este código además del código de @ Guilaume:

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

y aquí está el resultado: