Folium: Visualisez les données sur une carte avec Python

Folium est une bibliothèque qui visualise les données sur une carte.

JavaScript Dépliant Il existe une bibliothèque qui prend en charge le traitement interactif des cartes On peut dire que Folium a analysé cette bibliothèque et l'a rendue disponible en Python.

Environnement

Je n'ai pas trouvé la version correspondante sur la page officielle. En regardant les catégories sur pypi, il semble que les systèmes 2 et 3 fonctionneront.

Exécutez la commande suivante dans un environnement Python quelque peu nouveau. C'est «le plus facile».

installation de folium


$ pip install folium

Si vous ne voulez pas polluer l'environnement, séparez-le au préalable avec venv. J'ai mis en place un conteneur jetable.

FROM python:3.5.2-alpine

RUN pip install folium

Démarrer le conteneur


#Créer une image folium avec un Dockerfile dans le répertoire courant
docker build -t folium . 

#Lancer le conteneur à partir de l'image folium
docker run -it -v /home/nanakenashi/workspace:/workspace folium /bin/sh

Se référer au fichier html craché de Folium Le répertoire courant (espace de travail) est monté à l'intérieur du conteneur.

Essaie

Merci à QuickStart. Tout d'abord, démarrez le shell interactif de Python et chargez le folium.

Préparation


$ python
Python 3.5.2 (default, Nov 17 2016, 22:46:45)
[GCC 5.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import folium

Essayez de faire une carte

Créez un objet Map avec les coordonnées et le niveau de zoom dans une main, nommez-le et enregistrez-le. Plus le niveau de zoom est élevé, plus le niveau de zoom est élevé.

Créer et enregistrer des cartes


>>> map1 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
>>> map1.save('/workspace/map1.html')

Essayez d'ouvrir le fichier html enregistré dans votre navigateur.

map_html.png

Je me demande si les coordonnées spécifiées dans location étaient le centre Je pensais avoir vu l'Australie hors du centre, mais je vais passer à autre chose.

Essayez de mettre un marqueur

Ajouter un marqueur


>>> map2 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
>>> folium.Marker([-31.253218, 146.921099], popup='New South Wales').add_to(map2)
<folium.map.Marker object at 0x7fc1c73bd048>
>>> map2.save('/workspace/map2.html')

Ouvrez la map2.html enregistrée.

map2_html.png

Un marqueur est apparu. Au fait, si vous cliquez dessus, la chaîne de caractères spécifiée par popup sera affichée.

marker.png

Essayez de faire quelque chose comme la visualisation

Bien que diverses options de visualisation soient utilisées même dans Quickstart Cette fois, je vais me concentrer sur le marqueur circulaire et mettre quelque chose. Premier essai.

Afficher les marqueurs circulaires


>>> map3 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)                                                                             
>>> folium.CircleMarker([-31.253218, 146.921099],
...                     radius=100000,
...                     popup='New South Wales',
...                     color='#3186cc',
...                     fill_color='#3186cc',
...                    ).add_to(map3)
<folium.features.CircleMarker object at 0x7fc1c7408a20>
>>> map3.save('/workspace/map3.html')

Ouvrez map3 dans votre navigateur.

map3_html.png

Puisqu'il semble que la quantité puisse être exprimée par «rayon», reflétons une valeur numérique pour chaque ville. À ce stade, je n'ai pas besoin d'être interactif, je vais donc écrire un script.

Placer des marqueurs par ville


import folium

map4 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)

#Stocke les données pour chaque ville (initialement obtenues à partir d'un fichier DB ou csv)
states = (
    {'lat': -35.473468, 'lon': 149.012368, 'value': 1, 'name': 'Australian Capital Territory'},
    {'lat': -31.253218, 'lon': 146.921099, 'value': 2, 'name': 'New South Wales'},
    {'lat': -19.491411, 'lon': 132.550960, 'value': 3, 'name': 'Northern Territory'},
    {'lat': -20.917574, 'lon': 142.702796, 'value': 4, 'name': 'Queensland'},
    {'lat': -30.000232, 'lon': 136.209155, 'value': 5, 'name': 'South Australia'},
    {'lat': -41.454520, 'lon': 145.970665, 'value': 6, 'name': 'Tasmania'},
    {'lat': -37.471308, 'lon': 144.785153, 'value': 7, 'name': 'Victoria'},
    {'lat': -27.672817, 'lon': 121.628310, 'value': 8, 'name': 'Western Australia'}
)

