2010-07-27 14 views

Antwort

4

okay, habe es einfach selbst gemacht. Auf diese Weise entferne ich jeden zweiten Gegenstand aus der Legende. bitte Kommentare hinterlassen!

+2

Das ist gut für eine dynamische Lösung. Es ist auch möglich, renderer.getLegendItems() und plot.setFixedLegendItems() zu verwenden. Dies führt zu einer einfacheren Lösung, aber nur, wenn sich Ihre Legende nicht ändert, nachdem Sie die feste Legende festgelegt haben. Ich habe keine Zeit, um die Details der Lösung zu erstellen, aber suchen Sie nach getLegendItems und setFixedLegendItems in AbstractXYItemRenderer und XYPlot. – Jason

9

Ich habe den obigen Vorschlag versucht, aber es schien nicht für mich zu arbeiten. Wenn Sie nur Serien aus der Legende entfernen möchten, können Sie dies mit der Methode setSeriesVisibleInLegend() tun. Mein Szenario war, dass einige meiner Serien keinen Legendenschlüssel haben. Wenn sie keinen Legendenschlüssel haben, sollte die Serie in der Legende nicht sichtbar sein. Ich implementiert diese mit dem folgenden Code:

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

Die seriesList eine Liste von seriesData pojo ist, dass ich geschaffen, dass alle der Diagrammdaten hält die Grafik zu erstellen. Wenn der Schlüsselwert des Objekts seriesDatanull oder = "" ist, wird die Serie in der Legende nicht angezeigt.