JFreeChart BarChart -> НЕТ градиента - PullRequest
25 голосов
/ 16 августа 2011

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

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

Код:

   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 ]

44 голосов
/ 17 августа 2011

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

7 голосов
/ 20 сентября 2012

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

ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());

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

ChartFactory.setChartTheme(StandardChartTheme.createJFreeTheme());
ChartFactory.setChartTheme(StandardChartTheme.createDarknessTheme());
2 голосов
/ 16 августа 2011

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

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

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

...