2017-02-01 76 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"> 
.... 

希望這可以幫助別人。