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

Спасибо


person shorty    schedule 16.08.2011    source источник
comment
Вставьте свой код. В большинстве случаев вы должны добавить некоторый код, чтобы сделать его градиентным, например: GradientPaint   -  person Dmitry Alexandrov    schedule 16.08.2011
comment
+1 за самый настоящий титул. Веб 2.0 прощай!   -  person P A S T R Y    schedule 22.02.2014


Ответы (3)


Проблема заключается в BarPainter, который вы используете. JFreeChart версии 1.0.13 по умолчанию использует GradientBarPainter, что придает панели металлический вид. Если вам нужен «старый» вид, решение состоит в том, чтобы использовать StandardBarPainter.

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

Это должно сработать.

В качестве альтернативы, если вы хотите использовать BarRenderer JFreeChart, вы можете заставить его использовать StandardBarPainter, вызвав статический метод setDefaultBarPainter() перед инициализацией средства визуализации.

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

Если вам нужен больший контроль над диаграммой, вы всегда можете создать ее с нуля вместо использования ChartFactory, но для этого требуется много дополнительного кода.

person Jes    schedule 17.08.2011
comment
Здорово! Долго искал решение! - person Jupiter Jones; 29.03.2012
comment
Респект за решение. Гистограмма по умолчанию (я думаю) выглядит очень дешево. - person rbaleksandar; 04.10.2015

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

ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());

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

ChartFactory.setChartTheme(StandardChartTheme.createJFreeTheme());
ChartFactory.setChartTheme(StandardChartTheme.createDarknessTheme());
person Kazi Islam    schedule 19.09.2012
comment
Это решение помогло мне в случае использования StackedBarChart, на который не повлияло изменение barPainter в рендерере. Возможно, я обращался к неправильному рендереру. Тем не менее это помогает. - person bpawlowski; 02.11.2017

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

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

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

person trashgod    schedule 16.08.2011
comment
Тоже не работает, все равно все рисуется градиентом. К сожалению, я пока не могу загрузить изображение :( Кроме того, что произойдет с верхним решением, если столбцов больше трех? - person shorty; 17.08.2011
comment
Изображение было бы хорошо, но код был бы лучше. Если вы ничего не делаете, вы должны получить цвета, предписанные DefaultDrawingSupplier. - person trashgod; 17.08.2011