2016-08-17 4 views
3

График графика временных рядов по графику, используя библиотеку, где временные метки по оси X не равноудалены.График тайм-листов в MPAndroidChart

Образец данных:

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.

Как это сделать?

ответ

1

TR4Android является абсолютно штраф за то, библиотека не поддерживает длинный тип данных для меток времени, за исключением.

Итак, я пошел со следующим подходом:

Образец данных: 1467886121: 325, 1467886153: 326, 1467886185: 325, 1467886248: 326

Принимая timestamp_1 должно быть ноль или основа. Следующие временные метки становятся базовой меткой времени (первая временная метка) - самой.

Таким образом, данные теперь становится, как это так,

Обработанные Образец данных: 0: 325, 32: 326, 64: 325, 127: 326

Эти данные могут теперь передаваться в картографическую библиотеку, а нарисованный граф сохраняет свою временную последовательность.

+0

Это не работает, поскольку вы делаете предположение, что время будет увеличиваться в следующем временном интервале. Разница во времени между следующим шагом может быть меньше вашего последнего шага, и график будет отложен назад. – Simon

+1

Ну, нет. График будет работать правильно. Я просто предполагаю, что первая метка времени равна нулю, тогда будущие временные метки становятся разницей. Таким образом, мы сохраняем природу временного ряда. Его первая минус n-я метка времени, которая приводит к меньшим по размерам сохраненным временным меткам. Я нарисовал ответ для ясности. Спасибо. –

2

Временные ряды поддерживаются в последней версии библиотеки, на момент написания которой это будет 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. Вам нужно настроить это, чтобы соответствовать вашим потребностям, а затем добавить его к оси х: ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^