2015-04-01 2 views
0

РЕШЕНИЕachartengine временная диаграмма, установленное начальное диапазон

Вместо использования setInitialRange() я должен был установить начальные рентгеновские значения с помощью setXAxisMin(), а также setXAxisMax(). Кажется, я немного сбиваю с толку.

ORIGINAL ВОПРОС

В настоящее время я работаю над проектом с участием библиотеки acharteninge для рисования диаграмм времени, которые отлично работает до сих пор. Пользователь может переключаться между различными графиками (один XYMultipleSeriesDataset плюс один TimeSeries на граф) с помощью отдельных кнопок. На данный момент, achartengine отображает все значения x, когда отображается график.

Однако меня попросили отобразить только данные, записанные в первые три часа, когда отображается график, поскольку эта информация наиболее актуальна. Тем не менее, пользователь должен по-прежнему иметь возможность прокручивать данные, полученные после первых трех часов, что означает, что ограничение максимального значения по оси x не является вариантом.

Например: Есть две кривые. Первая кривая рисуется с использованием данных, захваченных в течение 4 часов, тогда как вторая кривая создается из данных, захваченных за 18 часов.

В текущей версии моя программа изначально отображает все данные графика, который отображается, что означает, что первая кривая показывает три часа очень релевантных данных, в то время как 1 час не так важной информации также отображается. «Отношение» второй кривой составляет от 3 до 15 (очень важные данные по сравнению с регулярными данными). В результате отображается различное количество важной важной информации, когда пользователь сравнивает две кривые, что усложняет пользователю сравнение этих данных, так как он должен корректировать масштаб вручную.

РЕДАКТИРОВАТЬ 01.04.2015 15:46

Для установки начального диапазона я использую метод экземпляра XYMultipleSeriesRenderer в setInitialRange(double[] initialRange);, который не влияет на график вообще. Ниже вы можете увидеть мое заявление (currentlyProcessedCurve.getRecordStart() является экземпляром DateTime Joda и furhtermore это значение х из первой отображаемой точки):

public static final int CHART_X_AXIS_INITIAL_MAX = 3; 
public static final int CHART_MARGIN_PAN = 45; 
... 
double[] initialRange = { currentlyProcessedCurve.getRecordStart().minusMinutes(ApplicationSettings.CHART_MARGIN_PAN).toDate().getTime(), currentlyProcessedCurve.getRecordStart().plusHours(ApplicationSettings.CHART_X_AXIS_INITIAL_MAX).toDate().getTime(), 0, 600 }; 
currentDatasetRenderer.setInitialRange(initialRange); 

TIDE (Edit конец)

На скриншоте ниже приблизительно показывает как должна выглядеть изначальная кривая (просто для того, чтобы сделать это ясно: Пожалуйста, обратите внимание только на фигуры графов, поскольку они должны выглядеть равными -> Что я пытаюсь сказать: я знаю, что ось x и метка оси y из двух скриншотов разные, но у меня пока нет хороших фотографий):

desired initial range

Наконец, следующий скриншот показывает, как кривая выглядит при отображении:

current initial range

Для предоставления пользователю сравнить кривые я запер у оси масштабирования.

Любая помощь очень ценится. Заранее спасибо!

ответ

0

Вместо использования XYMultipleSeriesRendererInstance.setInitialRange() Мне пришлось установить начальные значения x, используя XYMultipleSeriesRendererInstance.setXAxisMin(), а также XYMultipleSeriesRendererInstance.setXAxisMax().

double xMinValue = ...; 
double xMaxValue = ...; 
currentDatasetRenderer.setXAxisMin(xMinValue); 
currentDatasetRenderer.setXAxisMax(xMaxValue); 
1

Считаете ли вы вариант панорамирования?

С помощью этой опции вы можете ограничить максимум оси, и на вашем графике будут показаны важные данные при запуске, в то время как пользователь может прокручивать влево или вправо (где бы вы не располагали менее важными точками данных).

Все, что вам нужно сделать, это:

  • набора сковорода включен для оси вы должны
  • пределов набора кастрюль (так что пользователь не может прокручивать мимо последней точки данных)

Надежды это помогает, Cheers.

+0

Спасибо, используя pan, определенно улучшил мою программу, так как пользователь больше не может прокручивать диаграмму «нирвана». Тем не менее, внутренний диапазон диаграммы еще не изменился. Для этого я обнаружил метод setInitialRange экземпляра XYMultipleSeries. Тем не менее этот метод, похоже, не влияет на график, хотя разработчик уже исправил такую ​​проблему (https://code.google.com/p/achartengine/issues/detail?id=60). – Lukas

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