jFreeChart: Как скрыть предметы из легенды? - PullRequest
7 голосов
/ 27 июля 2010

Мне нужно спрятать каждый второй / третий / четвертый предмет из легенды. Есть ли способ добиться этого в jFreeChart? спасибо!

Ответы [ 2 ]

9 голосов
/ 11 декабря 2012

Я попробовал вышеупомянутое предложение, но, похоже, оно не сработало для меня.Если вы просто хотите удалить серию из легенды, вы можете сделать это методом setSeriesVisibleInLegend().Мой сценарий состоял в том, что некоторые из моих серий не имеют ключа легенды.Если у них нет ключа легенды, то серия не должна быть видна в легенде.Я реализовал это с помощью следующего кода:

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

seriesList - это список seriesData созданных мной pojo, которые содержат все данные графика для его создания.Если значение ключа объекта seriesData равно null или = "", то в легенде серия не будет видна.

4 голосов
/ 27 июля 2010

хорошо, просто сделал это сам.Таким образом я удаляю каждый второй элемент из легенды.пожалуйста, оставляйте комментарии!

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