2011-11-22 81 views
4

我有一张图表,显示完成的任务数与时间的关系图。在Y轴上,总是包含0,并且有一个固定值,它将成为任务的最大数量。随着时间的推移,系列中的系列攀升至最大值。我可以做到这一切。切换JFreeChart轴范围的上限

我想要做的是允许用户在从0到MAX和从0到自动量程值的Y轴之间切换。通过这种方式,它们可以仅放大数据,并且在图表的上半部分仍然远离最大值时不会变空。

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

这行让我来显示整个数值范围,但是我不能设法得到的范围内回到那个设置上限,只是与同系列的最大价值较高的自动值(它将呈现如果你根本没有设置范围)。

回答

2

作为权宜之计,可以保留默认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名义例子。

+0

注意新['JFreeChart'版本1.0.14](http://www.jfree.org/jfreechart/)。 – trashgod

+0

我同意它可能不是“正确的”答案,但是只要我刷新数据就存储该范围的一个实例确实允许我重新设置范围。 – unholysampler

+0

我喜欢保留原文的方便,但你也可以[构建一个](http://www.jfree.org/jfreechart/api/javadoc/src-html/org/jfree/chart/axis/NumberAxis.html #line.185)与工厂创建的相似。 – trashgod