Подтвердить что ты не робот

JFreeChart BarChart → НЕТ градиента

моя гистограмма всегда рисуется с градиентным цветом по умолчанию. Мне просто нужен простой цвет без каких-либо стилизованных эффектов.

Может ли кто-нибудь помочь?

код:

   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

Спасибо

4b9b3361

Ответ 1

Проблема заключается в 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, но для этого требуется много дополнительного кода.

Ответ 2

Перед созданием диаграммы из ChartFactory вы можете установить тему диаграммы:

ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());

По умолчанию используется JFreeTheme, который добавляет градиент. Доступны следующие темы:

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

Ответ 3

исходный код для org.jfree.chart.demo.BarChartDemo1 показывает, как установить цвета серии. Просто укажите простые цвета вместо градиентов.

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

Исправление: ключ к @Jes полезен answer может быть найден при инициализации defaultBarPainter в BarRenderer.