Choroplethenkarten mit Locationmode in Plotly

Vaibhav Vaibhav 15 Februar 2024
  1. Choroplethenkarten in Python
  2. Bereiche auf der Choropleth-Karte hervorheben
  3. Zeichnen Sie andere Choroplethenkarten als die USA
Choroplethenkarten mit Locationmode in Plotly

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:

grundlegende Handlung

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:

hervorgehobene Bereiche

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:

Handlung Brasilien

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:

Grundstück Indien

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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.