2016-03-22 7 views
1

Ich benutze JasperReports, um einen Bericht mit Diagrammen zu erzeugen. Einer von ihnen ist ein Balkendiagramm und ich möchte das Inkrement der Achsenwerte in 20 Einheiten einstellen. BarChart bar value labels are hidden by the marginBarChart setzt Werte Achseninkrement

Das ist mein Customizer Klasse:

public class BarChartCustomizer extends JRAbstractChartCustomizer { 

    @Override 
    public void customize(JFreeChart jFreeChart, JRChart jrChart) { 

     CategoryPlot plot = (CategoryPlot) jFreeChart.getPlot(); 
     plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); 
     NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); 
     NumberFormat numberFormat = NumberFormat.getNumberInstance(); 
     numberFormat.setMaximumFractionDigits(2); 
     numberFormat.setMinimumFractionDigits(2); 
     rangeAxis.setNumberFormatOverride(numberFormat); 
     BarRenderer barRenderer = (BarRenderer) plot.getRenderer(); 
     barRenderer.setItemMargin(0.0); 
     rangeAxis.setUpperMargin(0.20); 
     rangeAxis.setAutoRange(true); 
     CategoryAxis categoryAxis = plot.getDomainAxis(); 
     categoryAxis.setAxisLineStroke(new BasicStroke(2f)); 
     rangeAxis = (NumberAxis) plot.getRangeAxis(); 
     rangeAxis.setAxisLineStroke(new BasicStroke(2f)); 
    } 
} 

Ich habe versucht, mit rangeAxis.setMinorTickCount(20); ohne Erfolg

Sie können meinen früheren Ansatz unter diesem Link sehen. https://github.com/MichaelKnight/jaspertest.git

Antwort

0

Versuchen Sie, diese

rangeAxis.setTickUnit(new NumberTickUnit(20)); 

Auch die net.sf.jasperreports.chart.range sehen:

Wie üblich wird die endgültige Lösung in meinem GitHub-Repository befindet sich in dem Beispielcode enthalten sein. axis.tick.interval -Eigenschaft (dokumentiert unter http://jasperreports.sourceforge.net/config.reference.html#net.sf.jasperreports.chart.range.axis.tick.interval), die genau das tut.

+0

Das ist perfekt! Es war genau wie du gesagt hast. –

Verwandte Themen