Charts iReport折线图类别标签

Charts iReport折线图类别标签,charts,ireport,Charts,Ireport,我正在使用折线图组件根据建筑物的消耗量生成图表。 想象一个可能的图表,基于一个月内建筑物的消耗量和一天的分辨率。它将有30个消费点,相当于30天。 问题在于类别轴标签。如果有相当多的点,标签将变得不可读。我怎样才能标记一些点 向你致意不要用“折线图”。而是使用“时间序列”图表 它会自动处理绘制所有点的相关问题,但只标记其中可读的数量。它还处理由间距不均匀的数据点造成的问题 编辑:如果传入的数据是字符串而不是日期,则需要进行额外的工作。时间序列图预计时间(好吧,日期)。您需要将日期字符串转换为真实

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

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

它会自动处理绘制所有点的相关问题,但只标记其中可读的数量。它还处理由间距不均匀的数据点造成的问题


编辑:如果传入的数据是字符串而不是日期,则需要进行额外的工作。时间序列图预计时间(好吧,日期)。您需要将日期字符串转换为真实的日期。但是工作很小,收益也很大。使用如下变量:
new SimpleDateFormat(“yyyy-MM-dd HH:MM:ss”).parse($F{MyDateString})

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

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

谢谢你的回复。问题是“时间序列”图表需要java.util.Date作为时间段表达式,我使用的是xml数据源,其中每个数据都被识别为字符串。当它试图将字符串解析为某个日期时,会抛出相应的异常。是的,这会增加一个额外的片段。但它不应该太难克服。你只需要把你的绳子拉起来。我将用一个例子来编辑我的答案。