Построение графика: сохраняются только самые актуальные данные - PullRequest
8 голосов
/ 13 января 2011

Для сохранения полосы пропускания и для того, чтобы не создавать собственные изображения / графики самостоятельно, я планирую использовать Google API для создания диаграмм:

http://code.google.com/apis/chart/

, который работает просто путем выдачипотенциально длинный) GET (или POST), а затем Google создает и обслуживает график самостоятельно.

На данный момент у меня есть графики, составленные из примерно двух тысяч записей, и я хотел бы сократить это до некоторойпроизвольное количество записей (например, сохраняя только 50% исходных записей или 10% исходных записей).

Как я могу решить, какие записи я должен сохранить, чтобы мой новый график был ближе к исходному графику?

Это какая-то проблема подбора кривой?

Обратите внимание, что я знаю, что могу сделать POST для API Google Chart с данными до 16 КБ, и этого может быть достаточно для моих нужд, но мне все еще любопытно

Ответы [ 3 ]

6 голосов
/ 29 июля 2014

Плагин flot-downsample для библиотеки графиков Flot JavaScript может выполнить то, что вы ищете, до определенного момента.

Цельпопытаться сохранить визуальные характеристики исходной линии, используя значительно меньшее количество точек данных.

Исследование этого алгоритма документировано в диссертации автора .

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

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

4 голосов
/ 13 января 2011

То, что вы хотите сделать, известно как понижающая дискретизация или decimation .По сути, вы фильтруете данные, а затем отбрасываете N - 1 из каждых N выборок (прореживание или понижение выборки с коэффициентом N).Необработанный фильтр просто берет локальное скользящее среднее.Например, если вы хотите вычеркнуть с коэффициентом N = 10, замените каждые 10 баллов средним из этих 10 баллов.

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

1 голос
/ 13 января 2011

График (данные временных рядов) - сложная задача. Это все равно что решить в тексте, что является «соответствующей» частью для автоматического ее обобщения. Я предлагаю вам использовать одну из самых уважаемых библиотек для поиска «образцов интереса» в данных временных рядов по Имон Кеог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...