разница между даташедером и другими библиотеками черчения - PullRequest
0 голосов
/ 01 октября 2018

Я хочу понять четкую разницу между Datashader и другими графическими библиотеками, например, plotly/matplotlib и т. Д.

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

  2. Но что именно является причиной того, что datashader работает быстро и не зависает в браузере, и как именно выполняется построение графиков, котороене загружает браузер ????

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

Плз объяснить, я не могу понять, вход и выход ясно.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Может быть полезно сначала подумать о Даташедере не по сравнению с Матплотлибом или Плотли, а по сравнению с numpy.histogram2d.По умолчанию Datashader превратит длинный список точек (x, y) в двумерную гистограмму, как в histogram2d.Это требует только простого приращения ячейки сетки для каждой новой точки, которая легко ускоряется до скоростей машинного кода с помощью Numba и тривиальна для параллелизации с Dask.Полученный массив в таком случае будет иметь максимальный размер экрана вашего дисплея, независимо от того, насколько велик ваш набор данных.Таким образом, дешево обрабатывать в отдельной программе, которая добавляет оси, метки и т. Д., И это никогда не приведет к сбою вашего браузера.

В отличие от этого, для программы построения графиков, такой как Plotly, потребуется преобразовать каждую точку данных в JSON.или другое сериализованное представление, передайте его JavaScript в браузере, сделайте так, чтобы JavaScript рисовал фигуру в графический буфер, и заставьте каждую такую ​​фигуру поддерживать всплывающие и другие интерактивные функции.Эти интерактивные функции великолепны, но это означает, что Plotly выполняет гораздо больше работы для каждой точки данных, чем Datashader, и требует, чтобы браузер мог хранить все эти точки данных.Единственное вычисление, которое Datashader должен сделать с вашими полными данными, - это линейное масштабирование местоположений x и y каждой точки для соответствия сетке, а затем увеличение значения сетки, что намного проще, чем то, что делает Plotly.

Сравнение с Matplotlib немного сложнее, потому что с бэкэндом Agg Matplotlib также выполняет предварительный рендеринг в графический буфер фиксированного размера перед отображением (что-то вроде Datashader).Но Matplotlib был написан до Numba и Dask (что усложняет ускорение), он все равно должен рисовать фигуры для каждой точки (а не просто приращение), он не может полностью распараллелить операции (потому что более поздние точки перезаписывают более ранниев Matplotlib), и предоставляет сглаживание и другие приятные функции, недоступные в Datashader.Опять же, Matplotlib проделывает намного больше работы, чем Datashader.

Но если вы действительно хотите увидеть точное 2D-распределение миллиардов точек данных, Datashader - это путь, потому что это действительно все.делается.: -)

0 голосов
/ 01 октября 2018

Из документов datashader ,

datashader предназначен для "растеризации" или "агрегирования" наборов данных в обычные сетки, которые можно просматривать как изображения, что делает его простым и быстрымчтобы увидеть свойства и шаблоны ваших данных.Datashader может построить миллиард точек в секунду или около того на ноутбуке 16 ГБ и легко масштабироваться до внешней или распределенной обработки для еще больших наборов данных.

Никаких хитростей не происходитв любой из этих библиотек - рендеринг огромного количества точек занимает много времени.То, что делает datashader - это перенос бремени визуализации с рендеринга на вычисления.Есть очень веская причина, по которой вы должны создать холст до построения инструкций в даташедере.Первым шагом в конвейере передачи данных является растеризация набора данных, другими словами, он аппроксимирует положение каждого фрагмента данных, а затем использует функции агрегирования для определения интенсивности или цвета каждого пикселя.Это позволяет даташадеру строить огромное количество точек;даже больше точек, чем может храниться в памяти.

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

...