Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
python-visualization
GitHub Repository: python-visualization/folium
Path: blob/main/tests/plugins/test_heat_map_withtime.py
2542 views
1
"""
2
Test HeatMapWithTime
3
------------
4
"""
5
6
import numpy as np
7
8
import folium
9
from folium import plugins
10
from folium.template import Template
11
from folium.utilities import normalize
12
13
14
def test_heat_map_with_time():
15
np.random.seed(3141592)
16
initial_data = np.random.normal(size=(100, 2)) * np.array([[1, 1]]) + np.array(
17
[[48, 5]]
18
)
19
move_data = np.random.normal(size=(100, 2)) * 0.01
20
data = [(initial_data + move_data * i).tolist() for i in range(100)]
21
m = folium.Map([48.0, 5.0], zoom_start=6)
22
hm = plugins.HeatMapWithTime(data).add_to(m)
23
24
out = normalize(m._parent.render())
25
26
# We verify that the script imports are present.
27
script = '<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.timedimension.min.js"></script>' # noqa
28
assert script in out
29
script = '<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/pa7_hm.min.js"></script>' # noqa
30
assert script in out
31
script = '<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/pa7_leaflet_hm.min.js"></script>' # noqa
32
assert script in out
33
script = '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.timedimension.control.css"/>' # noqa
34
assert script in out
35
36
# We verify that the script part is correct.
37
tmpl = Template("""
38
var times = {{this.times}};
39
40
{{this._parent.get_name()}}.timeDimension = L.timeDimension(
41
{times : times, currentTime: new Date(1)}
42
);
43
44
var {{this._control_name}} = new L.Control.TimeDimensionCustom({{this.index}}, {
45
autoPlay: {{this.auto_play}},
46
backwardButton: {{this.backward_button}},
47
displayDate: {{this.display_index}},
48
forwardButton: {{this.forward_button}},
49
limitMinimumRange: {{this.limit_minimum_range}},
50
limitSliders: {{this.limit_sliders}},
51
loopButton: {{this.loop_button}},
52
maxSpeed: {{this.max_speed}},
53
minSpeed: {{this.min_speed}},
54
playButton: {{this.play_button}},
55
playReverseButton: {{this.play_reverse_button}},
56
position: "{{this.position}}",
57
speedSlider: {{this.speed_slider}},
58
speedStep: {{this.speed_step}},
59
styleNS: "{{this.style_NS}}",
60
timeSlider: {{this.time_slider}},
61
timeSliderDragUpdate: {{this.time_slider_drag_update}},
62
timeSteps: {{this.index_steps}}
63
})
64
.addTo({{this._parent.get_name()}});
65
66
var {{this.get_name()}} = new TDHeatmap({{this.data}},
67
{heatmapOptions: {
68
radius: {{this.radius}},
69
blur: {{this.blur}},
70
minOpacity: {{this.min_opacity}},
71
maxOpacity: {{this.max_opacity}},
72
scaleRadius: {{this.scale_radius}},
73
useLocalExtrema: {{this.use_local_extrema}},
74
defaultWeight: 1,
75
{% if this.gradient %}gradient: {{ this.gradient }}{% endif %}
76
}
77
});
78
{{ this.get_name() }}.addTo({{ this._parent.get_name() }});
79
""")
80
81
assert normalize(tmpl.render(this=hm)) in out
82
83