Folium
- это библиотека, которая позволяет рисовать карты, маркеры, а также отмечать собственные данные.
Про установку см. здесь
Folium
позволяет выбирать поставщика карты, это определяет стиль и качество карты: для простоты рассмотрим OpenStreetMap
(это значение по умолчанию).
Начнем с основ, мы нарисуем простую карту, на которой ничего не будет.
#!pip3 install folium
import folium
m1 = folium.Map(location=[59.93, 30.33],
tiles='openstreetmap', # оно такое по умолчанию
zoom_start=13)
m1
# сохранение карты в html
m1.save('map1.html')
Cоздали интерактивный файл с картой, который можно перемещать и масштабировать.
Результат HTML-документа можно увидеть здесь.
Можем добавить маркеры на карту:
m2 = folium.Map(
location=[59.93, 30.33],
tiles='openstreetmap',
zoom_start=14)
folium.Marker(
location=[59.94, 30.35],
popup='<i>Здесь был Вася</i>',
tooltip='Метка 1').add_to(m2) # попробуйте добавить: icon=folium.Icon(icon="cloud")
folium.Marker(
location=[59.92, 30.32],
popup='<b>Хорошее кафе</b>',
tooltip='Метка 2',
icon=folium.Icon(color="green")).add_to(m2) # подкрасили метку на карте
folium.CircleMarker(
location=[59.93, 30.33],
radius=50,
popup="Апраксин двор",
color="#3186cc",
fill=True,
fill_color="#3186cc",
).add_to(m2) # добавили окружность
m2
# сохранение карты в html
m2.save('map2.html')
Результат HTML-документа можно увидеть здесь.
folium
позволяет передавать любой HTML объект в виде всплывающего окна, включая графики bokeh
, есть встроенная поддержка визуализаций Altair для любого типа маркера в виде всплывающего окна.
Подробнее см. здесь.
По умолчанию tiles
установлено значение OpenStreetMap
, но можно указать: Stamen Terrain
, Stamen Toner
.
import json
import requests
url = "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
vis = json.loads(requests.get(f"{url}/vis1.json").text)
m3 = folium.Map(location=[59.93, 30.33],
zoom_start=14,
tiles="Stamen Terrain")
folium.Marker(
location=[59.93, 30.33],
popup=folium.Popup(max_width=450).add_child(
folium.Vega(vis,
width=450,
height=250)
),
).add_to(m3)
m3
# сохранение карты в html
m3.save('map3.html')
Результат HTML-документа можно увидеть здесь.