#Poids pour rendre la taille du cercle facile à comprendre
WEIGHT = 100000

#Ajoutez des marqueurs pour chaque ville (car il est difficile d'augmenter le nombre, l'ajout de lots est un problème futur)
for state in states:
    folium.CircleMarker(
            [state['lat'], state['lon']],
            radius=state['value'] * WEIGHT,
            popup=state['name'],
            color='#3186cc',
            fill_color='#3186cc',
    ).add_to(map4)

map4.save('/workspace/map4.html')

Après avoir exécuté le script ci-dessus, affichez map4.html dans le navigateur.

map4_html.png

Le contenu de QuickStart donnait l'impression que c'était comme ça. Si vous souhaitez l'utiliser plus solidement, consultez la documentation Folium Il semble bon de vérifier également le [document Leaflet] original (http://leafletjs.com/reference-1.0.2.html).

Résumé

Je pense que Google Maps est souvent utilisé lors de la fourniture en tant que service Ces bibliothèques sont également utiles pour la recherche et les offres internes. Dans l'article, il était limité à une visualisation superficielle jusqu'à ce que le marqueur soit placé. Vous pouvez créer diverses expressions telles que la modification de la carte elle-même et l'organisation des polygones.

Jupyter Notebook semble être capable d'analyser plus interactivement Si vous l'avez utilisé, essayez-le.

Recommended Posts

Folium: Visualisez les données sur une carte avec Python
Visualiser grib2 sur une carte avec python (matplotlib)
Un mémo contenant Python2.7 et Python3 dans CentOS
J'ai fait une carte hexadécimale avec Python
Essayez de dessiner une carte avec python + cartopy 0.18.0
Visualisez les préfectures avec de nombreux itinéraires par préfecture sur une carte du Japon
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
Analyse de données avec python 2
Créez un environnement python avec ansible sur centos6
Une histoire sur la gestion des données binaires en Python
Décrypter une chaîne chiffrée sur iOS avec Python
Essayez de dessiner une carte avec le package folium de Python
Analyse de données avec Python
Extraire des données d'une page Web avec Python
Affichage des données d'informations de position en Python --Essayez de tracer avec la bibliothèque d'affichage de carte (folium) -
[Python] Tracer les données par préfecture sur une carte (nombre de voitures possédées dans tout le pays)
Visualisez et comprenez le maillage régional du Japon sur une carte
Obtenez des données financières avec python (puis un peu de bricolage)
Visualisez les buts et les buts de la Ligue B sur une carte de chaleur
Faire un point d'arrêt sur la couche c avec python
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
Un serveur qui fait écho aux données POSTées avec flask / python
Remarques sur l'accélération du code Python avec Numba
Exemple de données créées avec python
Obtenez des données Youtube avec python
[Python] Notes sur l'analyse des données
Faites une loterie avec Python
Créer un répertoire avec python
Lire des données json avec python
Un mémo qui lit les données de dashDB avec Python et Spark
Remarques sur l'importation de données depuis MySQL ou CSV avec Python
Remarques sur la gestion de grandes quantités de données avec python + pandas
[Treasure Data] [Python] Exécutez une requête sur Treasure Data à l'aide du client TD.
Créer un environnement d'analyse de données python sur Mac (El Capitan)
Construire un environnement Python sur Mac
[Python] Qu'est-ce qu'une instruction with?
Résoudre ABC163 A ~ C avec Python
Faites fonctionner l'imprimante de reçus avec python
Manuel de graphisme Python avec Matplotlib.
Faisons une interface graphique avec python.
Construire un environnement Python sur Ubuntu
Résoudre ABC166 A ~ D avec Python
Créer un environnement Python sur Mac (2017/4)
[Python] Obtenez des données économiques avec DataReader
Créer un environnement virtuel avec Python 3
Résoudre ABC168 A ~ C avec Python
Structure de données Python apprise avec la chimioinfomatique
Visualisez les dépendances des packages python avec graphviz
Créer un système de recommandation avec python
Créer un environnement python dans centos
[Python] Générer un mot de passe avec Slackbot
Résoudre ABC162 A ~ C avec Python