Как изменить визуализацию, не изменяя при этом себе. PyDeck

PyDeck - библиотека Python с открытым кодом. Она позволяет с лёгкостью создавать гибко настраиваемые графики, гистограммы и другие средства визуализации данных. Всего за несколько минут и пару строк кода можно создать стильный график.

PyDeck позволяет создавать слои, на которых мы отображаем данные. Например, на одном слое мы можем отобразить данные за один период, а на другом – за другой период. При этом мы можем изобразить их разным цветом, размером и формой.

Одно из главных преимуществ – визуализация данных на карте нашей планеты.

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

pip install pydeck

Для примера использования библиотеки PyDeck необходим датасет. Я выбрал следующий: “Breweries & Brew Pubs in the USA”. В нём отображены все пабы и пивные магазины в городах США.

Скачать данный датасет можно по ссылке https://data.world/datafiniti/breweries-brew-pubs-in-the-usa

Выглядит он следующим образом:

Как изменить визуализацию, не изменяя при этом себе. PyDeck

Здесь мы можем увидеть 7000 строк, содержащих названия городов, категорию заведений и т.д. Нас же интересует колонка “city”, где указан город, в котором расположен данный объект.

Для построения карты нам необходимы координаты, получить их можно из датасета, содержащего все города США и их координаты.

Найти такой можно по ссылке:

Перейдем к коду.

Импортируем необходимые библиотеки:

import pydeck as pdk import pandas as pd

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

data = pd.read_csv('8260_1.csv') cities = pd.read_csv('uscities.csv')[[‘city’, ‘lat’, ‘lng’]] data = pd.merge(data,cities, on ='city')

Далее переходим непосредственно библиотеке PyDeck.

Её главная особенность – наличие слоёв. Их можно создавать столько, сколько нам необходимо для задачи. Для нашего же случая, достаточно использовать один.

Итак, начнём.

layer = pdk.Layer( #выбираем необходимый слой для нашей задачи. Данный слой автоматически подсчитывает количество точек с одинаковой координатой и выводит данные, визуально различая их по количеству совпадений (размер и цвет) 'HexagonLayer', #передаем наш dataframe data, #указываем в каких столбцах содержатся данные о координатах объекта get_position='[lon, lat]', auto_highlight=True, #параметр, отвечающий за инкремент длины столбца значения на карте elevation_scale=75, pickable=True, #диапазон длинны столбцов значений на карте elevation_range=[0, 3000], extruded=True)

Далее необходимо настроить карту так, чтобы камера при запуске указывала на США:

# Set the viewport location view_state = pdk.ViewState( #координаты longitude=-73.1, latitude=40.1, zoom=6, #наклон камеры pitch=40.5)

Готово, осталось всего лишь создать экземпляр класса Deck из библиотеки PyDeck и передать в него данные:

r = pdk.Deck( #передаем слои (в нашем случае он один) layers=[layer], initial_view_state=view_state, #указываем подсказки, которые будут отображаться, при наведении курсора на объекты. tooltip={ 'html': '<b>Elevation Value:</b> {elevationValue}', 'style': { ‘color': 'white' } } )

Все готово, осталось сохранить всё в html-страницу:

r.to_html('1.html')

Открываем файл в браузере и видим результат:

Как изменить визуализацию, не изменяя при этом себе. PyDeck

Приблизим карту:

Как изменить визуализацию, не изменяя при этом себе. PyDeck

Как видно на странице, чем больше объектов – пабов и пивных магазинов в одном городе – тем больше и столбец.

Данный тип графиков позволяет наглядным образом отобразить места с наименьшими и наибольшими значениями какого-то определенного показателя как на карте любой страны, так и на полной карте нашей планеты. Как вариант, можно отобразить картину актуальной на сегодняшний день темы заболеваний COVID-19. График покажет количество заражений в каждой стране, а также наглядно отобразит страны с наибольшими и наименьшими показателями.

С другими типами слоёв данной библиотеки можно ознакомиться по ссылке: https://deckgl.readthedocs.io/en/latest/

33
2 комментария
Автор

Добрый день. Пример, который подошел бы для наглядной иллюстрации, был выбран рандомно. Основной критерий, чтобы выборка была в пределах одной страны в разных городах или штатах.

Другого примера не было?