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

Charts 如何将动态标记添加到BIRT图表,charts,birt,Charts,Birt,我创建了一个BIRT报告,其中包含一个从oracle数据库获取数据的图表。 我把图表做好了。现在我需要在图表中添加4-5个标记。 可以更改的标记值也存储在数据库中 我尝试了本文中提到的脚本,并做了一些修改 它生成了一个标记,但位于错误的位置。 似乎它没有根据x轴值正确地进行标记 此脚本中可能存在什么问题?我发现脚本存在问题 我试着给min_值一个硬编码的值,然后它工作了。调试后,我发现X轴的数据格式是小数,与从数据库获取的整数格式值不匹配 在“格式图表”窗口中,我将轴数据格式更改为0位小数的数

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

我尝试了本文中提到的脚本,并做了一些修改

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


此脚本中可能存在什么问题?

我发现脚本存在问题

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

在“格式图表”窗口中,我将轴数据格式更改为0位小数的数字。然后它开始工作:)

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

}