Hi,
Iβm plotting scattergeo plots on a US map (51 traces for 51 states plus DC and 4 traces for 4 different years). I have updatemenus with 2 buttons that switch between a regular scattergeo with legend (51 traces) and another scattergeo with a slider at the bottom (4 traces). I initially set the 4 traces (years) visible = False
because I wanted the 51 traces to appear first but when I click button to switch to scattergeo with slider and set first 51 traces visible = False
and final 4 traces visible = [True, False, False, False]
none of my traces are visible on the map.
No sure why this is happening. When I set cities_year
visible = True
the traces appear but I donβt want that because then I have the all my scatterpoints being plotted twice in the same position.
Here is my plotly code:
cities = []
for state in data['state'].value_counts().index:
data_sub = data.loc[data['state'] == state]
city = dict(
type = 'scattergeo',
visible = True,
locationmode = 'USA-states',
lon = data_sub['lon'],
lat = data_sub['lat'],
text = text,
mode = 'markers',
marker = dict(
size = 8,
color = "rgb(255, 102, 102)",
opacity = 0.4,
line = dict(
width=0.5,
color='rgb(255, 102, 102)'
)
),
name = state
)
cities.append(city)
cities_year = []
for year in sorted(data.date.dt.year.value_counts().index):
data_sub = data.loc[data['date'].dt.year == year]
city = dict(
type = 'scattergeo',
visible = False,
locationmode = 'USA-states',
lon = data_sub['lon'],
lat = data_sub['lat'],
text = text,
mode = 'markers',
marker = dict(
size = 8,
color = "rgb(255, 102, 102)",
opacity = 0.4,
line = dict(
width=0.5,
color='rgb(255, 102, 102)'
)
),
name = str(year)
)
cities_year.append(city)
slider = [dict(active = 0,
pad = dict(t = 1),
steps = [dict(args = ["visible", ([False] * len(cities)) + [True, False, False, False]],
label = "1990",
method = "restyle"
),
dict(args = ["visible", ([False] * len(cities)) + [False, True, False, False]],
label = "1991",
method = "restyle"
),
dict(args = ["visible", ([False] * len(cities)) + [False, False, True, False]],
label = "1992",
method = "restyle"
),
dict(args = ["visible", ([False] * len(cities)) + [False, False, False, True]],
label = "1993",
method = "restyle"
)
]
)
]
updatemenus = list([
dict(type="buttons",
active=0,
buttons=list([
dict(label = 'states',
method = 'update',
args = [dict(visible = ([True] * len(cities)) + ([False] * len(cities_year))),
dict(sliders = [],
showlegend = True)]),
dict(label = 'years',
method = 'update',
args = [dict(visible = ([False] * len(cities)) + [True, False, False, False]),
dict(sliders = slider,
showlegend = False)])
]),
)
])
layout = dict(
title = 'myplot',
geo = dict(
scope='usa',
projection=dict(type='albers usa'),
showland=True,
showlakes = True,
landcolor = 'rgb(217, 217, 217)',
subunitwidth=1,
countrywidth=1,
subunitcolor="rgb(255, 255, 255)",
countrycolor="rgb(255, 255, 255)"
),
updatemenus=updatemenus
)
trace_data = cities + cities_year
fig = dict(data=trace_data, layout=layout)
iplot(fig, validate=False)