JFreeChart BarChart -> NO gradient

2022-09-01 11:35:37

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

任何人都可以帮忙吗?

法典:

   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

谢谢


答案 1

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

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

这应该可以做到。

或者,如果要使用 JFreeChart 的 ,则可以通过在初始化渲染器之前调用静态方法来强制它使用 。BarRendererStandardBarPaintersetDefaultBarPainter()

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

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


答案 2

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

ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());

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

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