JfreeChart - 如何隐藏图例中的项目 - 颜色问题

时间:2011-04-26 08:56:42

标签: java jfreechart legend

我想隐藏Jfreechart中的图例中的项目,我尝试过这段代码 jFreeChart: How to hide items from legend?

它有效,但发生了一些奇怪的事情:图例项目的颜色不再与正确的数据相匹配。换句话说,在图表中,例如,一条数据以黄色显示,但与该项目对应的图例以另一种颜色显示。事实上,传奇中的颜色是混合的。

此外,当我尝试显示新旧图例时,没有颜色问题但是当我使旧图例不可见时,会出现混合颜色的问题。显然,我不想展示旧的传说。

工作代码=>

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

for(int i = 0; i<4; i++){
    legendItemsNew.add(legendItemsOld.get(i));
}
LegendItemSource source = new LegendItemSource() {
    LegendItemCollection lic = new LegendItemCollection();
    {lic.addAll(legendItemsNew);}
    public LegendItemCollection getLegendItems() {  
        return lic;
    }
};
localJFreeChart.addLegend(new LegendTitle(source));

ChartUtilities.applyCurrentTheme(localJFreeChart);
localJFreeChart.getLegend().setVisible(true); ///////////////////

不工作代码=&gt;

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

for(int i = 0; i<4; i++){
    legendItemsNew.add(legendItemsOld.get(i));
}
LegendItemSource source = new LegendItemSource() {
    LegendItemCollection lic = new LegendItemCollection();
    {lic.addAll(legendItemsNew);}
    public LegendItemCollection getLegendItems() {  
        return lic;
    }
};
localJFreeChart.addLegend(new LegendTitle(source));

ChartUtilities.applyCurrentTheme(localJFreeChart);
localJFreeChart.getLegend().setVisible(false); ///////////////////

1 个答案:

答案 0 :(得分:1)

根据此thread,您可以尝试添加null元素来替换不需要的图例项。另一个approach似乎会消除不需要的项目,但我不确定你是否也这样做了。为了澄清,请考虑发布一个显示问题的sscce。其中一个org.jfree.chart.demo类可能是一个合适的起点。