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

Java JfreeChart-如何从图例中隐藏项目-颜色问题,java,jfreechart,legend,Java,Jfreechart,Legend,我想在Jfreechart中隐藏图例中的项目,我已经尝试过这段代码 它起作用了,但奇怪的事情发生了:图例项的颜色不再与正确的数据匹配。换句话说,在图形中,例如,一段数据显示为黄色,但与此项对应的图例显示为另一种颜色。事实上,传说中的颜色是混合的 此外,当我尝试显示新旧图例时,颜色没有问题,但当我使旧图例不可见时,出现了混合颜色的问题。显然,我不想展示古老的传说 工作代码=> LegendItemCollection legendItemsOld = localCombinedDomainXYP

我想在Jfreechart中隐藏图例中的项目,我已经尝试过这段代码

它起作用了,但奇怪的事情发生了:图例项的颜色不再与正确的数据匹配。换句话说,在图形中,例如,一段数据显示为黄色,但与此项对应的图例显示为另一种颜色。事实上,传说中的颜色是混合的

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

工作代码=>

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); ///////////////////
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); ///////////////////
LegendItemCollection LegendItemSeld=localCombinedDomainXYPlot.getLegendItems();
最终LegendItemCollection legendItemsNew=新LegendItemCollection();
对于(int i=0;i

LegendItemCollection LegendItemSeld=localCombinedDomainXYPlot.getLegendItems();
最终LegendItemCollection legendItemsNew=新LegendItemCollection();

对于基于It i=0;i基于此,您可以尝试添加<代码> null <代码>元素来替换不想要的图例项。另一个似乎是不想要的项目,但我不确定是否在做同样的事情。要澄清,请考虑发布一个说明问题的类。其中一个类可能是一个合适的起点。Stackoverflow!;)没问题。稍后再看你的,我看不出有什么办法可以让这种方法起作用。看起来你好像在试图在数据模型中指定颜色。相反,在相应的渲染器中使用
setSeriesPoint()
。我试着使用
setSeriesPoint()
。但是图形中的颜色会考虑到第一个图例的颜色。因此,如果您使第一个图例不可见,即使您添加了新图例,图形中的颜色也会随机选择。如何管理?这不起作用。两个图例的颜色相同,但不尊重图形的颜色(图中的颜色仍然是随机选择的)适合我;这里有一个
setFixedLegendItems()