我是JFreeChart的新手,我正试图看看有什么行动。
在我的图表中我只有一个系列,我想 - 根据值 - 为条形设置不同的颜色。例如:0-20 -> RED, 20-80 -> YELLOW, 80-100 -> GREEN
CategoryPlot plot = chart.getCategoryPlot();
CategoryDataset dataset = plot.getDataset(0);
Number value = dataset.getValue(dataset.getRowKey(0), dataset.getColumnKey(0));
Double val = value.doubleValue();
if (val <= 20.0) {
BarRenderer renderer = (BarRenderer) plot.getRenderer();
Paint tmp = renderer.getItemPaint(row, column);
/*
** Help Please
*/
}
return chart;
这是我到达的地方,我被困在这里,不知道到底去哪里。我在文档中看到Paint是一个接口,但实现此接口的类都没有提供setXXX()方法。所以,我的两个问题是:
答案 0 :(得分:3)
您需要创建自己的BarRenderer
子类并覆盖getItemPaint()
。而不是根据列选择颜色,而是根据您的值选择它。以下是显示现有BarRenderer
如何运作的大纲。
plot.setRenderer(new MyRender());
...
class MyRender extends BarRenderer {
@Override
public Paint getItemPaint(int row, int col) {
System.out.println(row + " " + col + " " + super.getItemPaint(row, col));
return super.getItemPaint(row, col);
}
}