首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JasperReports + TimeSeriesChart:月份数据,年份标签

JasperReports + TimeSeriesChart:月份数据,年份标签
EN

Stack Overflow用户
提问于 2017-02-02 02:27:47
回答 1查看 70关注 0票数 0

我一直在使用JasperReports生成PDF报告,但是有一个功能我不能使用。我正在尝试生成一个包含每月数据但只显示年份标签的TimeSeriesCharts。不幸的是,这就是最终结果:

我希望每年只出现一次。我该怎么做呢?

jrxml代码如下:

代码语言:javascript
复制
<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>

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2017-02-02 20:44:12

事实证明,这很容易。我必须创建一个Java类来定制图表:

代码语言:javascript
复制
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中引用它:

代码语言:javascript
复制
<timeSeriesChart>
                <chart evaluationTime="Report" isShowLegend="false" customizerClass="my.org.MyChartCustomizer">
....

希望这对某些人有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41987011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档