2

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

1 に答える 1

1

このスレッドに基づいて、要素を追加nullして、不要な凡例項目を置き換えることができます。もう 1 つのアプローチは、不要なアイテムを排除しているように見えますが、同じことを行っているかどうかはわかりません。明確にするために、問題を示すsscceを投稿することを検討してください。クラスの 1 つがorg.jfree.chart.demo適切な開始点になる場合があります。

于 2011-04-26T15:45:14.863 に答える