MPAndroidChart

时间:2016-08-17 08:25:17

标签: android mpandroidchart

待办事项: 使用库绘制时间序列折线图,其中x轴时间戳不是等距的。

示例数据:

1467886121:325
1467886153:326
1467886185:325
1467886248:326
1467886280:326
1467886311:326
1467886343:327
1467886375:327
1467886406:327
1467886438:328
1467886529:328
1467886561:327
1467886593:327
1467886625:326
1467886659:327
1467886692:326
1467886725:326

注意: LHS值是UNIX时间戳,RHS值是相应时间戳的数据点。 时间戳不等距,因此它们应根据两者之间的时间间隔进行间隔。最近,MPAndroidChart引入了这个功能[github:link]

在这里,他们似乎正在添加相隔一小时的新值。我想根据UNIX时间戳中的时间差来添加值。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

最新版本的库支持时间序列,在撰写本文时,这将是v3.0.0-beta1。确保在build.gradle文件中导入该版本。

构造条目非常简单,因为每个条目现在都包含一个x值和一个相应的y值,就像你的数据一样(你如何检索你的x值和y值取决于输入数据的方式)结构化):

ArrayList<Entry> entries = new ArrayList<>();
for (int i = 0; i < length; i++) {
    long x = ... // 1467886121, 1467886153, ...
    int y = ...  // 325, 326, ...
    entries.add(new Entry(x, y));
}
LineDataSet dataSet = new LineDataSet(entries, "Time series");
LineData data = new LineData(dataSet);
mLineChart.setData(data);

由于您要创建时间序列,因此您可能还希望将轴标签格式化为日期,您可以找到示例DayAxisValueFormatter on GitHub。您需要根据需要进行调整,然后将其添加到x轴:

mLineChart.getXAxis().setValueFormatter(new DayAxisValueFormatter(mLineChart));

答案 1 :(得分:2)

TR4Android的答案绝对没问题,因为该库不支持时间戳的长数据类型。

所以,我采用了以下方法:

示例数据: 1467886121:325, 1467886153:326, 1467886185:325, 1467886248:326

timestamp_1 设为基础。 以下时间戳成为基本时间戳(第一个时间戳) - 本身。

所以,数据现在变得如此,

已处理的样本数据 0:325, 32:326, 64:325, 127:326

此数据现在可以传递到图表库,并且绘制的图形保留了其时间序列特性。