Исправить ширину столбчатой ​​диаграммы и расстояние между столбцами в JFreeChart - PullRequest
3 голосов
/ 11 мая 2010

У меня есть столбчатая диаграмма, на которой число столбцов является динамическим, может изменяться от 1 до n столбцов Я хочу, чтобы расстояние между графиками и шириной бара было одинаковым. Как мне это исправить. Пожалуйста, предложите решения / идеи.

Ответы [ 2 ]

4 голосов
/ 22 ноября 2011

На гистограмме с накоплением вы можете изменить расстояние между барами, используя

  • CategoryAxis.setLowerMargin
  • CategoryAxis.setMargin и
  • CategoryAxis.setUpperMargin

код ниже

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;
}
2 голосов
/ 11 мая 2010

StackedBarRenderer посвящает некоторое усилие согласованию «расстояния между [барами] и шириной стержня». Непонятно, что вы хотите сделать по-другому, так как количество столбцов меняется. Соответствующая геометрия определяется родителем BarRenderer в таких методах, как calculateBarWidth(), которые могут быть переопределены по желанию. Также убедитесь, что для каждой категории в каждой серии есть значение.

...