I am attempting to create a map visualization using Bokeh. The points on the map will show up, but the background will not. I am not sure how to address this, and this outcome remains consistent regardless whether I render my visualization in a notebook or website and it does not matter which browser I use. My code is below
from pyproj import Proj, transform
import pandas as pd
import numpy as np
from bokeh.plotting import figure
from bokeh.tile_providers import get_provider, WIKIMEDIA, CARTODBPOSITRON, STAMEN_TERRAIN, STAMEN_TONER, ESRI_IMAGERY, OSM
from bokeh.io import output_notebook, show
import requests
import io
import zipfile
import pandas as pd
from io import StringIO
def download_data(url):
response = requests.get(url)
with zipfile.ZipFile(io.BytesIO(response.content)) as thezip:
for zipinfo in thezip.infolist():
if 'csv' in str(zipinfo):
with thezip.open(zipinfo) as thefile:
csv_contents = thefile.read().decode('UTF-8')
df = pd.read_csv(StringIO(csv_contents))
return df
def create_df_projections(df):
inProj = Proj(init='epsg:3857')
outProj = Proj(init='epsg:4326')
lons, lats = [], []
for i in range(0, len(df)):
lat = df['lat'][i]
lon = df['lng'][i]
x, y = transform(outProj,inProj,lon,lat)
lons.append(x)
lats.append(y)
df["MercatorX"] = lons
df["MercatorY"] = lats
return df
def create_map(df):
inProj = Proj(init='epsg:3857')
outProj = Proj(init='epsg:4326')
wikimedia = get_provider(WIKIMEDIA)
lon1, lat1 = transform(outProj,inProj,-180,-85)
lon2, lat2 = transform(outProj,inProj,180,85)
p = figure(plot_width=600, plot_height=600,
x_range=(lon1, lon2), y_range=(lat1, lat2),
x_axis_type="mercator", y_axis_type="mercator",
title="POINTS On Map")
p.add_tile(wikimedia)
p.circle(x="MercatorX", y="MercatorY",
size=2,
fill_color="dodgerblue", line_color="dodgerblue",
fill_alpha=0.3,
source=df)
return p
url = 'https://simplemaps.com/static/data/world-cities/basic/simplemaps_worldcities_basicv1.74.zip'
df = download_data(url)
df = df.head(250)
df_map = create_df_projections(df)
p = create_map(df_map)
output_notebook()
show(p)
The empty map shows as the image attached. I am using bokeh version 1.4.0