Folium ist eine Bibliothek, die Daten auf einer Karte visualisiert.
JavaScript Faltblatt Es gibt eine Bibliothek, die die interaktive Kartenverarbeitung unterstützt Man kann sagen, dass Folium diese Bibliothek analysiert und in Python verfügbar gemacht hat.
Ich konnte die entsprechende Version auf der offiziellen Seite nicht finden. Wenn man sich die Kategorien auf pypi ansieht, scheint es, dass sowohl 2 als auch 3 Systeme funktionieren werden.
Führen Sie den folgenden Befehl in einer etwas neuen Python-Umgebung aus. Es ist "am einfachsten".
Folium-Installation
$ pip install folium
Wenn Sie die Umwelt nicht verschmutzen möchten, trennen Sie sie vorab mit venv. Ich habe einen Einwegbehälter aufgestellt.
FROM python:3.5.2-alpine
RUN pip install folium
Container starten
#Erstellen Sie ein Folium-Image mit einer Docker-Datei im aktuellen Verzeichnis
docker build -t folium .
#Starten Sie den Container über das Folium-Image
docker run -it -v /home/nanakenashi/workspace:/workspace folium /bin/sh
Um auf die HTML-Datei zu verweisen, die aus Folium ausgespuckt wurde Das aktuelle Verzeichnis (Arbeitsbereich) wird im Container bereitgestellt.
Vielen Dank an QuickStart. Starten Sie zunächst die interaktive Shell von Python und laden Sie Folium.
Vorbereitung
$ 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
Erstellen Sie ein "Map" -Objekt mit den Koordinaten und der Zoomstufe in einer Hand, benennen Sie es und speichern Sie es. Je größer die Zoomstufe, desto höher die Zoomstufe.
Karten erstellen und speichern
>>> map1 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
>>> map1.save('/workspace/map1.html')
Versuchen Sie, die gespeicherte HTML-Datei in Ihrem Browser zu öffnen.
Ich frage mich, ob die in "Ort" angegebenen Koordinaten das Zentrum waren Ich dachte, ich hätte Australien außermittig gesehen, aber ich werde weitermachen.
Marker hinzufügen
>>> 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')
Öffnen Sie die gespeicherte map2.html.
Ein Marker ist erschienen. Übrigens, wenn Sie darauf klicken, wird die durch "Popup" angegebene Zeichenfolge angezeigt.
Obwohl verschiedene Visualisierungsoptionen auch innerhalb von Quickstart verwendet werden Dieses Mal werde ich mich auf die kreisförmige Markierung konzentrieren und etwas löschen. Erster Versuch.
Kreismarkierungen anzeigen
>>> 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')
Öffnen Sie map3 in Ihrem Browser.
Da es den Anschein hat, dass die Menge durch "Radius" ausgedrückt werden kann, lassen Sie uns einen numerischen Wert für jede Stadt widerspiegeln. An diesem Punkt muss ich nicht interaktiv sein, also schreibe ich ein Skript.
Platzieren Sie Markierungen nach Stadt
import folium
map4 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
#Speichert Daten für jede Stadt (ursprünglich aus der DB- oder CSV-Datei bezogen)
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'}
)
#Gewichte, um die Größe des Kreises leicht verständlich zu machen
WEIGHT = 100000
#Hinzufügen von Markierungen für jede Stadt (Da es schwierig ist, die Anzahl zu erhöhen, ist das Hinzufügen von Chargen ein zukünftiges Problem.)
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')
Zeigen Sie nach dem Ausführen des obigen Skripts map4.html im Browser an.
Der Inhalt von QuickStart hat es einfach so gemacht. Wenn Sie es solider verwenden möchten, lesen Sie die Folium-Dokumentation Es scheint gut, auch das Original Faltblattdokument zu überprüfen.
Ich denke, dass Google Maps häufig bei der Bereitstellung als Dienst verwendet wird Solche Bibliotheken sind auch nützlich für Recherchen und interne Angebote. In dem Artikel war es auf die oberflächliche Visualisierung beschränkt, bis der Marker platziert wurde. Sie können verschiedene Ausdrücke erstellen, z. B. die Karte selbst bearbeiten und Polygone anordnen.
Jupyter Notebook scheint eine interaktivere Analyse zu ermöglichen Wenn Sie es benutzt haben, probieren Sie es bitte aus.
Recommended Posts