2009-12-29 5 views
17

Gibt es eine Möglichkeit, die Breite der Balken in einem Balkendiagramm anzupassen?Breite der Leiste in Jfreechart

Ich erstelle mein Diagramm mit dem folgenden Code.

final JFreeChart chart = ChartFactory.createBarChart("Report", // chart title 
       "Date", // domain axis label 
       "Number", // range axis label 
       dataset, // data 
       PlotOrientation.VERTICAL, // orientation 
       true, // include legend 
       true, // tooltips? 
       false // URLs? 
       ); 

Antwort

5

Laut Dave Gilbert (JFreeChart Projektleiter)

Die Balkenbreiten automatisch berechnet und wird auf dem Diagramm oder Grundstück Breite und die Anzahl der Artikel im Daten-Set ab.

Siehe die Diskussion here.

8

Sie können die Breite der Balken nicht direkt angeben, aber es gibt einige Attribute, die sich auf die Breite auswirken können. Sie sollten bei der lowerMargin, upperMargin und categoryMargin Attribute definiert durch die CategoryAxis oder itemMargin Attribut im BarRenderer einen Blick darauf werfen.

Zum Beispiel:

BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer(); 
    renderer.setItemMargin(.1); 

Das Doppel angegeben in setItemMargin(double percent) ist der prozentuale Anteil der Gesamtlänge der Kategorie Achse, die für den Raum zwischen den Stäben in der gleichen Kategorie verwendet wird (Standard: 0,2 oder 20%). Je kleiner dieser Wert ist, desto größer sind die Balken.

16

Sie können auch die maximale Breite eines Balkens festlegen. Dies ist nützlich, wenn Sie ein breites Diagramm haben, aber gelegentlich nur ein oder zwei Datenpunkte vorhanden sind und Sie nicht möchten, dass ein einzelner großer fetter Balken den gesamten Bereich einnimmt.

CategoryPlot categoryPlot = chart.getCategoryPlot(); 
BarRenderer br = (BarRenderer) categoryPlot.getRenderer(); 
br.setMaximumBarWidth(.35); // set maximum width to 35% of chart 
+0

Danke! hat ein Vergnügen gemacht. – Buffalo

5

Nachdem keine Ergebnisse mit positiven Margen immer und Null, habe ich versucht, für itemMargin negative Zahlen, um zu sehen, was passieren würde. Die Balken wurden dicker. Ich weiß nicht, ob dies empfohlen wird, da Sie Überschneidungen bekommen werden, wenn nicht genug Platz zur Verfügung steht.

BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer(); 
renderer.setItemMargin(-2); 
+0

Brilliant. Ich habe das gleiche Problem wieder und ich konnte nichts mit setMaximumBarWidth erreichen, das hat den Trick gemacht. Vielen Dank. – Buffalo

+0

Gleiches ist hier der Fall !! Vielen Dank .. Es hat den Trick gemacht .. –