如何在 Jasper Report 中正确对齐栏和相应的标签?
How to align bar and corresponding label properly in Jasper Report?
我正在处理一份 jasper 报告,我正在其中创建一个条形图。对于单个柱,已创建单独的系列表达式。但在我的例子中,x 轴和条形图上的标签没有正确对齐。
这里我贴出了生成的图表:
这里提到了我的部分 jrxml 文件:
<categoryDataset>
<categorySeries>
<seriesExpression><![CDATA["CalWORKS"]]></seriesExpression>
<categoryExpression><![CDATA["CalWORKS"]]></categoryExpression>
<valueExpression><![CDATA[$F{calworks_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["Immediate Need CW"]]></seriesExpression>
<categoryExpression><![CDATA["Immediate Need CW"]]></categoryExpression>
<valueExpression><![CDATA[$F{calworks_immediate_need_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["CalFresh"]]></seriesExpression>
<categoryExpression><![CDATA["CalFresh"]]></categoryExpression>
<valueExpression><![CDATA[$F{calfresh_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["Expedited CF"]]></seriesExpression>
<categoryExpression><![CDATA["Expedited CF"]]></categoryExpression>
<valueExpression><![CDATA[$F{calfresh_expedited_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["Medi-Cal"]]></seriesExpression>
<categoryExpression><![CDATA["Medi-Cal"]]></categoryExpression>
<valueExpression><![CDATA[$F{medical_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["Immediate Medi-Cal"]]></seriesExpression>
<categoryExpression><![CDATA["Immediate Medi-Cal"]]></categoryExpression>
<valueExpression><![CDATA[$F{medical_immediate_need_count}]]></valueExpression>
</categorySeries>
</categoryDataset>
我也在使用这里给出的定制器:
public void customize(JFreeChart chart, JRChart jasperChart) {
CategoryPlot plot = (CategoryPlot)chart.getPlot();
BarRenderer barRenderer = (BarRenderer)plot.getRenderer();
Font font = new Font("Calibri", Font.BOLD, 12);
plot.getRenderer().setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));
barRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
barRenderer.setBaseItemLabelFont(font);
barRenderer.setBaseItemLabelsVisible(true);
plot.getDomainAxis().setMaximumCategoryLabelLines(2);
plot.getRangeAxis().setUpperMargin(plot.getRangeAxis().getUpperMargin() + 0.1);
barRenderer.setItemLabelAnchorOffset(5.0d);
//barRenderer.setMaximumBarWidth(0.9f);
barRenderer.setItemMargin(0.0f);
}
我尝试调整 barWidth 值,但它不起作用。我还把标签分成两行,这也不起作用。有什么办法可以实现吗?
我也无法增加条形的宽度。使用定制器我们如何实现这一目标?
这是此 post 的准副本:Align bars with bar labels in Jfreechart
对于您的情况,当然,解决方案是重新格式化您的 xml 文件以仅保留一个系列(在六个类别中):
<categoryDataset>
<categorySeries>
<seriesExpression><![CDATA["series1"]]></seriesExpression>
<categoryExpression><![CDATA["CalWORKS"]]></categoryExpression>
<valueExpression><![CDATA[$F{calworks_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["series1"]]></seriesExpression>
<categoryExpression><![CDATA["Immediate Need CW"]]></categoryExpression>
<valueExpression><![CDATA[$F{calworks_immediate_need_count}]]></valueExpression>
</categorySeries>
...
我正在处理一份 jasper 报告,我正在其中创建一个条形图。对于单个柱,已创建单独的系列表达式。但在我的例子中,x 轴和条形图上的标签没有正确对齐。
这里我贴出了生成的图表:
这里提到了我的部分 jrxml 文件:
<categoryDataset>
<categorySeries>
<seriesExpression><![CDATA["CalWORKS"]]></seriesExpression>
<categoryExpression><![CDATA["CalWORKS"]]></categoryExpression>
<valueExpression><![CDATA[$F{calworks_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["Immediate Need CW"]]></seriesExpression>
<categoryExpression><![CDATA["Immediate Need CW"]]></categoryExpression>
<valueExpression><![CDATA[$F{calworks_immediate_need_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["CalFresh"]]></seriesExpression>
<categoryExpression><![CDATA["CalFresh"]]></categoryExpression>
<valueExpression><![CDATA[$F{calfresh_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["Expedited CF"]]></seriesExpression>
<categoryExpression><![CDATA["Expedited CF"]]></categoryExpression>
<valueExpression><![CDATA[$F{calfresh_expedited_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["Medi-Cal"]]></seriesExpression>
<categoryExpression><![CDATA["Medi-Cal"]]></categoryExpression>
<valueExpression><![CDATA[$F{medical_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["Immediate Medi-Cal"]]></seriesExpression>
<categoryExpression><![CDATA["Immediate Medi-Cal"]]></categoryExpression>
<valueExpression><![CDATA[$F{medical_immediate_need_count}]]></valueExpression>
</categorySeries>
</categoryDataset>
我也在使用这里给出的定制器:
public void customize(JFreeChart chart, JRChart jasperChart) {
CategoryPlot plot = (CategoryPlot)chart.getPlot();
BarRenderer barRenderer = (BarRenderer)plot.getRenderer();
Font font = new Font("Calibri", Font.BOLD, 12);
plot.getRenderer().setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));
barRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
barRenderer.setBaseItemLabelFont(font);
barRenderer.setBaseItemLabelsVisible(true);
plot.getDomainAxis().setMaximumCategoryLabelLines(2);
plot.getRangeAxis().setUpperMargin(plot.getRangeAxis().getUpperMargin() + 0.1);
barRenderer.setItemLabelAnchorOffset(5.0d);
//barRenderer.setMaximumBarWidth(0.9f);
barRenderer.setItemMargin(0.0f);
}
我尝试调整 barWidth 值,但它不起作用。我还把标签分成两行,这也不起作用。有什么办法可以实现吗?
我也无法增加条形的宽度。使用定制器我们如何实现这一目标?
这是此 post 的准副本:Align bars with bar labels in Jfreechart
对于您的情况,当然,解决方案是重新格式化您的 xml 文件以仅保留一个系列(在六个类别中):
<categoryDataset>
<categorySeries>
<seriesExpression><![CDATA["series1"]]></seriesExpression>
<categoryExpression><![CDATA["CalWORKS"]]></categoryExpression>
<valueExpression><![CDATA[$F{calworks_count}]]></valueExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["series1"]]></seriesExpression>
<categoryExpression><![CDATA["Immediate Need CW"]]></categoryExpression>
<valueExpression><![CDATA[$F{calworks_immediate_need_count}]]></valueExpression>
</categorySeries>
...