java - JFreeChart BarChart-> NO gradiente
colors bar-chart (3)
Mi gráfico de barras siempre se dibuja con un color degradado de forma predeterminada. Solo quiero un color simple sin efectos estilizados .
Alguien puede ayudar ?
Código:
final JFreeChart chart = ChartFactory.createBarChart(
"", // chart title
xLabel, // domain axis label
yLabel, // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
false, // tooltips?
false // URLs?
);
final CategoryPlot plot = chart.getCategoryPlot();
// SOMETHING HAS TO BE DONE HERE
showChart(chart); // Simply shows the chart in a new window
Gracias
Antes de crear el gráfico desde ChartFactory, puede establecer el tema del gráfico:
ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());
El valor predeterminado es JFreeTheme, que agrega el gradiente. Los siguientes temas están disponibles:
ChartFactory.setChartTheme(StandardChartTheme.createJFreeTheme());
ChartFactory.setChartTheme(StandardChartTheme.createDarknessTheme());
El código fuente de org.jfree.chart.demo.BarChartDemo1 muestra cómo configurar los colores de la serie. Simplemente especifique colores planos en lugar de gradientes.
renderer.setSeriesPaint(0, Color.red);
renderer.setSeriesPaint(1, Color.green);
renderer.setSeriesPaint(2, Color.blue);
Corrección: la clave de la útil answer @ Jes se puede encontrar en la inicialización de defaultBarPainter en BarRenderer .
El problema radica en el BarPainter que está utilizando. El valor predeterminado de JFreeChart versión 1.0.13 es usar GradientBarPainter que agrega un aspecto metálico a la barra. Si desea el aspecto "antiguo", la solución es utilizar el StandardBarPainter .
final CategoryPlot plot = chart.getCategoryPlot();
((BarRenderer) plot.getRenderer()).setBarPainter(new StandardBarPainter());
Deberias hacer eso.
Alternativamente, si desea usar el BarRenderer de JFreeChart, podría forzarlo a usar el StandardBarPainter llamando al método estático setDefaultBarPainter() antes de inicializar su procesador.
final CategoryPlot plot = chart.getCategoryPlot();
BarRenderer.setDefaultBarPainter(new StandardBarPainter());
((BarRenderer) plot.getRenderer()).setBarPainter(new BarPainter());
Si desea tener más control sobre el gráfico, siempre puede ChartFactory desde cero en lugar de usar ChartFactory , pero eso requiere mucho más código.