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
1601 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
"""
39
var times = {{this.times}};
40
41
{{this._parent.get_name()}}.timeDimension = L.timeDimension(
42
{times : times, currentTime: new Date(1)}
43
);
44
45
var {{this._control_name}} = new L.Control.TimeDimensionCustom({{this.index}}, {
46
autoPlay: {{this.auto_play}},
47
backwardButton: {{this.backward_button}},
48
displayDate: {{this.display_index}},
49
forwardButton: {{this.forward_button}},
50
limitMinimumRange: {{this.limit_minimum_range}},
51
limitSliders: {{this.limit_sliders}},
52
loopButton: {{this.loop_button}},
53
maxSpeed: {{this.max_speed}},
54
minSpeed: {{this.min_speed}},
55
playButton: {{this.play_button}},
56
playReverseButton: {{this.play_reverse_button}},
57
position: "{{this.position}}",
58
speedSlider: {{this.speed_slider}},
59
speedStep: {{this.speed_step}},
60
styleNS: "{{this.style_NS}}",
61
timeSlider: {{this.time_slider}},
62
timeSliderDragUpdate: {{this.time_slider_drag_update}},
63
timeSteps: {{this.index_steps}}
64
})
65
.addTo({{this._parent.get_name()}});
66
67
var {{this.get_name()}} = new TDHeatmap({{this.data}},
68
{heatmapOptions: {
69
radius: {{this.radius}},
70
blur: {{this.blur}},
71
minOpacity: {{this.min_opacity}},
72
maxOpacity: {{this.max_opacity}},
73
scaleRadius: {{this.scale_radius}},
74
useLocalExtrema: {{this.use_local_extrema}},
75
defaultWeight: 1,
76
{% if this.gradient %}gradient: {{ this.gradient }}{% endif %}
77
}
78
});
79
{{ this.get_name() }}.addTo({{ this._parent.get_name() }});
80
"""
81
)
82
83
assert normalize(tmpl.render(this=hm)) in out
84
85