如何将动态标记添加到 BIRTH 图表

How to add a dynamic marker to a BIRT chart

我创建了一个 BIRT 报告,其中包含一个从 oracle 数据库获取数据的图表。 我把图表做好了。现在我需要在图表中添加 4-5 个标记。 可以更改的标记值也存储在数据库中。

我尝试了本文中提到的脚本并进行了一些修改http://blogs.actuate.com/birt-chart-scripting-dynamic-markers/

function beforeGeneration(chart, icsc)
{ 
importPackage(Packages.org.eclipse.birt.chart.model.component.impl); 
importPackage(Packages.org.eclipse.birt.chart.model.data.impl); 
importPackage(Packages.org.eclipse.birt.chart.model.attribute); 
importPackage(Packages.org.eclipse.birt.chart.model.attribute.impl);

var chart = icsc.getChartInstance();
var yAxis = chart.getBaseAxes()[0];

var min_value = icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("min_val");
var ok_value = icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("ok_val");
var great_value = icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("great_val");

min_ml = MarkerLineImpl.create(yAxis, NumberDataElementImpl.create(min_value));
min_ml.getLabel().getCaption().setValue("Minimum");
min_ml.getLineAttributes().getColor().set(255,0,0);

} 

它生成了一个标记,但在错误的位置。 似乎它没有根据 x 轴值正确标记。

这个脚本可能有什么问题?

我发现了脚本的问题。

我试着给 min_value 一个硬编码值然后它工作了。调试后发现X轴的数据格式是带小数的,与从数据库中取出的整数格式值不匹配。

根据格式图表 window 我将轴数据格式更改为带有 0 的数字 decimals.Then 它起作用了:)