java - 如何通过 BIRT 图表 API 自定义系列填充面积图?

标签 java charts birt

我正在尝试为我通过 BIRT 图表 API 构建的面积图中的一系列创建渐变填充,但是“集成和扩展 BIRT”一书和 Interwebs 似乎对如何使其工作保持奇怪的沉默。似乎无论我做什么,我总是从默认调色板中获得平面颜色。我尝试过使用 SeriesDefinition.getSeriesPalette().update(Gradient) ,甚至创建自己的带有渐变填充的调色板并将其设置在 SeriesDefinition 上,但无济于事。我还注意到,如果我不在调色板上执行 shift(),即使它是 shift(0)(Javadocs 声称不会执行任何操作),当我尝试生成图表时,我会收到 NullPointerException:

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

这是我尝试过的最新(无效)代码:

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

那么让 BIRT 图表 API 使用我的渐变作为区域填充的魔法是什么?

最佳答案

这段代码对我有用,我得到了一个丑陋的彩色系列......

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

希望对你有帮助;p

关于java - 如何通过 BIRT 图表 API 自定义系列填充面积图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/826071/

相关文章:

java - Maven 构建具有依赖项的程序集

用于大型数据集的 javascript/html5 图表库

birt - 设置与 birt 报告引擎的 jdbc 连接的定制方法

java - birt 报告中的嵌套循环

java - Eclipse:从命令行(或自动)设置部署程序集

java - 基于 Jersey 的 RESTful 服务报告进度

css - 如何将工具提示带到图表顶部

javascript - 与页面中的多个图表交互

java - Birt 类 EngineException 的 NoClassDefFoundError

java - 如何模拟注入(inject)的依赖