Choroplethenkarten mit Locationmode in Plotly
- Choroplethenkarten in Python
- Bereiche auf der Choropleth-Karte hervorheben
- Zeichnen Sie andere Choroplethenkarten als die USA
Data Science ist ein Zweig der Informatik, der Algorithmen, Prozesse, Systeme, Mathematik und wissenschaftliche Verfahren verwendet, um Erkenntnisse und Wissen aus strukturierten, unstrukturierten und verrauschten Daten zu extrahieren und diese Erkenntnisse zur Lösung von Geschäftsproblemen und zur Entwicklung lernbasierter Lösungen verwendet.
Python und R sind zwei Programmiersprachen, die in der Data-Science-Community wegen der Unterstützung und Fähigkeiten, die diese Sprachen bieten, bekannt sind.
Da die Datenvisualisierung eine Schlüsselkomponente der Datenwissenschaft ist, bietet Python eine Bibliothek, Plotly, die uns hilft, interaktive Diagramme und Karten zu erstellen.
Es unterstützt verschiedene Arten von Diagrammen wie Streudiagramme, Liniendiagramme, Balkendiagramme, Tortendiagramme, Blasendiagramme, Fehlerbalken, Histogramme, 2D-Histogramme, Heatmaps, Candlesticks, Mapbox-Choropleth-Karten, Clustergramme usw.
In diesem Artikel werden wir über eine der Plots sprechen, die Plotly unterstützt, nämlich Choroplethenkarten.
Choroplethenkarten in Python
Plotly bietet eine Methode, choropleth()
, mit der wir Choropleth-Maps erstellen können. Diese Methode hat die folgende Syntax.
plotly.express.choropleth(
data_frame=None,
lat=None,
lon=None,
locations=None,
locationmode=None,
geojson=None,
color=None,
scope=None,
center=None,
title=None,
width=None,
height=None,
)
Der folgende Python-Code zeigt, wie diese Methode zum Zeichnen einer Choroplethenkarte verwendet wird.
import plotly.express as px
figure = px.choropleth(locationmode="USA-states", color=[2], scope="usa")
figure.show()
Ausgang:
Beim Ausführen des Codes wird ein neues Browserfenster geöffnet, in dem diese interaktive Choroplethenkarte angezeigt wird. Wenn Sie den Mauszeiger über die Karte bewegen, erscheinen einige Optionen in der oberen rechten Ecke des Bildschirms.
Bereiche auf der Choropleth-Karte hervorheben
Bereiche auf einer Choropleth-Karte können hervorgehoben werden, indem für jeden Standort ihre Namen und Farbe angegeben werden. Der folgende Python-Code zeigt dasselbe.
import plotly.express as px
figure = px.choropleth(
locations=["WA", "GA", "FL", "NY"],
locationmode="USA-states",
color=[2, 4, 6, 8],
scope="usa",
)
figure.show()
Ausgang:
Zeichnen Sie andere Choroplethenkarten als die USA
Standardmäßig unterstützt Plotly nur die Staaten der USA. Um andere Länder und ihre Bundesstaaten darzustellen, benötigen wir GeoJSON-Daten für diese Länder und Bundesstaaten.
GeoJSON ist ein Format zur Darstellung geografischer Merkmale. GeoJSON unterstützt mehrere Typen: Point
, LineString
, Polygon
, MultiPoint
, MultiLineString
und MultiPolygon
.
Geometrische Objekte und einige zusätzliche Details werden als Feature
-Objekte bezeichnet. Eine FeatureCollection
ist eine Menge von Feature
-Objekten.
Lassen Sie uns dies weiter verstehen, indem wir zwei Choroplethenkarten zeichnen.
Sojabohnenproduktion in Brasilien
Um ein solches Diagramm zu zeichnen, benötigen wir zwei Datenbanken; eine für die Form oder die Koordinaten Brasiliens und seiner Bundesstaaten und eine für die Sojabohnenproduktion. Sobald diese beiden Dinge vorhanden sind, müssen wir sicherstellen, dass wir eine Funktion oder Spalte haben, um Einträge zwischen den beiden Tabellen abzubilden.
Einfach ausgedrückt, wir brauchen einen Weg, um zu wissen, welche Daten in der Sojabohnendatenbank sich auf welche Form- oder Koordinatendaten beziehen.
Sobald wir all dies abgedeckt haben, werden wir die Methode choropleth()
verwenden, um eine Choropleth-Karte dafür zu erstellen. Beziehen Sie sich für die Implementierung auf den folgenden Python-Code.
import json
import pandas as pd
import plotly as plt
import plotly.express as px
from urllib.request import urlopen
# Brazil coordinates / shape
with urlopen(
"https://raw.githubusercontent.com/codeforamerica/click_that_hood/master/public/data/brazil-states.geojson"
) as response:
brazil = json.load(response)
# Since the database doesn't have an ID or feature using which values will be mapped between the coordinate/shape database and soybean database, we are adding an ID ourselves.
for feature in brazil["features"]:
feature["id"] = feature["properties"]["name"]
# Soybean database for states in Brazil
soybean = pd.read_csv(
"https://raw.githubusercontent.com/nayanemaia/Dataset_Soja/main/soja%20sidra.csv"
)
figure = px.choropleth(
soybean, # soybean database
locations="Estado", # define the limits on the map/geography
geojson=brazil, # shape information
color="Produção", # defining the color of the scale via database
hover_name="Estado", # details to show on hover
hover_data=["Longitude", "Latitude"], # details to show on hover
title="Soybean production in Brazil", # title of the map
)
figure.update_geos(fitbounds="locations", visible=False)
figure.show()
Ausgang:
Mit den Attributen hover_name
und hover_data
kann festgelegt werden, welche Informationen angezeigt werden sollen, wenn ein Nutzer mit der Maus über einzelne Teile der Karte fährt. fig.update_geos()
trimmt alles um die Hauptkarte (Brasilienkarte), was wir nicht zeigen wollen.
Aktive COVID19-Fälle in Indien
import pandas as pd
import plotly.express as px
cases = pd.read_csv(
"https://gist.githubusercontent.com/jbrobst/56c13bbbf9d97d187fea01ca62ea5112/raw/e388c4cae20aa53cb5090210a42ebb9b765c0a36/active_cases_2020-07-17_0800.csv"
)
shape = "https://gist.githubusercontent.com/jbrobst/56c13bbbf9d97d187fea01ca62ea5112/raw/e388c4cae20aa53cb5090210a42ebb9b765c0a36/india_states.geojson"
figure = px.choropleth(
cases,
geojson=shape,
# ID or feature to use for mapping values between the two databases
featureidkey="properties.ST_NM",
locations="state",
color="active cases", # a field in the COVID cases database used for the color
color_continuous_scale="Blues",
)
figure.update_geos(fitbounds="locations", visible=False)
figure.show()
Ausgang:
Die Variablen Fälle
und Form
speichern COVID-Falldaten und die Form oder Koordinaten Indiens bzw. seiner Bundesstaaten. Der featureidkey
wird auf properties.ST_NM
gesetzt, da jeder Eintrag in der shape
-Datenbank eine state name (ST_NM
)-Eigenschaft innerhalb des Wörterbuchs hat, die dem properties
-Schlüssel zugeordnet ist.