Plotly: Wie lege ich einen manuellen Begrenzungsrahmen für einen Scattergeo fest?Python

Python-Programme
Anonymous
 Plotly: Wie lege ich einen manuellen Begrenzungsrahmen für einen Scattergeo fest?

Post by Anonymous »

Ich versuche, den mittleren Bevölkerungsschwerpunkt in den USA für verschiedene Variablen zu berechnen. Daher bestand mein erster Schritt darin, sie für die Bevölkerung der letzten 10 Jahre nach Landkreisen zu berechnen und zu sehen, ob sie mit den Volkszählungskarten dieser Abbildung übereinstimmen (zumindest grob, da die Volkszählung eine detailliertere geografische Auflösung verwendet). Wie zu erwarten ist, handelt es sich um eine Art extrem verzögertes Manifest Destiny:
Image

(Die Formel zur Berechnung dieser Punkte basierend auf vielen Bevölkerungszentren finden Sie hier auf Seite 2, falls jemand neugierig ist.)
Ich migriere von R/RStudio zu Jupyter und verwende Pandas, Plotly, Numpy usw. Normalerweise bin ich ein JavaScript-Ingenieur, aber ich bin mit Python vertraut und mag es sehr etwas mehr als R! Ich konnte mithilfe des Beispiels einer Flughafenkarte in diesem fantastischen Tutorial auf plotly.graph_objects.Scattergeo berechnen, was scheinbar ähnliche Punkte sind, aber ich stecke bei einer nationalen Auflösung fest, sodass ich nicht sagen kann, wie gut ich abschneide:
Image

Ich kann manuell zoomen Natürlich, aber ich würde wirklich gerne verstehen, wie man sich standardmäßig nur auf Missouri konzentriert. Ich fand diesen CodePen nützlich, aber da es in Python so viele verschiedene hervorragende Mapping-Tools gibt, bin ich mir nicht sicher, wie ich über das JS portieren soll.
Meine aktuelle Map, basierend auf dem obigen Tutorial, richtet den grundlegenden Plot ein und ändert dann den Umfang des Layouts in einer zweiten Zeile – ich bin mir nicht sicher, ob dies Standard für Plotly ist oder nur eine Annehmlichkeit.
So sehr ich Python bewundere, gehe ich direkt zu den Dokumenten für update_layout ist ein bisschen wie ein Kaninchenbau :) Es macht mir nichts aus, die Breiten- und Längengrenzen des Ansichtsfensters vorzugeben, obwohl es nett wäre, einfach „Missouri“ zu sagen. Mir ist klar, dass das einfach ist – nur eine kleine Lernkurve.

Code: Select all

import pandas as pd
import plotly.graph_objects as go

meanCenters = pd.read_json('{"year": {"0": 2010, "1": 2011, "2": 2012, "3": 2013, "4": 2014, "5": 2015, "6": 2016, "7": 2017, "8": 2018, "9": 2019}, "lat": {"0": 37.52908501121699, "1": 37.51719645600817, "2": 37.50264465332917, "3": 37.489564543614605, "4": 37.47311004581999, "5": 37.45358003505096, "6": 37.43623735876329, "7": 37.423475510154134, "8": 37.4121869670822, "9": 37.40021167050047}, "lng": {"0": -92.1522086893934, "1": -92.17800419530532, "2": -92.20484620692078, "3": -92.23312370193283, "4": -92.26617930383293, "5": -92.30498885605378, "6": -92.3395596061908, "7": -92.36398254029461, "8": -92.38362683728195, "9": -92.40337680455285}}')

fig = go.Figure(data=go.Scattergeo(
lon = meanCenters['lng'],
lat = meanCenters['lat'],
mode = 'markers'
))
fig.update_layout(
geo_scope='usa',
height=600
)
fig.show()
Daten sind oben enthalten – Danke, @vestland! – aber zur besseren Lesbarkeit hier nachgedruckt

Code: Select all

year    lat lng
2010    37.52908501121699   -92.1522086893934
2011    37.51719645600817   -92.17800419530532
2012    37.50264465332917   -92.20484620692078
2013    37.489564543614605  -92.23312370193283
2014    37.47311004581999   -92.26617930383293
2015    37.45358003505096   -92.30498885605378
2016    37.43623735876329   -92.3395596061908
2017    37.423475510154134  -92.36398254029461
2018    37.4121869670822    -92.38362683728195
2019    37.40021167050047   -92.40337680455285

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post