【问题标题】:How to draw graphics or custom designed charts in BIRT reports?如何在 BIRT 报告中绘制图形或自定义设计的图表?
【发布时间】:2012-05-03 21:12:52
【问题描述】:

我正在尝试根据 XML 文件中的一些数据生成报告。 基本上,报告的第一页包含一些静态文本、一个徽标、一些动态文本和数据以及两个图表。接下来的页面应该包含一些文本和旁边的图表。我这里有一个很大的问题。 BIRT 提供的图表不适合我的报告,所以我想也许我可以根据我的 xml 文件中的数据生成一些图表(使用外部应用程序),将图表保存到文件中,并最终将这些文件动态加载到我的报告中.这对于第一页上的图表来说非常容易。但是,下一页需要有自己的图表,我找不到合适的方法将相应的图像包含到下一页中。 所以这是我的问题:

  1. 这是否可能以某种方式创建自定义设计图表?如果是的话怎么做?以及如何将图表添加到我的报告的 2,3,...页?
  2. 我的 xml 文件中有所需的所有数据,这是否可以在创建报告时使用一些 javascript 动态绘制图形?我的意思是使用数据我只是绘制了我自己的定制设计图表?(这是一个非常简单的图表,没有花哨的东西)
  3. 如果我寻求在外部创建图表并将它们动态添加到报表中的解决方案,如何将这些图像动态添加到报表的 2,3,.. 页中。(每个页面都有自己的图表! ) 使用多个母版页对我有帮助吗?

【问题讨论】:

  • BIRT 有多种可用的图表类型(尤其是最新版本的 BIRT)。你想显示什么类型的图表,你使用的是哪个版本的 BIRT?
  • 一个非常简单的线性仪表图版本,BIRT 没有
  • 即使您不能使用仪表图,您也可以使用条形图或折线图来产生等效的输出 - 两者都有一个翻转轴选项,允许您交换 x 轴和 y 轴.
  • 问题是我的x轴和y轴的值都是字符串值。并且仪表应该显示它们之间的相关性分数。 BIRT 强迫我使用不允许我使用字符串的聚合函数,并且应该始终提供数字
  • 我认为您的意思是您的输入是字符串值,并且您希望仪表输出是它们之间的相关分数 - 在这种情况下,分数通常会在 y 轴上(这将垂直绘制),因此翻转轴将水平呈现。

标签: java javascript birt


【解决方案1】:

您可以使用 D3.js 或 Flash 创建自定义设计的图表,并在 BIRT Designer 4.x 中根据需要添加分页符。有在 BIRT 报告中使用 Flash 的在线教程。

如果您在 BIRT 之外创建自己的图表,则可以使用图像小工具和图像的 URI 将它们作为图像导入。

如果你想使用 D3.js,

  • 添加head.js("http://d3js.org/d3.v3.js");到报表设计的 ClientScript > clientInitialize 脚本
  • 将脚本添加到您的数据集,以创建:
    • 一个数组,例如 myArray = new java.util.ArrayList();在之前打开
    • 使用数据集的 onFetch 事件填充该数组的脚本,例如 myArray.add("['"+row["date"]+"','"+row["sales"]+"' ]");
    • 将数组复制到全局变量的脚本,例如 reportContext.setPersistentGlobalVariable("myArray",myArray);
  • 在报表布局中添加一个文本项,您可以在其中:
    • 抓取全局变量,例如:var data = reportContext.getPersistentGlobalVariable("myArray");
    • 使用来自全局变量的数据,使用 d3.js JavaScript 构建您想要的 SVG 可视化。

如果您转向商业 BIRT Designer Professional,其中包含 Flash 对象,并且您还可以获得 HTML5 图表的 highcharts 库,您可以使用 highcharts.org API 使用 JavaScript 进行编辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多