2010-05-11 8 views

Répondre

2

StackedBarRenderer consacre quelques efforts pour rendre «l'espacement entre les [barres] et la largeur de la barre pour être cohérent». Vous ne savez pas exactement ce que vous voulez faire différemment à mesure que le nombre de colonnes change. La géométrie pertinente est déterminée par le parent BarRenderer dans des méthodes telles que calculateBarWidth(), qui peuvent être remplacées à volonté. Vérifiez également qu'il existe une valeur pour chaque catégorie dans chaque série.

+1

Je vous sed Méthode setMaximumBarWidth du moteur de rendu pour définir la largeur de façon dynamique. – SKR

+0

Excellent. Je ne connaissais pas 'setMaximumBarWidth()', et cela semble beaucoup plus facile. Je voterais comme une réponse séparée. – trashgod

3

Dans un graphique à barres empilées, vous pouvez modifier l'espacement entre les barres à l'aide

  • CategoryAxis.setLowerMargin
  • CategoryAxis.setMargin et
  • CategoryAxis.setUpperMargin
code

est inférieur

protected JFreeChart generateGraph() { 

    CategoryAxis categoryAxis = new CategoryAxis("Categories"); 
    categoryAxis.setLowerMargin(.01); 
    categoryAxis.setCategoryMargin(.01); 
    categoryAxis.setUpperMargin(.01);  
    categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); 

    ValueAxis valueAxis = new NumberAxis("Values"); 

    StackedBarRenderer renderer = new StackedBarRenderer(); 
    renderer.setBarPainter(new StandardBarPainter()); 
    renderer.setDrawBarOutline(false); 
    renderer.setShadowVisible(false); 
    renderer.setBaseItemLabelsVisible(true); 
    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); 

    CategoryPlot plot = new CategoryPlot(_dataset, 
             categoryAxis, 
             valueAxis, 
             renderer); 

    plot.setOrientation(PlotOrientation.VERTICAL); 

    JFreeChart chart = new JFreeChart("Title", 
          JFreeChart.DEFAULT_TITLE_FONT, 
          plot, 
          true); 
    //ChartFactory.getChartTheme().apply(_chart); 
    return chart; 
} 
Questions connexes