如何在Primefaces条形图

时间:2015-07-11 11:08:32

标签: jsf primefaces bar-chart jqplot labels

我很难理解如何为PF条形图中的轴自定义数据标签。我想用除系列之外的变量填充实际数据点/间隔。基本上我想要更多的控制和灵活性如何标记PF图表中的轴。例如,我有以下条形图:

public void barChartMod() {

    ChartSeries rigSeries = new ChartSeries();
    List<Rigtest> bList = rigFacade.findAll();        
    Map<Object, Number> barMap = new HashMap<>();
    Map<Object, String> tickMap= new HashMap<>();
    for (Rigtest t : bList) {
        barMap.put(t.getRigtestid(), t.getRignum());
    }

    barModel = new BarChartModel();

    rigSeries.setData(barMap);
    barModel.addSeries(rigSeries);
    barModel.setSeriesColors("FF0000");
    barModel.setShowPointLabels(true);
    Axis xAxis = barModel.getAxis(AxisType.X);

}

x轴基本上是图表系列,它从一个由主键和一个名为Rigtest的表中的钻机数量组成的地图中获取值。该表具有以下模式:

RigtestId(PK Int),国家(国家表的外键实体),Rignum(int - 钻井数量)

我希望用国家名称标记x轴。如果我只是在地图中包含国家/地区名称,则会产生重复值,并且还会显示唯一国家/地区名称的值。我想显示系列中每条记录的值。

如果我使用主键迭代系列中的每个值(如上所述),则可以实现这一点。这是获取值的可接受方式,但我需要一种方法来标记x轴上的每个点,并使用国家名称而不仅仅是数字。

目前我的条形图如下所示:

enter image description here

此图表用于比较用户查询指定的日期范围内的不同国家/地区的数量。 x轴是从唯一主键(Rigestid)获取其值的标签。我没有使用PK作为x轴标签,而是想使用国家/地区名称并生成如下图形:

enter image description here

在上图中,CountryName属于与每个PK有关的Country实体,应该通过循环遍历Country实体的实例来获取,例如:

Map<Object, String> tickMap= new HashMap<>();

for(Rigtest b: bList) {
        tickMap.put(b.getRigtestid(), b.getCountry().getCountryname());
    }

如果我只是尝试输入县名而不是主键,我会得到4而不是6个小节(因为重复的国家名称将被忽略)。因此,如果我坚持使用主键作为获取x轴值的方法,我需要一种用国家名称填充标签的方法。

PF文档和大多数在线资料仅说明了如何在轴上添加标签,而不是如何在PF图表中自定义轴的各个点。我也看了jqplot。这似乎涉及手动硬编码轴标签,但我找不到任何关于如何从数据库动态填充间隔点的指南。

基本上我只是尝试用除了用于获取其值的映射之外的其他东西来标记x轴,但是包含在相同的底层数据模式中。我确信有一种简单的方法可以达到这个目的,而且我错过了一些东西。

提前致谢!

0 个答案:

没有答案