Java 如何在2天内创建具有实时DateAxis的动态图表
我正在用JfreeChart制作一个动态图表来显示烤箱记录的温度。 这些值每2秒记录一次,并存储在一个数据库中,然后我提取该数据库并将其显示在我的动态图表上。 烤箱一直在运行,目标是能够看到温度是否出现峰值(注意,实际上有多个烤箱) 我的工作主要是围绕垃圾神的回应和其他主题 以下是我的代码的简化版本:Java 如何在2天内创建具有实时DateAxis的动态图表,java,jfreechart,Java,Jfreechart,我正在用JfreeChart制作一个动态图表来显示烤箱记录的温度。 这些值每2秒记录一次,并存储在一个数据库中,然后我提取该数据库并将其显示在我的动态图表上。 烤箱一直在运行,目标是能够看到温度是否出现峰值(注意,实际上有多个烤箱) 我的工作主要是围绕垃圾神的回应和其他主题 以下是我的代码的简化版本: public test(final String title) { super(title); final DynamicTimeSeriesCollection dat
public test(final String title) {
super(title);
final DynamicTimeSeriesCollection dataset =
new DynamicTimeSeriesCollection(3, 10, new Second()); // 1
dataset.setTimeBase(new Second(new Date()));
[...]
private JFreeChart createChart(final XYDataset dataset) {
final JFreeChart result = ChartFactory.createTimeSeriesChart(
TITLE, "hh:mm:ss", "°C", dataset, true, true, false);
final XYPlot plot = result.getXYPlot();
ValueAxis domain = plot.getDomainAxis();
domain.setAutoRange(true);
ValueAxis range = plot.getRangeAxis();
range.setRange(-MINMAX, MINMAX);
DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setFixedAutoRange(10000); // 2
return result;
}
现在,我有几点我不理解。
首先,如文档中所述
public dynamicMeseries集合(int n系列,int n组件,RegularTimePeriod时间样本)参数:n系列-系列数,n组件-每个系列的项目数,时间样本-时间段样本。
问题是,当我在代码中将nMoments设置为10时,显示的时间很好,这意味着它非常接近我的计算机上显示的实际时间,但我离要监视的2天时间段很远,因为它只显示最后10项。但是当我增加nMoments(每个系列的项目数)时,显示的时间不是“真实”的时间,如果我增加太多,它甚至不会加载
我只是希望能够有一个足够长的DateAxis,这样我就可以看到我2天前得到的值,但以一种动态的方式(一个2天周期的FIFO),但我还需要DateAxis足够精确
我主要是玩//1和//2中的值,但我不能让它像我想的那样工作,我也不知道如何使用这两个值。我设法设置了//2,这样我就有了2天的时间范围,但是数据仍然是10个项目的FIFO,正如我所说的,我觉得当我增加这个限制的时候时机不对
我也考虑过使用TimePeriesCollection,但我没有正确地使用它来实现某些功能。我是否需要对此进行更深入的挖掘,或者我是否可以通过DynamicMiseriesCollection实现我想要的
任何帮助都将不胜感激。我通过使用
TimesPeriesCollection
解决了我的问题,而不是垃圾神在评论中提到的DynamicMiseriesCollection
。以这篇文章为例。DynamicMiseriesCollection
设计用于快速显示数据上的窄窗口<代码>时间体验集合是一个更好的选择;放大后,您可以轻松发现尖刺;放大你的选择。这是正确的方法;我们可以看到一个相关的例子。