Толщина выборочной точки диаграммы JFree - PullRequest
1 голос
/ 26 декабря 2011

Я использую диаграмму jfree для графического отображения метрик. Сейчас я работаю над решением, которое рандомизирует элементы графика в линейной диаграмме XY, чтобы график выглядел более гладким. Проблема в том, что я не хочу, чтобы случайные элементы имели одинаковую толщину как реальные значения, на самом деле я не хочу, чтобы с ними была какая-либо толщина. Есть способ выборочно указать толщину точек. В настоящее время я использую XYLineAndShapeRenderer для визуализации толщины точек.

1 Ответ

4 голосов
/ 26 декабря 2011

Вы можете переопределить getItemShapeVisible() и организовать возврат false для ложных точек. Вы можете хранить дополнительную информацию, необходимую для принятия решения, в вашей модели данных, используя реализацию XYZDataset.

В качестве альтернативы рассмотрим сглаживание данных перед их рендерингом. Такие фильтры обычно дают меньше точек, что упрощает рендеринг.

В любом случае избегайте путаницы или введения в заблуждение изменений в данных. A TextTitle, показанный здесь , может прояснить результат.

Приложение: getItemShapeVisible() сообщает вам , что series и item находится на рассмотрении. Реализация по умолчанию просто запрашивает getSeriesShapesVisible(). Вот схема:

private static class MyRenderer extends XYLineAndShapeRenderer {

    @Override
    public boolean getItemShapeVisible(int series, int item) {
        System.out.println(series + ":" + item);
        if (item % 2 == 0) return false;
        else return super.getItemShapeVisible(series, item);
    }
}

Приложение: Вот как вы можете установить его:

XYPlot plot = chart.getXYPlot();
MyRenderer renderer = new MyRenderer();
plot.setRenderer(renderer);
...