Я думаю, что я с Нилом здесь ... должен быть какой-то способ, которым эти данные могут быть обработаны перед отображением ... Я имею в виду, как этот объем данных может даже отображаться в окне? Вы говорите, что линия имеет 100000 точек ... если бы каждая из этих точек была уникальной в плоскости X, Y, 100000 точек полностью заполнили бы окно дисплея 300x300. Подобные 20 строк полностью насыщают обычный дисплей с разрешением 1024x1280.
Предположительно, это не может быть тем, что вы ищете, поэтому я предполагаю, что должно быть много случаев, когда точки перекрываются. Предварительная обработка данных для устранения дублирующих точек данных поможет значительно уменьшить размер данных.
Трудно точно знать, как этот ответ подходит, или дать более точные инструкции без дополнительных подробностей, но если у вас есть вопросы или разъяснения, отредактируйте свой вопрос, и я изменю свой ответ (или удалю его, если я неверно истолкованы.)
Ответ на редактирование 1:
Я думаю, что способ подойти к размышлению для этого состоит в том, чтобы признать, что для любого данного представления вы можете показать только столько точек данных, сколько у вас горизонтального разрешения, так что вы можете ограничить загрузку данных этим.
Из того, что я слышу (и я признаю, что у меня есть очень немного деталей), эту проблему можно уменьшить до:
- Определение количества точек (по горизонтальному разрешению)
- Расчет этих точек на основе данных, горизонтальной прокрутки, масштабирования и любых эвристик.
- Динамическая загрузка этих данных
Звучит неплохо, и ваша первоначальная проблема (из-за того, что в системе слишком много данных) исчезла. Это оставляет вас со второй проблемой, как рассчитать высоту загружаемых данных.
У меня есть другой тип или устройства, где "взлеты и падения" ОГРОМНЫ и
Пользователь хотел бы видеть ВСЕ данные только в одной «диаграмме» без увеличения.
Таким образом, в этой ситуации просто из простого взгляда легко увидеть, что
что-то случилось на чтениях ...
Есть ряд потенциальных трудностей, которые я вижу здесь ...
Если временные рамки этих событий слишком короткие, они не будут видны на наивно нарисованном графике. Если у вас есть 100000 точек на определенном линейном графике и ваша область просмотра по умолчанию имеет ширину 1000 пикселей без масштабирования, вы видите только 1 из 100 точек данных. Например, если некоторый всплеск длится до 10 точек данных, если вы не сделаете что-то особенное, есть большая вероятность, что он не будет виден на графике (поэтому пользователь не будет знать, как «увеличить» для большего разрешения). И как вы определяете высоту, на которой строится точка? Фактическое назначение данных в определенном месте? В среднем из 100 точек данных, которые покрывает пиксель? Скользящее среднее? Если не в среднем, вы можете пропустить шипы полностью. Если вы сделаете среднее значение, вы можете уменьшить амплитуду шипов или впадин, если они кратковременны.
Это, я думаю (и, опять же, я делаю много догадок), звучит как настоящий вызов. Попытка найти какой-либо способ отображения графика, который определенно не сможет отображать все данные за один раз, но может быть в состоянии каким-то образом динамически выделять интересующие объекты (вычисление, отметка и маркировка пиков и впадин с помощью обозначения на графике ... такие вещи.)