2009-12-29 16 views
17

Existe-t-il un moyen d'ajuster la largeur des barres dans un diagramme à barres?Largeur de la barre dans Jfreechart

Je crée mon graphique avec le code suivant.

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

Répondre

5

Selon Dave Gilbert (JFreeChart Chef de projet)

Les largeurs de barre sont automatiquement calculés et dépendra de la carte ou de la largeur de la parcelle et le nombre de articles dans votre ensemble de données.

Voir la discussion here.

8

Vous ne pouvez pas spécifier directement la largeur des barres, mais vous pouvez modifier quelques attributs qui affectent la largeur. Vous devriez jeter un oeil à la lowerMargin, upperMargin et categoryMargin attributs définis par le CategoryAxis ou itemMargin attribut dans le BarRenderer.

Par exemple:

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

Le double spécifié dans setItemMargin(double percent) est le pourcentage de la longueur totale de l'axe de la catégorie qui sera utilisé pour l'espace entre les barres de la même catégorie (par défaut est 0,2 ou 20%). Plus cette valeur est petite, plus les barres seront grandes.

16

Vous pouvez également définir la largeur maximale d'une barre. Ceci est utile si vous avez un graphique large mais parfois il n'y a qu'un ou deux points de données et vous ne voulez pas qu'une seule grande barre de gras occupe toute la surface.

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

Merci! travaillé un régal. – Buffalo

5

Après avoir obtenu aucun résultat en utilisant des marges positives et zéro, j'ai essayé d'utiliser des nombres négatifs pour itemMargin pour voir ce qui se passerait. Les barres ont commencé à devenir plus épaisses. Je ne sais pas si cela est recommandé, cependant, car vous obtiendrez des chevauchements s'il n'y a pas assez d'espace disponible.

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

Brillant. J'ai encore le même problème et je n'ai rien pu faire avec setMaximumBarWidth, cela a fait l'affaire. Merci. – Buffalo

+0

c'est pareil ici !! Merci beaucoup .. Il a fait l'affaire .. –