Folium হলো একটি শক্তিশালী পাইথন লাইব্রেরি যা নানাবিধ Leaflet ম্যাপ তৈরি করতে দেয়। Leaflet/folium ম্যাপ ইন্টারঅ্যাক্টিভ হওয়ায় ড্যাশবোর্ড বানাতে আদর্শ।
ইনস্টলেশন
Folium ইনস্টল করা খুব সহজ পিপ দিয়ে:
$pip install folium

বেসিক ম্যাপ
# লাইব্রেরি ইম্পোর্ট
import folium
# ল্যাটিটিউড, লনগিটিউড ও জুম লেভেল ৪। জুম নম্বর যত বড়, তত নিকট থেকে দেখা যায়।
mapOBJ = folium.Map(location=[17.3616, 78.4747], zoom_start=4, tiles='Stamen Terrain')
# Map অবজেক্টের save মেথড ম্যাপ তৈরি করবে
mapOBJ.save('map2.html')
আউটপুট

কেস ২: GeoJson
import folium
import os
from folium import features
import numpy as np
import pandas as pd
N = 1000
lons = +5 - np.random.normal(size=N)
lats = 48 - np.random.normal(size=N)
data = {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'geometry': {
'type': 'MultiPoint',
'coordinates': [[lon, lat] for (lat, lon) in zip(lats, lons)],
},
'properties': {'prop0': 'value0'}
},
],
}
m = folium.Map([17.3616, 78.4747], zoom_start=10)
m.add_child(features.GeoJson(data))
m.save('Features.html')
আউটপুট

কেস ৩: Marker, Icon, Popup
import folium
from folium import features
m = folium.Map([17.3616, 78.4747], zoom_start=15)
mk = features.Marker([17.3616, 78.4747])
pp = folium.Popup('Charminar')
ic = features.Icon(color='red')
mk.add_child(ic)
mk.add_child(pp)
m.add_child(mk)
m.save('Features_1.html')
আউটপুট

কেস ৪: Vega ভিজ্যুয়ালাইজেশন সহ Popup
এখানে vincent লাইব্রেরি ব্যবহার করা হয়েছে, যা পাইথন ডেটা স্ট্রাকচারকে Vega ভিজ্যুয়ালাইজেশন গ্রামারে রূপান্তর করে।
$pip install vincent
import folium
from folium import features
import numpy as np
import json
import vincent
N = 100
multi_iter2 = {
'x': np.random.uniform(size=(N,)),
'y': np.random.uniform(size=(N,)),
}
scatter = vincent.Scatter(multi_iter2, iter_idx='x', height=100, width=200)
data = json.loads(scatter.to_json())
m = folium.Map([17.3616, 78.4747], zoom_start=10)
mk = features.Marker([17.3616, 78.4747])
p = folium.Popup('Charminar')
v = features.Vega(data, width='100%', height='100%')
mk.add_child(p)
p.add_child(v)
m.add_child(mk)
m.save('Features_2.html')
আউটপুট
