Веб-график для «тонн» очков? - PullRequest
3 голосов
/ 02 апреля 2012

Я хотел бы знать, есть ли хорошие веб-решения для отображения диаграмм "огромных наборов данных", я безуспешно пробовал amcharts и Highcharts Stock (решения jquery).

В начале ониработали, но в данный момент «хром» говорит мне, что память javascript заполнена, и страница падает.

Иногда мне нужно показывать более 20 строк, каждая из которых содержит более100 000 баллов, так что в итоге у меня могут появиться гигантские массивы jquery, которые наверняка приведут к сбою интернет-браузера.

В данный момент я открыт для перехода на какое-то flash, silverlight или другое решение (не java-апплет, потому что яиспользуя C #).

Что вы, ребята, рекомендуете?

ОБНОВЛЕНИЕ # 1

Например: одна из целей этого приложения - просмотр каналов ЭКГ,Человек будет нести устройство с несколькими «датчиками» (давайте определим 10 или 12, более или менее), устройство будет сохранять данные каждую секунду (или иногда даже в более короткие интервалы).И могут быть случаи, что человек будет использовать эту систему в течение 3 дней).

Минимальные данные: 60 секунд * 60 минут * 24 часа * 3 дня = 259 200 баллов за линию.8 строк или более => 2,073,600 суммарных баллов

Удобство использования: Ну, в этой области здравоохранения обычно «показания» будут схожими, максимумов или минимумов недостаточно, чтобы их можно было распознать в данных за 3 дня.Таким образом, для этого примера лучше всего загрузить данные именно тогда, когда это необходимо> слайд панорамирования / масштабирования показывает всего 1 час, а когда он перемещается к другому, тогда AJAX получает остальные данные.Конечно, это путь.НО это не единственный случай в моей системе.

У меня есть другой тип или устройства, где "максимумы и минимумы" огромны, и пользователь хотел бы видеть ВСЕ данные только в одной "диаграмме" без увеличенияв. Таким образом, в этой ситуации просто из простого взгляда легко увидеть, что что-то произошло на показаниях, тогда пользователь может увеличить масштаб, и поскольку данные уже находятся в памяти, нет необходимости делать больше вызовов AJAX и обновлять диаграмму..

Умный путь: обрабатывайте данные таким образом, чтобы «уменьшить» количество точек, когда мы смотрим на больший «масштаб».Конечно, это мудрый путь, но, опять же, бывают случаи, когда результат некоторой математической обработки «подделывает» и скрывает реальные показания, и, в конце концов, есть некоторые «поведения», которые не будут отображаться надиаграмма.

Итак, сейчас мне действительно нужно найти способ отобразить все эти точки.

Примечание. Я очень ценю ваши отзывы, ребята.

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

Я думаю, что я с Нилом здесь ... должен быть какой-то способ, которым эти данные могут быть обработаны перед отображением ... Я имею в виду, как этот объем данных может даже отображаться в окне? Вы говорите, что линия имеет 100000 точек ... если бы каждая из этих точек была уникальной в плоскости X, Y, 100000 точек полностью заполнили бы окно дисплея 300x300. Подобные 20 строк полностью насыщают обычный дисплей с разрешением 1024x1280.

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

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

Ответ на редактирование 1:

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

Из того, что я слышу (и я признаю, что у меня есть очень немного деталей), эту проблему можно уменьшить до:

  • Определение количества точек (по горизонтальному разрешению)
  • Расчет этих точек на основе данных, горизонтальной прокрутки, масштабирования и любых эвристик.
  • Динамическая загрузка этих данных

Звучит неплохо, и ваша первоначальная проблема (из-за того, что в системе слишком много данных) исчезла. Это оставляет вас со второй проблемой, как рассчитать высоту загружаемых данных.

У меня есть другой тип или устройства, где "взлеты и падения" ОГРОМНЫ и Пользователь хотел бы видеть ВСЕ данные только в одной «диаграмме» без увеличения. Таким образом, в этой ситуации просто из простого взгляда легко увидеть, что что-то случилось на чтениях ...

Есть ряд потенциальных трудностей, которые я вижу здесь ...

Если временные рамки этих событий слишком короткие, они не будут видны на наивно нарисованном графике. Если у вас есть 100000 точек на определенном линейном графике и ваша область просмотра по умолчанию имеет ширину 1000 пикселей без масштабирования, вы видите только 1 из 100 точек данных. Например, если некоторый всплеск длится до 10 точек данных, если вы не сделаете что-то особенное, есть большая вероятность, что он не будет виден на графике (поэтому пользователь не будет знать, как «увеличить» для большего разрешения). И как вы определяете высоту, на которой строится точка? Фактическое назначение данных в определенном месте? В среднем из 100 точек данных, которые покрывает пиксель? Скользящее среднее? Если не в среднем, вы можете пропустить шипы полностью. Если вы сделаете среднее значение, вы можете уменьшить амплитуду шипов или впадин, если они кратковременны.

Это, я думаю (и, опять же, я делаю много догадок), звучит как настоящий вызов. Попытка найти какой-либо способ отображения графика, который определенно не сможет отображать все данные за один раз, но может быть в состоянии каким-то образом динамически выделять интересующие объекты (вычисление, отметка и маркировка пиков и впадин с помощью обозначения на графике ... такие вещи.)

0 голосов
/ 02 апреля 2012

Попробуйте График линейного увеличения из конюшен FusionCharts.

Я сам создал диаграммы с 27 000 точек данных; и после начального времени загрузки график работал гладко.

Вот запись в блоге о линейном графике увеличения - http://blog.fusioncharts.com/2011/10/stuck-between-massive-historical-data-and-daily-intricacies-zoom-line-chart-to-the-rescue/

В качестве бонуса вы можете отобразить диаграмму в чистом JavaScript или Flash.

И это также хорошо работает с серверными языками. Проверьте их документы для большего количества материала для чтения - http://docs.fusioncharts.com/

...