python-visualization / folium

Python Data. Leaflet.js Maps.
https://python-visualization.github.io/folium/
MIT License
6.89k stars 2.22k forks source link

Time Slider with Varying MultiPolygon Size by Time Stamp #1750

Open msw17002 opened 1 year ago

msw17002 commented 1 year ago

I'm trying to create a time slider which varies by day, however, 1) all MultiPolygons are initially displayed at once for the first time stamp and 2) if I use the slider from the start to the end of the slider, all previous time steps are overlaid by the final time step.

Note: All MultiPolygons are not consistent in terms of shape/size. I think this is related to the issue.

Here's a screen capture of the issue: image There shouldn't be any overlapping lines on the map for the initial time stamp.

The final slide looks good: image

However, once I scroll through all slides once, all data is overlaid by the final time stamp: image

Here's the important part of the script:

---create a style dictionary

styledata = {} for i in range(allgpd.shape[0]): subset = allgpd.iloc[i] idxname = pd.Index([subset.times], dtype="U10") df = pd.DataFrame({"color": allgpd['color'][i],"opacity": 1,},index=idxname,) styledata[i] = df

---reformat

styledict = {str(idx): data.to_dict(orient="index") for idx, data in styledata.items()}

---create the folium slider

m = folium.Map(location=[qlat, qlon], zoom_start=6) g = TimeSliderChoropleth( allgpd.to_json(), styledict=styledict, control=True, overlay=True, show=False).add_to(m) m

I also attached my script in its entirety to this thread, as well (script.txt).

Environment details (Jupyter Notebook): System: sys.version_info(major=3, minor=9, micro=12, releaselevel='final', serial=0) Folium: 0.14.0 Branca: 0.6.0

I attached the data to this thread (data.zip).

data.zip script.txt

Conengmo commented 1 year ago

I just merged a PR that overhauls the TimeSliderChoropleth class. It could just be that it solves your issue as well. Can you try install folium from our main branch, see if your problem still exists?