import pandas as pd
import os
from mapboxgl.viz import *
from mapboxgl.utils import *
Set a MAPBOX_ACCESS_TOKEN
environment variable or copy/paste your token
If you do not have a Mapbox access token, sign up for an account at https://www.mapbox.com/
If you already have an account, you can grab your token at https://www.mapbox.com/account/
# Must be a public token, starting with `pk`
token = os.getenv('MAPBOX_ACCESS_TOKEN')
# Load data from sample csv
data_url = 'https://raw.githubusercontent.com/mapbox/mapboxgl-jupyter/master/examples/data/cdec.csv'
df = pd.read_csv(data_url)
# Convert Elevation series to float
df['Elevation (feet)'] = df['Elevation (feet)'].astype(float)
# Clean up by dropping null rows
df = df.dropna(axis=1, how='all')
df.head(2)
# Create geojson data object
cdec_data = df_to_geojson(df.fillna(''),
properties=['CDEC ID', 'CNRFC ID', 'Gage Type', 'Elevation (feet)'],
precision=4)
# Assign color stops
category_color_stops = [['reservoir', 'rgb(211,47,47)'],
['river', 'rgb(81,45,168)'],
['snow', 'rgb(2,136,209)'],
['precip', 'rgb(139,195,74)'],
['temp', 'rgb(255,160,0)']]
# Initialize CircleViz with Categorical Measure Data
viz = CircleViz(cdec_data,
access_token=token,
height='500px',
label_property='CDEC ID',
color_property='Gage Type',
color_default='grey',
color_function_type='match',
color_stops=category_color_stops,
radius=2,
center=(-121, 38.5),
zoom=4.5)
# Render map
viz.show()
# Numeric color stops from ColorBrewer
sample_color_stops = [[0.0, 'rgb(255,255,204)'],
[100.0, 'rgb(255,237,160)'],
[250.0, 'rgb(254,217,118)'],
[500.0, 'rgb(254,178,76)'],
[1000.0, 'rgb(253,141,60)'],
[2000.0, 'rgb(252,78,42)'],
[4000.0, 'rgb(227,26,28)'],
[6000.0, 'rgb(189,0,38)'],
[10000.0,'rgb(128,0,38)']]
# Select temperature gage records with numeric elevation data
temperature_df = df[df['Gage Type']=='temp']
temperature_data = df_to_geojson(temperature_df,
properties=['CDEC ID', 'Elevation (feet)'])
# Test CircleViz with interval measure data
viz2 = CircleViz(temperature_data,
access_token=token,
height='400px',
color_property='Elevation (feet)',
color_function_type='interpolate',
color_stops=sample_color_stops,
radius=2,
center=(-121, 37.5),
zoom=4.5,
below_layer='waterway-label',
legend_key_shape='contiguous-bar',
legend_key_borders_on=False)
# Render map
viz2.show()
# Radius stops for linear interpolation
sample_radius_stops = [[0.0, 1.0],
[100.0, 2.0],
[500.0, 3.0],
[1000.0, 4.0],
[5000.0, 5.0],
[10000.0, 6.0]]
# Initialize Graduated Circle Visualization
viz3 = GraduatedCircleViz(cdec_data,
access_token=token,
height='400px',
color_function_type='match',
color_stops=category_color_stops,
color_property='Gage Type',
color_default='grey',
opacity=0.5,
radius_property='Elevation (feet)',
radius_stops=sample_radius_stops,
radius_function_type='interpolate',
radius_default=2,
center=(-121, 37.5),
zoom=4.5,
below_layer='waterway-label')
# Render map
viz3.show()
# Radius stops for linear interpolation
category_radius_stops = [['reservoir', 3],
['river', 5],
['snow', 8],
['precip', 11],
['temp', 14]]
# Initialize Graduated Circle Visualization
viz4 = GraduatedCircleViz(cdec_data,
access_token=token,
height='400px',
color_function_type='match',
color_stops=category_color_stops,
color_property='Gage Type',
color_default='grey',
opacity=0.5,
radius_property='Elevation (feet)',
radius_stops=category_radius_stops,
radius_function_type='match',
radius_default=2,
center=(-121, 37.5),
zoom=4.5,
below_layer='waterway-label')
# Render map
viz4.show()