切换JFreeChart轴范围的上限

4
我有一张图表,它将完成任务数量与时间绘制在一个坐标系上。在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个回答

4

作为一种权宜之计,您可以保留默认的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的实际例子。


我同意这可能不是“正确”的答案,但是每当我刷新数据时存储范围的实例确实允许我重新设置范围。 - unholysampler
我喜欢保留原始的便利性,但你也可以通过构建一个类似工厂创建的对象来实现。在这里可以找到相关内容。 - trashgod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接