2010-07-27 14 views

Respuesta

4

bien, solo lo hice yo mismo. De esta forma elimino cada segundo artículo de la leyenda. ¡por favor deje comentarios!

LegendItemCollection legendItemsOld = plot.getLegendItems(); 
final LegendItemCollection legendItemsNew = new LegendItemCollection(); 

for(int i = 0; i< legendItemsOld.getItemCount(); i++){ 
    if(!(i%2 == 0)){ 
    legendItemsNew.add(legendItemsOld.get(i)); 
    } 
} 
LegendItemSource source = new LegendItemSource() { 
LegendItemCollection lic = new LegendItemCollection(); 
{lic.addAll(legendItemsNew);} 
public LegendItemCollection getLegendItems() { 
    return lic; 
} 
}; 
chart.addLegend(new LegendTitle(source)); 
+2

Eso es bueno para una solución dinámica. También es posible usar renderer.getLegendItems() y plot.setFixedLegendItems(). Esto proporciona una solución más simple, pero solo es bueno si su leyenda no cambiará después de establecer la leyenda fija. No tengo tiempo para crear los detalles de la solución, pero busque getLegendItems y setFixedLegendItems en AbstractXYItemRenderer y XYPlot. – Jason

9

He intentado la sugerencia anterior pero no pareció funcionar para mí. Si solo desea eliminar series de la leyenda, puede hacerlo con el método setSeriesVisibleInLegend(). Mi caso es que algunas de mis series no tienen una clave de leyenda. Si no tienen una clave de leyenda, entonces la serie no debería estar visible en la leyenda. He implementado esto con el siguiente código:

for(int i = 0; i < seriesList.size(); i++){ 

     if(seriesList.get(i).getKey() == null || seriesList.get(i).getKey().equals("")){ 
      graph.getXYPlot().getRenderer().setSeriesVisibleInLegend(i, Boolean.FALSE); 
     } 
    } 

El seriesList es una lista de seriesData de POJO que creé que contiene todos los datos del gráfico para crear el gráfico. Si el valor de la clave del objeto seriesData es null o = "", la serie no será visible en la leyenda.

Cuestiones relacionadas