JfreeChart - Как скрыть элемент из легенды - Проблема цветов - PullRequest
2 голосов
/ 26 апреля 2011

Я хотел бы скрыть элементы из легенды в Jfreechart, и я попробовал этот код 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); ///////////////////

1 Ответ

1 голос
/ 26 апреля 2011

Исходя из этой нити , вы можете попробовать добавить элемент null для замены ненужного элемента легенды. Другой подход , по-видимому, исключает ненужные предметы, но я не уверен, что вы делаете то же самое. Чтобы уточнить, рассмотрите возможность размещения sscce , который демонстрирует проблему. Один из классов org.jfree.chart.demo может быть подходящей отправной точкой.

...