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

时间:2015-05-25 12:34:06

标签: charts birt

我创建了一个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轴值正确标记。

enter image description here

这个剧本可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

我发现了脚本的问题。

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

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