РЕШЕНИЕ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 из двух скриншотов разные, но у меня пока нет хороших фотографий):
Наконец, следующий скриншот показывает, как кривая выглядит при отображении:
Для предоставления пользователю сравнить кривые я запер у оси масштабирования.
Любая помощь очень ценится. Заранее спасибо!
Спасибо, используя pan, определенно улучшил мою программу, так как пользователь больше не может прокручивать диаграмму «нирвана». Тем не менее, внутренний диапазон диаграммы еще не изменился. Для этого я обнаружил метод setInitialRange экземпляра XYMultipleSeries. Тем не менее этот метод, похоже, не влияет на график, хотя разработчик уже исправил такую проблему (https://code.google.com/p/achartengine/issues/detail?id=60). – Lukas