¿Cómo personalizar el relleno de la serie en el gráfico de área a través de la gráfica BIRT?

StackOverflow https://stackoverflow.com/questions/826071

  •  05-07-2019
  •  | 
  •  

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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top