FeatureGroupSubGroup: nth level subgroups
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Stack de tecnologia
- jupyter-notebook, python
- Domínio
- data-visualization
Direção de pesquisa
Comece com a construção FeatureGroupSubGroup fornecida e o TESTING.html gerado na reprodução em Jupyter/VS Code; verifique se os subgrupos aninhados além de um nível são representados e alternados conforme esperado. Defina o comportamento desejado para o nível n e confirme-o com uma reprodução mínima de mapa, incluindo a condição declarada de exibição de pontos.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Describe the bug
I am using quite a few levels of recursion to generate a map that has subgroups within subgroups, and im not sure how to fix the issue, or if there is a better method.
To Reproduce
theres alot going on here... the repeated for loops are to keep the buttons ordered by hierarchy.
import folium
from folium import plugins
#####################################################################################
coord = df['Location'].apply(fetch_lat_lon)
df['Lat'] = coord.apply(lambda x: x[0] if isinstance(x, tuple) else None)
df['Long'] = coord.apply(lambda x: x[1] if isinstance(x, tuple) else None)
df['Result'] = (~df['Impounded'].isna().astype(int)).apply(lambda x: _results[x])
df['Interval'] = (datetime.now() - df.index).days
df['Weekday'] = df.index.weekday.map(lambda x: _days[x])
df['Time'] = df.index.hour
df = df[~df['ID'].isna()]
#####################################################################################
m = folium.Map(location=[0, 0], zoom_start=14)
results = {}
intervals = {}
days = {}
times = {}
_results = ['Complete', 'Canceled']
_intervals = [7, 30, 90, 365] ## days before now
_days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
_times = range(24)
for result in _results:
results[result] = folium.FeatureGroup(name = result)
m.add_child(results[result])
for result in _results:
for interval in _intervals:
intervals[f'{result}_{interval}'] = plugins.FeatureGroupSubGroup(results[result], f'{interval} Days')
m.add_child(intervals[f'{result}_{interval}'])
for result in _results:
for interval in _intervals: ## days before now
for day in _days:
days[f'{result}_{interval}_{day}'] = plugins.FeatureGroupSubGroup(intervals[f'{result}_{interval}'], day)
m.add_child(days[f'{result}_{interval}_{day}'])
for result in _results:
for interval in _intervals: ## days before now
for day in _days:
for time in _times:
if time < 12:
if time !=0:
times[f'{result}_{interval}_{day}_{time}'] = plugins.FeatureGroupSubGroup(days[f'{result}_{interval}_{day}'], f'{time} AM')
m.add_child(times[f'{result}_{interval}_{day}_{time}'])
else:
times[f'{result}_{interval}_{day}_{time}'] = plugins.FeatureGroupSubGroup(days[f'{result}_{interval}_{day}'], f'{time + 12} AM')
m.add_child(times[f'{result}_{interval}_{day}_{time}'])
elif time > 12:
times[f'{result}_{interval}_{day}_{time}'] = plugins.FeatureGroupSubGroup(days[f'{result}_{interval}_{day}'], f'{time - 12} PM')
m.add_child(times[f'{result}_{interval}_{day}_{time}'])
else:
times[f'{result}_{interval}_{day}_{time}'] = plugins.FeatureGroupSubGroup(days[f'{result}_{interval}_{day}'], f'{time} PM')
m.add_child(times[f'{result}_{interval}_{day}_{time}'])
for result in _results:
for interval in _intervals: ## days before now
for day in _days:
for time in _times:
group = times[f'{result}_{interval}_{day}_{time}']
condition = ((df['Result'] == result) &
(df['Interval'] <= interval) &
(df['Weekday'] == day) &
(df['Time'] == time)
)
_df = df[condition].dropna()
for i in range(len(_df)):
lat = _df['Lat'].iloc[i] - _df['Lat'].mean()
long = _df['Long'].iloc[i] - _df['Long'].mean()
folium.Marker([lat, long]).add_to(group)
folium.LayerControl(collapsed=True).add_to(m)
m.save('TESTING.html')
Expected behavior
When all button conditions are met, points will display,
Environment (please complete the following information):
- chrome
- jupyter notebooks
- vs code
- Linguagem predominante
- Python
- Estrelas
- 7.4k
- Forks
- 2.3k
- Merge médio
- 10h 24min
- PRs com merge (30d)
- 8
Preparar o ambiente
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de python-visualization/folium
-
documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
python-visualization/folium#2092 · 5 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 67/100
python-visualization/folium#2278 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
python-visualization/folium#2259 ·
Mantenedores costumam responder em até 1 dia
-
Map output from OSM returns blocked tiles, due to defective request or not following referer-policyAberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
python-visualization/folium#2236 · 5 comentários · 2 reações ·
Mantenedores costumam responder em até 1 dia
-
Touch Screen often failsAberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 10/100
python-visualization/folium#2219 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de python-visualization/folium
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-2 dias Facilidade para iniciantes 70/100
-
FingerprintSplitter raises ZeroDivisionError when int(frac_train * len(dataset)) floors to zeroAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 7 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
lmstudio-ai/mlx-engine#376 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
pyiron/bagofholding#166 ·