How to make scatter plots on maps in Python. Scatter plots on maps highlight geographic areas and can be colored by value.
Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Sign up for early access now.
In [1]:
import plotly.express as px df = px.data.gapminder().query("year == 2007") fig = px.scatter_geo(df, locations="iso_alpha", size="pop", # size of markers, "pop" is one of the columns of gapminder ) fig.show()Customize geographical scatter plot¶
In [2]:
import plotly.express as px df = px.data.gapminder().query("year == 2007") fig = px.scatter_geo(df, locations="iso_alpha", color="continent", # which column to use to set the color of markers hover_name="country", # column added to hover information size="pop", # size of markers projection="natural earth") fig.show()Basic Example with GeoPandas¶
px.scatter_geo
can work well with GeoPandas dataframes whose geometry
is of type Point
.
In [3]:
import plotly.express as px import geopandas as gpd geo_df = gpd.read_file(gpd.datasets.get_path('naturalearth_cities')) px.set_mapbox_access_token(open(".mapbox_token").read()) fig = px.scatter_geo(geo_df, lat=geo_df.geometry.y, lon=geo_df.geometry.x, hover_name="name") fig.show()U.S. Airports Map¶
Here we show how to use go.Scattergeo
from plotly.graph_objects
.
In [4]:
import plotly.graph_objects as go import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/2011_february_us_airport_traffic.csv') df['text'] = df['airport'] + '' + df['city'] + ', ' + df['state'] + '' + 'Arrivals: ' + df['cnt'].astype(str) fig = go.Figure(data=go.Scattergeo( lon = df['long'], lat = df['lat'], text = df['text'], mode = 'markers', marker_color = df['cnt'], )) fig.update_layout( title = 'Most trafficked US airports<br>(Hover for airport names)', geo_scope='usa', ) fig.show()Styled U.S. Airports Map¶
In [5]:
import plotly.graph_objects as go import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/2011_february_us_airport_traffic.csv') df['text'] = df['airport'] + '' + df['city'] + ', ' + df['state'] + '' + 'Arrivals: ' + df['cnt'].astype(str) fig = go.Figure(data=go.Scattergeo( locationmode = 'USA-states', lon = df['long'], lat = df['lat'], text = df['text'], mode = 'markers', marker = dict( size = 8, opacity = 0.8, reversescale = True, autocolorscale = False, symbol = 'square', line = dict( width=1, color='rgba(102, 102, 102)' ), colorscale = 'Blues', cmin = 0, color = df['cnt'], cmax = df['cnt'].max(), colorbar=dict( title=dict( text="Incoming flights<br>February 2011" ) ) ))) fig.update_layout( title = 'Most trafficked US airports<br>(Hover for airport names)', geo = dict( scope='usa', projection_type='albers usa', showland = True, landcolor = "rgb(250, 250, 250)", subunitcolor = "rgb(217, 217, 217)", countrycolor = "rgb(217, 217, 217)", countrywidth = 0.5, subunitwidth = 0.5 ), ) fig.show()North American Precipitation Map¶
In [6]:
import plotly.graph_objects as go import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/2015_06_30_precipitation.csv') scl = [0,"rgb(150,0,90)"],[0.125,"rgb(0, 0, 200)"],[0.25,"rgb(0, 25, 255)"],\ [0.375,"rgb(0, 152, 255)"],[0.5,"rgb(44, 255, 150)"],[0.625,"rgb(151, 255, 0)"],\ [0.75,"rgb(255, 234, 0)"],[0.875,"rgb(255, 111, 0)"],[1,"rgb(255, 0, 0)"] fig = go.Figure(data=go.Scattergeo( lat = df['Lat'], lon = df['Lon'], text = df['Globvalue'].astype(str) + ' inches', marker = dict( color = df['Globvalue'], colorscale = scl, reversescale = True, opacity = 0.7, size = 2, colorbar = dict( title = dict( side="right" ), outlinecolor = "rgba(68, 68, 68, 0)", ticks = "outside", showticksuffix = "last", dtick = 0.1 ) ) )) fig.update_layout( geo = dict( scope = 'north america', showland = True, landcolor = "rgb(212, 212, 212)", subunitcolor = "rgb(255, 255, 255)", countrycolor = "rgb(255, 255, 255)", showlakes = True, lakecolor = "rgb(255, 255, 255)", showsubunits = True, showcountries = True, resolution = 50, projection = dict( type = 'conic conformal', rotation_lon = -100 ), lonaxis = dict( showgrid = True, gridwidth = 0.5, range= [ -140.0, -55.0 ], dtick = 5 ), lataxis = dict ( showgrid = True, gridwidth = 0.5, range= [ 20.0, 60.0 ], dtick = 5 ) ), title=dict(text='US Precipitation 06-30-2015<br>Source: <a href="http://water.weather.gov/precip/">NOAA</a>'), ) fig.show()What About Dash?¶
Dash is an open-source framework for building analytical applications, with no Javascript required, and it is tightly integrated with the Plotly graphing library.
Learn about how to install Dash at https://dash.plot.ly/installation.
Everywhere in this page that you see fig.show()
, you can display the same figure in a Dash application by passing it to the figure
argument of the Graph
component from the built-in dash_core_components
package like this:
import plotly.graph_objects as go # or plotly.express as px fig = go.Figure() # or any Plotly Express function e.g. px.bar(...) # fig.add_trace( ... ) # fig.update_layout( ... ) from dash import Dash, dcc, html app = Dash() app.layout = html.Div([ dcc.Graph(figure=fig) ]) app.run(debug=True, use_reloader=False) # Turn off reloader if inside Jupyter
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4