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

Сразу скажу, что текста много не будет. Моя цель - познакомить, а вы уже сами решите, углубляться в изучение данной возможности или не стоит.
Как видим, сайт посвящен землетрясениям, которые происходят по всему миру. И особенность данного ресурса в том, что именно тут мы можем получить данные в формате словарей JSON. А это значит, что с ними в Python мы можем делать всё, что угодно. Мы же сделаем следующее:
получим данные;
построим карту;
нанесем на карту маркеры землетрясения;
продемонстрируем разрушительность каждого землетрясения;
дадим возможность отслеживать, где именно землетрясение произошло.
Выбираем на сайте в левой темно-синей колонке Earthquakes, затем Latest Earthquakes, находим в нижнем левом углу кнопку Download, жмем ее и далее открываем файл в формате GeoJson. Также есть много других форматов, которые можно красиво обработать.

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

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

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

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

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

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

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

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

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

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

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