【问题标题】:iReport line chart category labeliReport 折线图类别标签
【发布时间】:2017-11-15 20:00:33
【问题描述】:

我正在使用折线图组件根据建筑物的消耗量生成图表。 想象一个可能的图表,该图表基于一个月内建筑物的消耗量和一天的分辨率。 30天对应30点消费。 问题在于类别轴标签。有了相当多的点,标签变得不可读。我怎样才能标记一些点?

致以最诚挚的问候

【问题讨论】:

    标签: charts ireport


    【解决方案1】:

    不要使用“折线”图表。而是使用“时间序列”图表。

    它会自动处理有关绘制所有点的问题,但只标记可读数量的点。它还可以处理由非均匀间隔的数据点产生的问题。

    编辑:如果您的传入数据是字符串而不是日期,那么您有额外的工作。时间序列图表需要时间(嗯,日期)。您需要将 DateString 转换为真实的 Date。但工作量小,收益大。使用这样的变量:new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse($F{MyDateString})

    【讨论】:

    • 感谢您的回复。问题是“时间序列”图表需要 java.util.Date 作为时间段表达式,我正在使用 xml 数据源,其中每个数据都被识别为字符串。当它试图将字符串解析为日期时,它会抛出相应的异常。
    • 是的,这增加了一件。但这不应该太难克服。你只需要转换你的字符串。我会用一个例子来编辑我的答案。
    【解决方案2】:

    使用此代码在 JASPER 报告中的折线图上生成标签

    else if(jasperChart.getChartType() == JRChart.CHART_TYPE_LINE) {
        LineAndShapeRenderer line = (LineAndShapeRenderer) chart.getCategoryPlot().getRenderer();
        line.setBaseItemLabelsVisible(Boolean.TRUE);
        line.setBaseItemLabelGenerator((CategoryItemLabelGenerator) new StandardCategoryItemLabelGenerator());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多