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.