默认情况下,我的条形图始终使用渐变颜色绘制。我只想要一个简单的颜色没有任何样式效果。
有人可以帮忙吗?
代码:
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
由于
答案 0 :(得分:44)
问题在于您使用的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
,但这确实需要额外的代码。
答案 1 :(得分:7)
在从ChartFactory创建图表之前,您可以设置图表主题:
ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());
默认为添加渐变的JFreeTheme。可以使用以下主题:
ChartFactory.setChartTheme(StandardChartTheme.createJFreeTheme());
ChartFactory.setChartTheme(StandardChartTheme.createDarknessTheme());
答案 2 :(得分:2)
source code的org.jfree.chart.demo.BarChartDemo1
显示了如何设置系列颜色。只需指定普通颜色而不是渐变颜色。
renderer.setSeriesPaint(0, Color.red);
renderer.setSeriesPaint(1, Color.green);
renderer.setSeriesPaint(2, Color.blue);
更正:@ BarRenderer
中answer的初始化可能会找到@ Jes的帮助defaultBarPainter
的关键。