¿Cómo personalizar el relleno de la serie en el gráfico de área a través de la gráfica BIRT?
Pregunta
Estoy tratando de crear un relleno degradado para una serie en un gráfico de área que estoy creando a través de la API del gráfico BIRT, pero el libro " Integrating and Extending BIRT " y los Interwebs parecen curiosamente silenciosos acerca de cómo hacer que funcione. Parece que no importa lo que haga, siempre obtengo un color plano de la paleta predeterminada. He intentado usar SeriesDefinition.getSeriesPalette (). Update (Gradient) e incluso crear mi propia paleta con el gradiente rellenándola y configurándola en SeriesDefinition, pero fue en vano. También he notado que si no realizo un cambio () en la Paleta, incluso si es el cambio (0), que el reclamo de Javadocs no hará nada, recibo NullPointerException cuando intento generar el gráfico:
Caused by: java.lang.NullPointerException
at org.eclipse.birt.chart.render.Area.renderDataPoints(Area.java:521)
at org.eclipse.birt.chart.render.Line.renderSeries(Line.java:570)
at org.eclipse.birt.chart.render.AxesRenderer.renderPlot(AxesRenderer.java:2181)
at org.eclipse.birt.chart.render.AxesRenderer.render(AxesRenderer.java:314)
at org.eclipse.birt.chart.factory.Generator.render(Generator.java:1368)
... 108 more
Aquí está el último código (que no funciona) que he probado:
Gradient gradient = FillUtil.createDefaultGradient(BirtReportBuilder.COLOR_WHITE);
gradient.setStartColor(ColorDefinitionImpl.WHITE());
gradient.setEndColor(ColorDefinitionImpl.create(76, 116, 131));
gradient.setDirection(90);
SeriesDefinition sdY = SeriesDefinitionImpl.create();
sdY.getQuery().setDefinition("\"Quantity\"");
Palette pal = PaletteImpl.create(gradient);
pal.shift(0);
sdY.setSeriesPalette(pal);
sdY.getSeries().add(as1);
yAxisPrimary.getSeriesDefinitions().add(sdY);
Entonces, ¿cuál es el conjuro mágico para que la API de gráficos BIRT use mi degradado a medida que se llena el área?
Solución
Este código funciona para mí, obtengo una serie de colores feos ...
sdY.getSeriesPalette().update(GradientImpl.create(ColorDefinitionImpl.create(255,255,255), ColorDefinitionImpl.create(200,0,0,150), 90, false));
Espero que te ayude; p