Largeur de la barre en Jfreechart

Est-il possible d'ajuster la largeur des barres dans un Barchart?

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?
                );  
17
demandé sur niton 2009-12-29 13:28:19

4 réponses

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

CategoryPlot categoryPlot = chart.getCategoryPlot();
BarRenderer br = (BarRenderer) categoryPlot.getRenderer();
br.setMaximumBarWidth(.35); // set maximum width to 35% of chart
17
répondu Jason Messick 2009-12-31 14:05:13

vous ne pouvez pas spécifier directement la largeur des barres, mais il y a quelques attributs qui peuvent être modifiés qui affectent la largeur. Vous devriez jeter un oeil à l' lowerMargin, upperMargin et categoryMargin attributs définis par la Categoraxis ou le 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 des catégories qui seront utilisées pour l'espace entre les barres à l'intérieur de la même catégorie (par défaut .2 ou 20%). Plus cette valeur est petite, plus les barres seront grandes.

8
répondu Hermann Hans 2009-12-29 12:10:43

selon Dave Gilbert (chef du projet JFreeChart)

les largeurs des barres sont automatiques calculé et dépendra de la graphique ou de la largeur de la parcelle et le nombre de éléments dans votre jeu de données.

voir la discussion ici.

5
répondu nandokakimoto 2009-12-29 10:45:52

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 allait se passer. Les barres commencé à avoir de plus épais. Je ne sais pas si cela est recommandé, cependant, puisque vous obtiendrez Chevauchement s'il n'y a pas assez d'espace disponible.

BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
renderer.setItemMargin(-2);
5
répondu sjs1984 2011-11-09 21:47:44