
Моя проблема заключается в том, что A равно 100 и поэтому 100 - A = 0.
Результат такой: это:

Верхняя часть уже выделена синим цветом !!
Я понял, что это было известное беспокойство Джаспера.
Поэтому я решил настроить свою диаграмму и «удалить» второй набор данных (100 - A), если он равен 0.
Я пишу этот класс:
Код: Выделить всё
public class InputPowerChartCustomizer implements JRChartCustomizer {
private static final Color USED_RED = new Color(0xFF5555);
private static final Color UNUSED_BLUE = new Color(0x5555FF);
@Override
public void customize(JFreeChart chart, JRChart jasperChart) {
CategoryPlot plot = chart.getCategoryPlot();
CategoryDataset dataset = plot.getDataset();
LegendItemCollection legendItems = plot.getLegendItems();
plot.setFixedLegendItems(legendItems);
if (!(plot.getRenderer() instanceof StackedBarRenderer3D)) {
return;
}
StackedBarRenderer3D renderer =
(StackedBarRenderer3D) plot.getRenderer();
// Série 0 = Used
// Série 1 = Unused
renderer.setSeriesPaint(0, USED_RED);
renderer.setSeriesPaint(1, UNUSED_BLUE);
renderer.setItemMargin(0.0);
renderer.setDrawBarOutline(false);
int columnCount = dataset.getColumnCount();
for (int col = 0; col < columnCount; col++) {
Number used = dataset.getValue(0, col);
// Si Used == 100%, on ne dessine pas Unused
if (used != null && used.doubleValue() >= 99.999) {
renderer.setSeriesVisible(1, Boolean.FALSE);
}
}
}
}
Есть идеи, как это исправить?
Подробнее здесь: https://stackoverflow.com/questions/798 ... n-3d-chart
Мобильная версия