Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “如何仅显示”;“最后24小时”;从一个;“最后72小时”;JFreeChart时间序列_Java_Time Series_Jfreechart_Simpledateformat_Timeserieschart - Fatal编程技术网

Java “如何仅显示”;“最后24小时”;从一个;“最后72小时”;JFreeChart时间序列

Java “如何仅显示”;“最后24小时”;从一个;“最后72小时”;JFreeChart时间序列,java,time-series,jfreechart,simpledateformat,timeserieschart,Java,Time Series,Jfreechart,Simpledateformat,Timeserieschart,我编写了这两行代码来使用XYDataset创建图表: final XYDataset dataset = new TimeSeriesCollection(myInfo.getSeries()); JFreeChart timechart = ChartFactory.createTimeSeriesChart(myInfo.getName() + " CPU (last 72h)", "", "CPU %", dataset, false, false, false); 这些线条创造

我编写了这两行代码来使用
XYDataset
创建图表:

final XYDataset dataset = new TimeSeriesCollection(myInfo.getSeries());
JFreeChart timechart = ChartFactory.createTimeSeriesChart(myInfo.getName()
    + " CPU (last 72h)", "", "CPU %", dataset, false, false, false);
这些线条创造了这张漂亮的“最后72小时”图表:

这就是我如何添加信息来构建此图表的方式(这段代码可以运行多次):

我想要一个(看似)简单的改动,把这个“剪”到最后24小时。我的意思是在图中只看到最近的24小时,如图所示(图中是我使用相同技术制作的不同图表,但信息仅存在于最后24小时):

我已经浏览了API,但找不到合适的答案,因为我相信这应该有一些聪明但简单的解决方案。

不像建议的那样丢弃旧数据,而是希望显示数据的连续子集,就像通过窗口查看一样。虽然为
类别数据集
提供了此功能,但没有针对
XYDataset
的内置解决方案<代码>滑动XYDataSet,如图所示,可能是另一种选择。在下面演示的
SliderDemo2
的变体中,我将三天的数据添加到一个带有一天窗口的单一系列中。我保留了滑块,以便轻松查看早期的值

static final int COUNT = 3 * 24 * 60;
public static final int WINDOW = 24 * 60;
public static final int FIRST = 2 * 24 * 60;
…
this.slider.setValue(FIRST);

另外,请注意,自提交修补程序以来,某些类已移动:

import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
我不能只使用
setMaximumItemAge()

不是孤立的
addOrUpdate()
等在通知侦听器之前调用
removeAgedItems(false)

我正在使用

三天的
Second
数据,例如,将意味着
setMaximumItemAge(3*24*60*60)

我可能无法使用滑动窗口,因为我正在将图表保存为JPEG格式


您可以将所需的
firstItemIndex
作为参数传递给
SlidingXYDataset
构造函数;如果需要,您可以稍后通过
setFirstItemIndex()
更新索引。

谢谢!我不能直接使用
setMaximumItemAge()
吗?我知道我正在使用
Second
,因此我必须使用
setMaximumItemAge(86400)
?我在问,因为滑动窗口的解决方案可能不适用于我,因为我正在将图表保存为JPEG格式…我仍然不是100%同意这一点。“不孤立”是什么意思?事实上,我刚刚在一张3天图表上测试了设置86400岁的最大年龄,效果非常好(只显示了最后24小时的数据,而不是3天的数据…)。为了澄清,我正常地添加了所有信息,就在
newtimeseriescolection(series)之前设置
系列。设置最大值(86400)是的,我明白了,但是如果我设置了
setMaximumItem
,它只会丢弃,否则默认值是
9223372036854775807L
,这基本上就是所有信息。。。
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;