Имеют ли высокие диаграммы (или ваадин) встроенные способности для использования алгоритма, такого как Рамер-Дуглас-Пеккер? - PullRequest
0 голосов
/ 14 февраля 2019

Используя диаграммы Ваадина (которые в конечном итоге используют HighCharts), я пытаюсь построить линейный график с более чем 10000 точек.Это на самом деле работает достаточно быстро (пара секунд, чтобы построить).Тем не менее, мне интересно, может ли это быть намного быстрее, так как я столкнулся с аналогичной проблемой при использовании диаграмм JavaFx и обнаружил, что люди реализовали решение, использующее «алгоритм Рамера-Дугласа-Пекера», чтобы таким образом уменьшить количество точек данныхчто это в основном заметно человеческому глазу, когда оно получено.(Вот оригинальный ответ SO: Проблема производительности с JavaFX LineChart с 65000 точками данных ).

Итак, есть ли у старших диаграмм такая встроенная функциональность?Если нет, то Ваадин?Или мне нужно воссоздать эту логику в Vaadin, что означает, что мне, в конечном счете, нужно найти библиотеку Java для алгоритма Рамера-Дугласа-Пекера ...

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

При использовании большинства типов диаграмм, когда вы работаете с диаграммами Ваадина, на самом деле имеет больше смысла применять алгоритм для уменьшения количества точек данных в логике на стороне сервера, например, при копировании данных из исходного источника данных в DataSeries, которые вы используете в диаграмме.Это не только уменьшает время рендеринга, но и время загрузки данных в браузер.

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

0 голосов
/ 14 февраля 2019

К сожалению, Highcharts не имеет встроенного "алгоритма Рамера-Дугласа-Пекера".Тем не менее, он имеет модуль повышения , который позволяет отображать тысячи точек в миллисекундах.

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

Справочник по API:

Демо:


Более того, используя HighstockВы можете использовать dataGrouping .

Группировка данных - это концепция выборки значений данных в большие блоки для облегчения чтения и повышения производительности диаграмм JavaScript.

Справочник по API:

Демонстрация:

...