Может быть полезно сначала подумать о Даташедере не по сравнению с Матплотлибом или Плотли, а по сравнению с 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 - это путь, потому что это действительно все.делается.: -)