www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home
Занимательная история, выдающиеся люди, малоизвестные факты, находки, открытия, фальсификации. Присоединяйся!

Как создать интерактивную карту с помощью Plotly

Дата публикации Oct 17, 2018

«Коричневая деревянная картонная доска»Бретт ЗекнаUnsplash

Одна из моих любимых частей работы с данными - это, без сомнения, создание визуализаций. Изображения являются лучшим инструментом для передачи информации: они мгновенные, мозг может обрабатывать их в тысячи раз быстрее, чем слова. Изображения также универсальны, и они склонны дольше удерживаться в наших умах. Наконец, мы ленивые животные и по этой причине мы уделяем больше внимания визуальным элементам, а не словам. Сколько раз вы встречали кого-то нового, а потом пытались вспомнить его имя, в то время как его лицо было кристально чистым в вашей голове?

Я понял, как сильно я люблю создавать визуалы, работая научным сотрудником в академических кругах: насколько мне нравилось проводить эксперименты и численное моделирование, я действительно с нетерпением ждал того момента, когда смогу обработать все свои выводы и создать эти красивые, но мощные графики. Да, я также должен был написать статьи, чтобы описать весь процесс, рабочий процесс и теоретическое обоснование исследования, но возможность рассказать о многомесячной работе всего с несколькими изображениями была просто невероятной! Все это вступление состояло в том, чтобы убедить вас, что изображения важны, если вы еще не думали об этом. И особенно для Data Scientist, которому необходимо время от времени передавать информацию нетехнической аудитории.


На прошлой неделе или около того, я работал над моим проектом-замкнутым камнем, касающимся штормовых событий в США, работая с набором данных из ~ 11 000 наблюдений, содержащих геопространственную информацию. Моей первой мыслью было нанести все эти данные на карту, чтобы я мог сразу увидеть, какие области в наибольшей степени подвержены воздействию таких событий. Так как я работаю в Python, Geopandas станет непосредственной библиотекой, однако я хотел что-то более интерактивное. Что делать, если я хочу изменить стиль карты? Или, что, если я хочу видеть только грозы или только град? Я провел небольшое исследование и выяснил, что мне нужен сюжет. Я не смог найти ни одного хорошего учебника, который бы помог мне пройти через этот процесс, поэтому я просмотрел несколько примеров в Интернете, пытаясь дедуктивно понять, как это работает, с большим количеством проб и ошибок. По этой причине я решил написать этот пост вместе с тем фактом, что я тренируюсь и работаю над нейронными сетями для одного и того же проекта, и у меня есть время простоя, пока все эти эпохи идут взад-вперед.


Примечание: чтобы сделать что-то вроде того, что я собираюсь описать, вам понадобится аккаунт сplotlyтак же какMapBox, В частности, потому что вам понадобится токен доступа, который может быть созданВоти имя пользователя и ключ API, которые могут быть сгенерированыВот, Все это бесплатно. Я бы также порекомендовал вам хорошо разбираться в словарях Python, так как они очень важны для создания подобных карт, как вы заметите.

Я собрал данные изНациональный центр климатических данныхо штормовых событиях в США с 2000 года по настоящее время. Как обычно, я должен был сделатьмногоочистки, справиться с отсутствующими данными и разработать некоторые функции. На этоссылкаВы можете найти файл .csv, используемый для этой цели, и для моего проекта capstone в целом. Данные содержат информацию о широте и долготе явления, что является для нас основополагающим для того, чтобы наносить на карту. Это также указывает, была ли это гроза, град, внезапное наводнение и т. Д. В общей сложности для семи различных категорий. Величина штормового события, в каком состоянии и когда оно произошло

Прежде чем приступить к работе над реальным сюжетом, нам нужно импортировать и назначить несколько вещей. Здесь нам нужен токен доступа от Mapbox, а также имя пользователя и ключ API от Plotly.

import plotly.plotly as py
import plotly.graph_objs as go
import plotly
import pandas as pd# setting user, api key and access token
plotly.tools.set_credentials_file(username='your_username_here', api_key='your_api_key_here')
mapbox_access_token = 'your_access_token_here'

Чтобы сгенерировать нашу фигуру, нам понадобятся две вещи:данныеа такжерасположение, Наша переменнаяданныебудет список из семи словарей (по одному на тип события), каждый из которых содержит значения широты и долготы, а также название типа шторма и характеристики маркера для графика. Переменнаярасположениеэто словарь, содержащий все, что касается изображения, которое не имеет прямого отношения к данным: раскрывающиеся меню, аннотации, как мы хотим их отформатировать и где мы хотим разместить их.

Данные

После прочтения и присвоения кадра данныхdfпеременной, я создал список, содержащий имена семи различных категорий штормов и назвал егоevent_types, Я зациклился на этом списке и использовал его для фильтрации кадра данных, создавая словарь для каждого типа события и добавляя его кданныесписок. Таким образом, у меня есть свой список словарей,данные,

создаваяданныепеременная.

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

Мы сделали сданныеи теперь эторасположениеЧеред, который, безусловно, потребует больше работы.

раскладка

Давайте установим основные настройки карты.

Инициализация макета карты.

Теперь мы можем начать добавлять вещи на карту, чтобы настроить ее и сделать интерактивной, как нам нравится.

Макет [ «примечание»]

Допустим, я хочу поставить черный ящик с белым текстом на нем, который указывает, что мои баллы представляют собой только штормовые события с 2000 года по настоящее время, которые нанесли более 50 тысяч долларов экономического ущерба. Некоторые статические подсказки, подобные этой, попадут поданнотированиеключрасположениесловарь: значение, соответствующееаннотированиедолжен быть список словарей, а в данном конкретном случае - список, содержащий только один словарь, поскольку я хочу разместить только одну аннотацию на карте. Это кажется громоздким на словах, но сделать это определенно легче, чем объяснить это.

Аннотация на карте.

Теперь пришло время для выпадающих меню, которые должны быть назначеныupdatemenusключрасположениетолковый словарь.

Макет [ «updatemenus»]

Я хочу добавить два раскрывающихся меню: одно, чтобы выбрать тип штормового события для визуализации, на случай, если мы хотим рассмотреть только тип, а не все из них, а другое раскрывающееся меню позволит нам изменить тип карты на фоне, который по умолчанию темный. Название и стили доступных карт можно найти на Mapbox.

Каждое раскрывающееся меню снова определяется через словарь, и все эти словари будут включены в список, который мы назначимlayout['updatemenus'],

Добавление выпадающих меню на карту.

Макет [ «название»]

Если вы хотите, вы можете легко назначить заголовок для вашего сюжета. Я сделал это, просто делаяlayout['title'] = 'Storm Events',

Создайте сюжет!

Как только у нас естьданныеа такжерасположениепо порядку, мы можем сгенерировать график, просто запустив:

figure = dict(data = data, layout = layout)
py.iplot(figure, filename = 'put_your_name_here')

И вуаля!

Вы можете увеличивать, уменьшать масштаб, выбирать то, что вы хотите визуализировать в верхнем меню, и изменять тип карты в меню внизу. Довольно круто! Я с нетерпением жду работы над некоторыми другими сюжетами, подобными этим, теперь, когда я узнал, как это сделать. Надеюсь, вы нашли это полезным!


Не стесняйтесь проверить:

Github хранилище этого кода

другие мои средние посты.

мой профиль в LinkedIn.

Спасибо за чтение!

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map