JFreeChart BarChart - >没有渐变

时间:2011-08-16 09:43:58

标签: java colors jfreechart bar-chart

默认情况下,我的条形图始终使用渐变颜色绘制。我只想要一个简单的颜色没有任何样式效果

有人可以帮忙吗?

代码:

   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

由于

3 个答案:

答案 0 :(得分:44)

问题在于您使用的BarPainter。 JFreeChart版本1.0.13默认使用GradientBarPainter,它为条形图添加了金属外观。如果您想要“旧”外观,解决方案是使用StandardBarPainter

final CategoryPlot plot = chart.getCategoryPlot();
((BarRenderer) plot.getRenderer()).setBarPainter(new StandardBarPainter());

应该这样做。

或者,如果您想使用JFreeChart的BarRenderer,可以在初始化渲染器之前通过调用静态方法StandardBarPainter强制它使用setDefaultBarPainter()

final CategoryPlot plot = chart.getCategoryPlot();
BarRenderer.setDefaultBarPainter(new StandardBarPainter());
((BarRenderer) plot.getRenderer()).setBarPainter(new BarPainter());

如果您想要更多地控制图表,您可以始终从头开始构建它,而不是使用ChartFactory,但这确实需要额外的代码。

答案 1 :(得分:7)

在从ChartFactory创建图表之前,您可以设置图表主题:

ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());

默认为添加渐变的JFreeTheme。可以使用以下主题:

ChartFactory.setChartTheme(StandardChartTheme.createJFreeTheme());
ChartFactory.setChartTheme(StandardChartTheme.createDarknessTheme());

答案 2 :(得分:2)

source codeorg.jfree.chart.demo.BarChartDemo1显示了如何设置系列颜色。只需指定普通颜色而不是渐变颜色。

renderer.setSeriesPaint(0, Color.red);
renderer.setSeriesPaint(1, Color.green);
renderer.setSeriesPaint(2, Color.blue);

更正:@ BarRendereranswer的初始化可能会找到@ Jes的帮助defaultBarPainter的关键。