【发布时间】:2017-04-11 05:58:11
【问题描述】:
所以我有一个包含 3 个不同时间序列的折线图:
“电压”线代表实时数据和整个“高”和 “低”系列实际上是从文件中动态加载的(每当用户单击 LOAD 按钮时)。
这里的问题是,如果我从 CSV 文件加载整个“高”和“低”系列,然后在实时数据到来时绘制它,它将只显示“高”的一些最终点和“Low”系列,然后我们要等待那个时间段的实时数据到来(这是可以理解的)。
然后我解决这个问题的想法是,当我添加一个“电压”系列的新点。
public void add(Data data) throws ParseException, CloneNotSupportedException {
Date date = new SimpleDateFormat(PATTERN).parse(data.getDate());
Millisecond milis = new Millisecond(date);
timeSeries.add(milis, data.getNumber());
Date maxDate = axis.getMaximumDate();
Date minDate = dataset.getSeries(0).getTimePeriod(0).getStart();
Millisecond maxMili = new Millisecond(maxDate);
Millisecond minMili = new Millisecond(minDate);
// highSeries and lowSeries are loaded from csv file
TimeSeries tempHighSeries = highSeries.createCopy(minMili, maxMili);
TimeSeries tempLowSeries = lowSeries.createCopy(minMili, maxMili);
TimeSeriesCollection collection = new TimeSeriesCollection();
collection.addSeries(tempHighSeries);
collection.addSeries(tempLowSeries);
plot.setDataset(1, collection);
}
结果就是上图。但是,我真正想要的是这样的:
我希望用户仍然可以看到这些边缘的下一部分(当“High”和“Low”系列的下一个点不在实时数据范围内时)
任何指针?
【问题讨论】:
-
为什么不在实时电压数据到达时将高/低数据与实时电压数据合并?
-
能否以几行代码为例提供更多细节?
-
是的,在
process()的实现中添加数据,用于example。 -
所以您的意思是:使用 SwingWorker 读取该 csv 文件并在 process() 方法中更新高低系列?我的目的是在不影响电压系列的情况下加载高低系列
-
太棒了!我已经在下面详细说明了。
标签: java swing jfreechart linechart