jFreeChart:如何隐藏图例中的项目?

时间:2010-07-27 09:52:37

标签: jfreechart

我需要隐藏图例中的每个第二/第三/第四项。有没有办法在jFreeChart中实现这一目标? 谢谢!

2 个答案:

答案 0 :(得分:9)

我已尝试过上述建议,但似乎对我没有用。如果您只想从图例中删除系列,可以使用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= "",则系列将不会在图例中显示。

答案 1 :(得分:4)

好吧,我自己做了。这样我就可以从图例中删除每一个项目。 请留下评论!

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