在Jfreechart中动态更改Y轴范围

时间:2011-09-07 02:39:09

标签: java jfreechart

我有一个时间序列数据,我可以使用jfreechart绘制。问题是,随着新数据的出现,图表将根据新数据集发生变化。我用了,

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

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

  

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

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

由于我们无法猜测您的程序在这方面是如何失败的,因此提供展示您所描述问题的sscce可能会有所帮助。