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); ///////////////////
動作しないコード =>
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); ///////////////////