Переключить верхнюю границу диапазона оси JFreeChart - PullRequest
4 голосов
/ 22 ноября 2011

У меня есть график, который отображает количество выполненных задач в зависимости от времени.На оси Y всегда включен 0, и есть фиксированное значение, которое будет максимальным количеством задач.С течением времени линия серии поднимается до максимального значения.Я могу сделать все это.

То, что я хочу сделать, - это позволить пользователю переключаться между осью Y с 0 на MAX и 0 на значение автоматического диапазона.Таким образом, они могут быть увеличены только на данных и не иметь верхнюю половину графика пустой, когда они все еще далеки от максимального значения.

JFreeChart chart = ChartFactory.createTimeSeriesChart("", "", "Progress", dataset, false, true, false);
XYPlot plot = chart.getXYPlot();
plot.getRangeAxis().setRange(new Range(0, TOTAL), false, true);

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

1 Ответ

3 голосов
/ 23 ноября 2011

Для удобства вы можете сохранить значение по умолчанию Range:

Range auto = plot.getRangeAxis().getRange();

и позже восстановите его:

this.add(new JButton(new AbstractAction("Restore") {

    @Override
    public void actionPerformed(ActionEvent e) {
        JFreeChart chart = chartPanel.getChart();
        XYPlot plot = (XYPlot) chart.getPlot();
        plot.getRangeAxis().setRange(auto);
    }
}), BorderLayout.SOUTH);

Условный пример на основе org.jfree.chart.demo.TimeSeriesChartDemo1.

...