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
Спасибо
Ответы
Ответ 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
.