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