2009-12-29 44 views
17

¿Hay alguna manera de ajustar el ancho de las barras en una barra de menús?Ancho de la barra en Jfreechart

Creo mi tabla con el siguiente código.

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

Respuesta

5

Según Dave Gilbert (JFreeChart líder del proyecto)

Los anchos de las barras son automáticamente calculan y dependerá de la tabla o anchura trama y el número de artículos en su conjunto de datos.

Ver la discusión here.

8

No se puede especificar directamente el ancho de las barras, pero hay algunos atributos que pueden modificarse y que afectan el ancho. Usted debe echar un vistazo a la lowerMargin, upperMargin y categoryMargin atributos definidos por el CategoryAxis o la itemMargin atributo en el BarRenderer.

Por ejemplo:

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

La doble especifica en setItemMargin(double percent) es el porcentaje de la longitud total del eje de categorías que será utilizado para el espacio entre las barras dentro de la misma categoría (por defecto es 0,2 o 20%). Cuanto menor sea este valor, mayores serán las barras.

16

También puede establecer el ancho máximo de una barra. Esto es útil si tiene un gráfico amplio, pero ocasionalmente solo hay uno o dos puntos de datos y no quiere que una sola gran barra de grasa abarque toda el área.

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

¡Gracias! trabajado un placer. – Buffalo

5

Después de conseguir ningún resultado utilizando márgenes positivos y cero, he intentado usar números negativos para itemMargin para ver lo que sucedería. Las barras comenzaron a hacerse más gruesas. No sé si esto se recomienda, sin embargo, ya que se superpondrá si no hay suficiente espacio disponible.

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

Brillante. Estoy teniendo el mismo problema otra vez y no pude lograr nada con setMaximumBarWidth, esto funcionó. Gracias. – Buffalo

+0

mismo es el caso aquí !! Muchas gracias ... Lo hizo bien ... –

Cuestiones relacionadas