Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

FeatureGroupSubGroup: nth level subgroups

Offen
#1,758 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Feature
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
jupyter-notebook, python

Rechercherichtung

Beginnen Sie mit der bereitgestellten FeatureGroupSubGroup-Konstruktion und der generierten TESTING.html in der Jupyter/VS Code-Reproduktion; überprüfen Sie, ob verschachtelte Untergruppen über eine Ebene hinaus wie erwartet dargestellt und umgeschaltet werden. Definieren Sie das gewünschte Verhalten für die n-te Ebene und bestätigen Sie es mit einer minimalen Karten-Reproduktion, einschließlich der angegebenen Bedingung für die Punktanzeige.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

More info needed

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
Vorherrschende Sprache
Python
Sterne
7.4k
Forks
2.3k
Ø Merge
17 Std. 22 Min.
Gemergte PRs (30 T.)
11

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus python-visualization/folium

Alle Issues in python-visualization/folium

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.