Reputation: 4815
I am working on a jasper report in which I am creating a bar chart. For individual bar separate series expression has been created. But in my case the labels on x-axis and bars are not aligned properly.
Here I posted generated graph:
Part of my jrxml file is mentioned here:
<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>
Also I am using customizer which is given here:
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);
}
I tried to adjust barWidth value but its not working. Also I made labels to split into two lines which is also not working. Is there any way to achieve this?
Also I am not able to increase the width of bars. Using customizer how can we achieve this?
Upvotes: 1
Views: 2254
Reputation: 4277
This is a quasi-duplicate of this post: Align bars with bar labels in Jfreechart
In your case, of course, the solution is to reformat your xml file to leave only one series (among six categories):
<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>
...
Upvotes: 1