在 Python folium 中使用 FastMarkerCluster 中的自定义标记?
Use customized markers in FastMarkerCluster in Python folium?
我可以使用 MarkerCluster 将数据添加到 folium 地图,并根据每个点的参数改变标记的参数。
###Toy Example 1###
import pandas as pd
import numpy as np
import folium
import folium.plugins as plugins
lats = np.asarray([-54.4, -54.5, -54.6])
longs = np.asarray([-69.5, -69.5, -69.5])
data = np.asarray([70, 90, 5])
colour = np.asarray(['green', 'orange', 'red'])
dummy = [list(a) for a in zip(lats, longs, data, colour)]
dummy2 = pd.DataFrame(dummy, columns=['lat', 'lng', 'data', 'colour'])
dmap = folium.Map(location = [-54.5, -69.5], zoom_start = 7)
mc=plugins.MarkerCluster()
for a, row in dummy2.iterrows():
folium.CircleMarker(location=[row[0],row[1]],
radius=row[2], color=row[3], fill=True).add_to(mc)
mc.add_to(dmap)
dmap
由于我的用例有数千个点,我想用 FastMarkerCluster 做一些类似于上面的事情。我达到这个目标最远的是:
###Toy Example 2###
callback = """\
function (row) {
var marker;
marker = L.circle(new L.LatLng(row[0], row[1]), {color:'red'});
return marker;
};
"""
lats = np.asarray([-54.4, -54.5, -54.6])
longs = np.asarray([-69.5, -69.5, -69.5])
data = np.asarray([70, 90, 5])
colour = np.asarray(['green', 'orange', 'red'])
dummy = [list(a) for a in zip(lats, longs)]
dummy2 = pd.DataFrame(dummy, columns=['lat', 'lng'])
dmap = folium.Map(location = [-54.5, -69.5], zoom_start = 7)
plugins.FastMarkerCluster(dummy, callback=callback).add_to(dmap)
dmap
我可以设想将 {radius: row[2], color: row[3]}
添加到回调中以获得我想要的功能。但是,如果我将 data
and/or colour
数组添加到 dummy
(如玩具示例 1 中所示),我会得到 TypeError: must be real number, not numpy.str_
。如果我在示例 2 中使用 dummy2
,我会得到 TypeError: must be real number, not str
.
非常感谢对此的任何帮助。
F
干杯,
-R
感谢那边的 Conegmo,现在在 github 的 Folium master 分支中解决了这个问题。列名作为数据的一部分被读取时出现了问题。目前,使用以下方法安装 Folium 意味着我发布的所有虚拟示例都可以使用。
pip install git+https://github.com/python-visualization/folium.git
我可以使用 MarkerCluster 将数据添加到 folium 地图,并根据每个点的参数改变标记的参数。
###Toy Example 1###
import pandas as pd
import numpy as np
import folium
import folium.plugins as plugins
lats = np.asarray([-54.4, -54.5, -54.6])
longs = np.asarray([-69.5, -69.5, -69.5])
data = np.asarray([70, 90, 5])
colour = np.asarray(['green', 'orange', 'red'])
dummy = [list(a) for a in zip(lats, longs, data, colour)]
dummy2 = pd.DataFrame(dummy, columns=['lat', 'lng', 'data', 'colour'])
dmap = folium.Map(location = [-54.5, -69.5], zoom_start = 7)
mc=plugins.MarkerCluster()
for a, row in dummy2.iterrows():
folium.CircleMarker(location=[row[0],row[1]],
radius=row[2], color=row[3], fill=True).add_to(mc)
mc.add_to(dmap)
dmap
由于我的用例有数千个点,我想用 FastMarkerCluster 做一些类似于上面的事情。我达到这个目标最远的是:
###Toy Example 2###
callback = """\
function (row) {
var marker;
marker = L.circle(new L.LatLng(row[0], row[1]), {color:'red'});
return marker;
};
"""
lats = np.asarray([-54.4, -54.5, -54.6])
longs = np.asarray([-69.5, -69.5, -69.5])
data = np.asarray([70, 90, 5])
colour = np.asarray(['green', 'orange', 'red'])
dummy = [list(a) for a in zip(lats, longs)]
dummy2 = pd.DataFrame(dummy, columns=['lat', 'lng'])
dmap = folium.Map(location = [-54.5, -69.5], zoom_start = 7)
plugins.FastMarkerCluster(dummy, callback=callback).add_to(dmap)
dmap
我可以设想将 {radius: row[2], color: row[3]}
添加到回调中以获得我想要的功能。但是,如果我将 data
and/or colour
数组添加到 dummy
(如玩具示例 1 中所示),我会得到 TypeError: must be real number, not numpy.str_
。如果我在示例 2 中使用 dummy2
,我会得到 TypeError: must be real number, not str
.
非常感谢对此的任何帮助。 F 干杯, -R
感谢那边的 Conegmo,现在在 github 的 Folium master 分支中解决了这个问题。列名作为数据的一部分被读取时出现了问题。目前,使用以下方法安装 Folium 意味着我发布的所有虚拟示例都可以使用。
pip install git+https://github.com/python-visualization/folium.git