图表展示是Jasperreports通过Jfreechart来实现的,并且提供了对外的自定义图形接口,利用这个接口可以重新定义内建的图形。这个接口是JRAbstractChartCustomizer,需要实现的方法为customize,通过参数我们可以获取到JFreechart对象然后做我们想做的事情。
所以要实现上述的需求,需要自定义这样的类。
public class SpeclTimeseriesCharts extends JRAbstractChartCustomizer {
public void customize(JFreeChart chart, JRChart jasperChart) {
CategoryPlot plot = (CategoryPlot) chart.getPlot();
CategoryItemRenderer categoryItemRenderer = (CategoryItemRenderer)plot.getRenderer();
//设置曲线是否显示数据点
categoryItemRenderer.setBaseSeriesVisible(true);
//设置曲线显示各数据点的值
CategoryItemRenderer categoryItem = plot.getRenderer();
categoryItem.setBaseItemLabelsVisible(true);
//解决x轴右边显示不全,y轴上边显示不全的问题
ValueAxis rangeAxis = plot.getRangeAxis();
//设置最高的一个值与图片顶端的距离
rangeAxis.setUpperMargin(0.15);
//设置最低的一个值与图片底端的距离
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis