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;