Como personalizar o gráfico de preenchimento da área via API do gráfico BIRT?

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

  •  05-07-2019
  •  | 
  •  

Pergunta

Estou tentando criar um preenchimento de gradiente para uma série em um gráfico de área que estou construindo através da API do gráfico de Birt, mas o livro "integrando e estendendo Birt" e as interwebs parecem curiosamente silenciosas sobre como fazê -lo funcionar. Parece que não importa o que eu faça, sempre recebo uma cor plana da paleta padrão. Eu tentei usar o SérieDefinition.getSeriesPalette (). Update (gradiente) e até mesmo criando minha própria paleta com o gradiente preenchendo e configurando isso na série da série, mas sem sucesso. Também notei que, se eu não executar um turno () na paleta, mesmo que seja o turno (0), o que os javadocs afirmam que não fará nada, eu recebo NullPointerException quando tento gerar o 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

Aqui está o código mais recente (não trabalhador) que eu tentei:

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

Então, qual é o encantamento mágico para fazer com que a API de gráficos de Birt use meu gradiente à medida que a área preenche?

Foi útil?

Solução

Este código funciona para mim, eu recebo uma série feia de cor ...

sdY.getSeriesPalette().update(GradientImpl.create(ColorDefinitionImpl.create(255,255,255), ColorDefinitionImpl.create(200,0,0,150), 90, false));

Espero que isso ajude você; p

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top