BIRT在线图中显示一系列条形图

时间:2014-05-06 22:41:17

标签: birt

我正在进行一些犯罪分析并创建图表。在x轴上,我正在绘制犯罪类型,在y轴上,我们有犯罪计数和传说(Y值分组)我们有城镇。请查看附图BIRT.jpg,其中包含线图中的所有内容

这是我在BIRT中创建的图表。现在我想将我的城镇行更改为栏。这样我就可以将我的城镇与城镇的其他地方进行比较。例如,请参阅Bar和line.jpg,其中My Town显示为Bar

BIRT line chart

BAR and line graph example that I want to do in BIRT

感谢您的帮助

此致

1 个答案:

答案 0 :(得分:0)

以下是您需要的示例。在下图中,我们使用了两个系列:

  • 代表所选国家/地区的系列“区域”
  • 代表国家竞争的系列“线”

它也适用于条形图而不是区域,不幸的是,当我们使用“Y系列分组”时,混合条形图和线条系列效果不佳。

enter image description here

此报告可在线获取here。如您所见,图例项目按预期显示,因为它们在“beforeDrawLegendItem”事件中被过滤。我不知道为什么这个功能本身不受支持,可能你应该报告Eclipse bugzilla中的一个错误。似乎允许识别应该隐藏哪些项目的唯一方法是使用调色板:这里我们将我们想要保留的所有颜色设置为“渐变”,并且我们将其他颜色设置为简单颜色。这真的很棘手,但确实有效。

先决条件是,所选项目(在您的情况下为“我的城镇”)应该是第一行:在“可选Y系列分组”中,输入排序表达式以便此特定项目将是第一个。

然后:

  • 在区域系列的调色板中,只有第一种颜色设置为渐变
  • 在系列的颜色调色板中,除第一个颜色外,所有颜色都设置为渐变

以下是脚本“ beforeDrawLegendItem

function beforeDrawLegendItem( lerh, bounds, icsc )
{
  try{
    var gradient=lerh.getFill().getClass().isAssignableFrom(GradientImpl);

    if (!gradient){ //not a gradient, we must hide this legend item
      bounds.setWidth(0);
      bounds.setHeight(0);
      lerh.getLabel().setVisible(false);
    }else{
      lerh.getLabel().setVisible(true);
    }
  }catch(e){

  }

}