Подтвердить что ты не робот

Ширина полосы в Jfreechart

Есть ли способ настроить ширину баров в Barchart?

Я создаю свою диаграмму со следующим кодом.

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

Ответ 1

Вы также можете установить максимальную ширину полосы. Это полезно, если у вас есть широкий график, но иногда есть только один или два точки данных, и вы не хотите, чтобы один большой жирный бар занимал всю площадь.

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

Ответ 2

Вы не можете напрямую указать ширину столбцов, но есть несколько атрибутов, которые можно изменить, которые влияют на ширину. Вы должны взглянуть на атрибуты lowerMargin, upperMargin и categoryMargin, определенные атрибутом CategoryAxis или itemMargin, в BarRenderer.

Например:

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

Двойной параметр, указанный в setItemMargin(double percent), представляет собой процент от общей длины оси категории, которая будет использоваться для пространства между столбцами в пределах одной категории (по умолчанию - 0,2 или 20%). Чем меньше это значение, тем больше будет баров.

Ответ 3

Согласно Дейву Гилберту (руководитель проекта JFreeChart)

Ширина полосы автоматически рассчитывается и будет зависеть от диаграмму или ширину графика и количество элементов в вашем наборе данных.

См. обсуждение здесь.

Ответ 4

После получения результатов с использованием положительных полей и нуля я попытался использовать отрицательные числа для itemMargin, чтобы узнать, что произойдет. Бары стали толще. Я не знаю, рекомендуется ли это, так как вы получите перекрытие, если недостаточно свободного места.

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