我想隐藏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); ///////////////////
答案 0 :(得分:1)
根据此thread,您可以尝试添加null
元素来替换不需要的图例项。另一个approach似乎会消除不需要的项目,但我不确定你是否也这样做了。为了澄清,请考虑发布一个显示问题的sscce。其中一个org.jfree.chart.demo
类可能是一个合适的起点。