2011-09-07 214 views
1

我有一个可以使用jfreechart绘制的时间序列数据。问题是,随着新数据的进入,图表将根据新的数据集而变化。我用过,在Jfreechart中动态更改Y轴范围

chart.fireChartChanged(); chartPanel.repaint();

问题是,有些数据可能超出Y轴的当前范围,我想知道轴范围如何根据迄今为止的时间序列中的最大值进行更改?谢谢!

+0

如果这是一个重复的帐户,您可以请求[合并](http://meta.stackexchange.com/questions/18232/how-can-one-link-merge-combine-associate-two-accounts- users-anonymous-unregiste/73801#73801)您的其他帐户。 – trashgod

回答

1

我使用了chart.fireChartChanged(); chartPanel.repaint(); ...但图表重新绘制后仍具有旧的范围。

这一切似乎都不必要的复杂:轴测距和通知应该是自动的。在此example中,范围随异常值累积而变化,因为add()“向所有注册的侦听器发送SeriesChangeEvent”。在此example中,范围是固定的,但会发生相同的通知。

由于我们无法猜测您的程序在这方面的失败,因此可能会提供一个sscce,它可以显示您描述的问题。

1

看看Range class

有很多种方法,如

combine(Range range1, Range range2) 
      Creates a new range by combining two existing ranges. 

expandToInclude(Range range, double value) 
     Returns a range that includes all the values in the specified range AND the specified value. 

shift(Range base, double delta, boolean allowZeroCrossing) 
      Shifts the range by the specified amount. 

你可以使用任何根据您的要求

你甚至可能需要添加下列[根据您的评论]

timeaxis.setAutoRange(true); 
timeaxis.setFixedAutoRange(1000.0); 
+0

感谢您的回复。当我创建绘图时,我使用Range来设置坐标轴。例如yRange =新的Range()并将其传递给轴。稍后当图表更新新数据时,我更改了yRange,但重新绘制后图表仍旧具有旧范围。还是我需要直接从图表对象中检索它? – Daniel