I have built a dash app where I am plotting German Districts. Find Repo here.
However, I need log scales (for the colors) and want to overwrite the hover box with actual numbers. I get the feeling this would be easier done with the old Plotly.
Current Visualization:
Ideally what I want to do is to have a visualization like here on a German level:
Hi @fbosler, two answers to your question 
- yes, the
go.Choropleth
trace has geojson
and featureidkey
attributes which you can use as in the px
function, see https://plotly.com/python-api-reference/generated/plotly.graph_objects.Choropleth.html for the API documentation
- that said, you can also pass to
px.choropleth
the log of the values in the color
argument of px.choropleth
, and modify the hovertemplate to your taste using fig.update_traces
. You can also tune the ticks of the colorbar, or just use a prefix like what is one here, corresponding to this dashboard
1 Like
Hi @Emmanuelle ! thx for the reply. Amazing dashboard btw. did you code it yourself?
How did you deploy it? For ease of use, I deployed mine via AWS/serverless. But itβs super slow and I am running into payload size restrictions now.
if the callbacks are slow you can try to write them as client-side callbacks (see https://dash.plotly.com/performance for more details). For this specific dashboard we wrote everything with client-side callbacks (and we also transformed the app into static html pages because we wanted to host it under Github pages but this is very hacky I would not recommend it).
Heya Emmanuelle,
not it seems like my provided geojson doesnβt do anything (as in a sense, that it still shows the world map). Where am I going wrong here?
## imports
from urllib.request import urlopen
import pandas as pd
import plotly.graph_objects as go
df = pd.read_csv('https://raw.githubusercontent.com/FBosler/covid19-dash-app/master/functions/data.csv')
def fetch_counties():
URL = "https://raw.githubusercontent.com/FBosler/covid19-dash-app/master/functions/counties.json"
with urlopen(URL) as response:
counties = json.load(response)
return counties
counties = fetch_counties()
fig = go.Figure(data=go.Choropleth(
geojson=counties,
locations = df[df['infected'] != 0]['Landkreis'],
featureidkey="properties.NAME_3"
))
fig.show()
@Emmanuelle Could you give me a pointer how to make the Choropleth work with regions that is not the US? Would be really appreciated.
Cheers
Hi @fbosler it does not work because you did not pass which information should be color-coded. Below are two working examples, one with go.Choropleth
and the other one with px.choropleth
.
from urllib.request import urlopen
import pandas as pd
import numpy as np
import json
import plotly.graph_objects as go
df = pd.read_csv('https://raw.githubusercontent.com/FBosler/covid19-dash-app/master/functions/data.csv')
def fetch_counties():
URL = "https://raw.githubusercontent.com/FBosler/covid19-dash-app/master/functions/counties.json"
with urlopen(URL) as response:
counties = json.load(response)
return counties
counties = fetch_counties()
fig = go.Figure(data=go.Choropleth(
geojson=counties,
z=np.log10(df['infected']),
locations = df['Landkreis'],
featureidkey="properties.NAME_3"
))
fig.update_geos(fitbounds="locations")
fig.show()
or
import plotly.express as px
import numpy as np
fig = px.choropleth(df, geojson=counties, locations='Landkreis',
color=np.log10(df['infected']),
featureidkey="properties.NAME_3")
fig.update_geos(fitbounds="locations")
fig.show()
Ahhh, you are amazing, really appreciate the help!
Cheers
Fabian