Вдохновленная книгой Эрика Мэтиза "Изучаем Python. Программирование игр, визуализация данных, веб-приложения", я решила написать об одной из возможности библиотеки Plotly. В данной публикации я рассмотрю визуализацию данных, полученных с сайта https://earthquake.usgs.gov/earthquakes/feed

Сайт earthquake.usgs.gov
Сайт earthquake.usgs.gov

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

Как видим, сайт посвящен землетрясениям, которые происходят по всему миру. И особенность данного ресурса в том, что именно тут мы можем получить данные в формате словарей JSON. А это значит, что с ними в Python мы можем делать всё, что угодно. Мы же сделаем следующее:

  • получим данные;

  • построим карту;

  • нанесем на карту маркеры землетрясения;

  • продемонстрируем разрушительность каждого землетрясения;

  • дадим возможность отслеживать, где именно землетрясение произошло.

Выбираем на сайте в левой темно-синей колонке Earthquakes, затем Latest Earthquakes, находим в нижнем левом углу кнопку Download, жмем ее и далее открываем файл в формате GeoJson. Также есть много других форматов, которые можно красиво обработать.

Сайт earthquake.usgs.gov
Сайт earthquake.usgs.gov

И вот перед нами самый обыкновенный словарь JSON, который, что очень важно, содержит данные координат землетрясений, произошедших за последний месяц.

данные в формате geojson
данные в формате geojson

Можно скопировать весь словарь. Но лично я предпочла скопировать лишь ссылку. Этого вполне достаточно для Python, чтобы он обработал данные должным мне образом (если это не offline режим).

А вот и ссылка

Построение контурной карты и нанесение маркеров землетрясений

Итак, открываем PyCharm (или ту IDE, к которой вы привыкли), создаем основной файл и импортируем нужные функции.

Основной файл
Основной файл

Если plotly у вас не установлен, то это необходимо сделать с помощью команды "pip install plotly" в терминале.

Поскольку я обрабатывала данные с помощью ссылки, мне потребовалось создать некоторые функции:

файл utils.py
файл utils.py

Саму ссылку я положила в файл new.json, который поместила в директорию "data".

new.json
new.json

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

приводим данные в читабельный вид
приводим данные в читабельный вид

Но в данном случае, файл eq.json должен содержать в себе не ссылку, а именно сам словарь JSON. В файле readable_eq.json появится словарь в следующем виде:

А если этот словарь открыть на github, то нашему вниманию представляется следующая карта:

Данные geojson, открытые на github
Данные geojson, открытые на github

Переводить данные в читабельный вид вовсе не обязательно. Даже в сложночитаемом формате python отлично с ними справляется. Лично я этого не делала.

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

Основной файл программы
Основной файл программы

После импорта библиотеки, извлекаем функции из файла utils.py. А далее получаем данные в необходимом нам формате и объеме. Это долгота(lons), широта(lats) и магнитуда(mag).

Основной файл программы
Основной файл программы

Данные наносим на карту, присваиваем имя данной визуализации "Global Eathquakes", выбираем и присваиваем размер маркера(5), цветовую шкалу (Viridis), которая имеет градацию цвета от желтого(слабые землетрясения), до синего(наиболее разрушительные землетрясения). Имя цветовой шкалы(Magnitude), расположенной справа от карты, также можно изменять.

Запускаем файл и получаем следующую карту:

Результат визуализации данных с помощью Plotly
Результат визуализации данных с помощью Plotly

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

Ну вот и всё, о чем я хотела рассказать, касаемо визуализации данных с помощью Plotly. Оставляю ссылку на Github.