Как применить цвет к одной полосе моего графика одной серии? - PullRequest
1 голос
/ 29 марта 2011

Я новичок в 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 ().Итак, мои два вопроса:

  • Как мне установить цвет для одного столбца?
  • Как мне применить это к моему графику?

1 Ответ

3 голосов
/ 30 марта 2011

Вам нужно будет создать свой собственный подкласс 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);
    }
}
...