2017-02-01 35 views
0

我一直在使用JasperReports来生成PDF报告,但有一个功能我无法工作。我正在尝试制作包含月度数据但仅显示年份标签的TimeSeriesCharts。不幸的是,这是最终的结果:JasperReports + TimeSeriesChart:月份数据,年份标签

enter image description here

我想,每年只有一次出现了。我该怎么做?

JRXML下面的代码:

<timeSeriesChart> 
       <chart evaluationTime="Report" isShowLegend="false"> 
        <reportElement x="0" y="32" width="462" height="180" /> 
        <chartTitle/> 
        <chartSubtitle/> 
        <chartLegend/> 
       </chart> 
       <timeSeriesDataset timePeriod="Month"> 
        <dataset> 
         <datasetRun subDataset="chartDataSet" uuid="abec2dce-b670-4e84-b71f-469d954dbcb5"> 
          <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{data})]]></dataSourceExpression> 
         </datasetRun> 
        </dataset> 
        <timeSeries> 
         <seriesExpression><![CDATA[$F{serie}]]></seriesExpression> 
         <timePeriodExpression><![CDATA[$F{category}]]></timePeriodExpression> 
         <valueExpression><![CDATA[$F{value}]]></valueExpression> 
        </timeSeries> 
       </timeSeriesDataset> 
       <timeSeriesPlot isShowShapes="false"> 
        <plot> 
         <seriesColor seriesOrder="1" color="#0000FF" /> 
        </plot> 
        <timeAxisFormat> 
         <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000" verticalTickLabels="true" tickLabelMask="yyyy" /> 
        </timeAxisFormat> 
        <valueAxisFormat> 
         <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/> 
        </valueAxisFormat> 
       </timeSeriesPlot> 
      </timeSeriesChart> 

在此先感谢

回答

1

原来这是很容易的。我不得不创建用于自定义图表的Java类:

public class MyChartCustomizer implements JRChartCustomizer { 
@Override 
public void customize(JFreeChart chart, JRChart jasperChart){ 
    DateAxis axis = (DateAxis) chart.getXYPlot().getDomainAxis(); 
    axis.setTickUnit(new DateTickUnit(DateTickUnitType.YEAR, 1)); 
} 
} 

然后只是引用它在JRXML:

<timeSeriesChart> 
       <chart evaluationTime="Report" isShowLegend="false" customizerClass="my.org.MyChartCustomizer"> 
.... 

希望这可以帮助别人。