<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Examples of plugins usage in folium
In this notebook we show a few illustrations of folium's plugin extensions.
This is a development notebook
Step1:  ScrollZoomToggler
Adds a button to enable/disable zoom scrolling.
Step2:  MarkerCluster
Adds a MarkerCluster layer on the map.
Step3:  Terminator
Step4:  Leaflet.boatmarker
Step5:  Leaflet.TextPath
<ASSISTANT_TASK:>
Python Code:
# This is to import the repository's version of folium ; not the installed one.
import sys, os
sys.path.insert(0,'..')
import folium
from folium import plugins
import numpy as np
import json
%load_ext autoreload
%autoreload 2
Explanation: Examples of plugins usage in folium
In this notebook we show a few illustrations of folium's plugin extensions.
This is a development notebook
End of explanation
m = folium.Map([45.,3.], zoom_start=4)
plugins.ScrollZoomToggler().add_to(m)
m
Explanation: ScrollZoomToggler
Adds a button to enable/disable zoom scrolling.
End of explanation
N = 100
data = np.array([
    np.random.uniform(low=35,high=60, size=N),   # random latitudes in Europe
    np.random.uniform(low=-12,high=30, size=N),  # random longitudes in Europe
    range(N),                                    # popups are simple numbers 
    ]).T
m = folium.Map([45.,3.], zoom_start=4)
plugins.MarkerCluster(data).add_to(m)
m
Explanation: MarkerCluster
Adds a MarkerCluster layer on the map.
End of explanation
m = folium.Map([45.,3.], zoom_start=1)
plugins.Terminator().add_to(m)
plugins.ScrollZoomToggler().add_to(m)
m
Explanation: Terminator
End of explanation
m = folium.Map([30.,0.], zoom_start=3)
plugins.BoatMarker((34,-43), heading=45, wind_heading=150, wind_speed=45, color="#8f8").add_to(m)
plugins.BoatMarker((46,-30), heading=-20, wind_heading=46, wind_speed=25, color="#88f").add_to(m)
m
Explanation: Leaflet.boatmarker
End of explanation
m = folium.Map([20.,0.], zoom_start=3)
wind_locations = [[59.3556, -31.99219], [55.17887, -42.89062], [47.7541, -43.94531], [38.27269, -37.96875],
             [27.05913, -41.13281], [16.29905, -36.5625], [8.40717, -30.23437], [1.05463, -22.5],
             [-8.75479, -18.28125], [-21.61658, -20.03906], [-31.35364, -24.25781], [-39.90974, -30.9375],
             [-43.83453, -41.13281], [-47.7541, -49.92187], [-50.95843, -54.14062], [-55.9738, -56.60156]]
wind_line = folium.PolyLine(wind_locations, weight=15, color='#8EE9FF').add_to(m)
attr = {'fill': '#007DEF', 'font-weight': 'bold', 'font-size': '24'}
plugins.PolyLineTextPath(wind_line, ") ", repeat=True, offset=7, attributes=attr).add_to(m)
danger_line = folium.PolyLine([[-40.311, -31.952], [-12.086, -18.727]], weight=10, color='orange', opacity=0.8).add_to(m)
attr = {'fill': 'red'}
plugins.PolyLineTextPath(danger_line, "\u25BA", repeat=True, offset=6, attributes=attr).add_to(m)
plane_line = folium.PolyLine([[-49.38237, -37.26562], [-1.75754, -14.41406], [51.61802, -23.20312]], weight=1, color='black').add_to(m)
attr = {'font-weight':'bold', 'font-size':'24'}
plugins.PolyLineTextPath(plane_line, "\u2708     ", repeat=True, offset=8, attributes=attr).add_to(m)
line_to_new_dehli = folium.PolyLine([[46.67959447, 3.33984375],
                                     [46.5588603, 29.53125],
                                     [42.29356419, 51.328125],
                                     [35.74651226, 68.5546875],
                                     [28.65203063, 76.81640625]]).add_to(m)
line_to_hanoi = folium.PolyLine([[28.76765911, 77.60742188],
                                 [27.83907609, 88.72558594],
                                 [25.68113734, 97.3828125],
                                 [21.24842224, 105.77636719]]).add_to(m)
plugins.PolyLineTextPath(line_to_new_dehli, "To New Delhi", offset=-5).add_to(m)
plugins.PolyLineTextPath(line_to_hanoi, "To Hanoi", offset=-5).add_to(m)
m
Explanation: Leaflet.TextPath
End of explanation
<END_TASK>