2009-12-29 9 views
17

C'è un modo per regolare la larghezza delle barre in un Barchart?Larghezza della barra in Jfreechart

Creo la mia tabella con il seguente codice.

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? 
       ); 

risposta

5

Secondo Dave Gilbert (JFreeChart Project Leader)

Le larghezze bar sono automaticamente calcolato e dipenderà dalla tabella o larghezza trama e il numero di articoli nel tuo set di dati.

Vedere la discussione here.

8

Non è possibile specificare direttamente la larghezza delle barre, ma è possibile modificare alcuni attributi che influiscono sulla larghezza. Si dovrebbe prendere uno sguardo alla lowerMargin, upperMargin e categoryMargin attributi definiti dal CategoryAxis o itemMargin attributo nel BarRenderer.

Ad esempio:

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

Il doppio specificato setItemMargin(double percent) è la percentuale della lunghezza complessiva dell'asse categoria che verrà utilizzato per lo spazio tra le barre nella stessa categoria (default è 0,2 o 20%). Più piccolo è questo valore, più grandi saranno le barre.

16

È inoltre possibile impostare la larghezza massima di una barra. Questo è utile se si dispone di un grafico ampio, ma occasionalmente ci sono solo uno o due punti dati e non si desidera che un'unica barra grossa sia occupata da tutta l'area.

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

Grazie! ha funzionato a meraviglia – Buffalo

5

Dopo aver ottenuto alcun risultato con margini positivi e pari a zero, ho provato con i numeri negativi per itemMargin per vedere cosa sarebbe successo. Le barre iniziarono a diventare più spesse. Non so se questo è raccomandato, dato che si otterrà la sovrapposizione se non c'è abbastanza spazio disponibile.

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

Brillante. Ho di nuovo lo stesso problema e non ho potuto ottenere nulla con setMaximumBarWidth, questo ha fatto il trucco. Grazie. – Buffalo

+0

stesso è il caso qui !! Grazie mille .. Ha fatto il trucco .. –

Problemi correlati