python - 如何使用 Folium 将簇标记添加到 Choropleth
问题描述
我在 Folium 中使用 Choropleth 和 Cluster 标记图已经有一段时间了(这很棒)。我的问题是是否可以将它们组合在一张地图中,这样我就可以看到一个变量对另一个变量的影响程度。我可以让两种地图类型单独工作,所以那里没有问题。到目前为止,这是我尝试将两者结合起来的代码:
import pandas as pd
import folium
from folium.plugins import MarkerCluster
input_filename="input_filename.csv"
df = pd.read_csv(input_filename,encoding='utf8')
geo = 'blah.json'
comparison = 'comparison.csv'
comparison_data = pd.read_csv(comparison)
m = folium.Map(location=[Lat,Lon], zoom_start=12)
folium.Choropleth(
geo_data=geo,
name='choropleth',
data=comparison_data,
columns=['col1','col2'],
key_on='feature.properties.ID',
fill_color='OrRd',
fill_opacity=0.5,
line_opacity=0.5,
legend_name='Blah (%)'
).add_to(m)
folium.LayerControl().add_to(m)
marker_cluster = MarkerCluster().add_to(m)
for row in df.itertuples():
folium.Marker(location=[row.Lat,row.Lon],popup=row.Postcode).add_to(marker_cluster)
m
它会产生等值线,但也不会对集群标记进行分层。值得注意的是,我遇到了单独的集群标记问题,它们不会显示在 Jupyter 笔记本中,但我通过将文件保存为 html 来解决它,然后可以查看。
解决方案
好的,我已经解决了,真的很高兴!!解决方案是先做标记集群,然后跟进 Choropleth:
import pandas as pd
import folium
from folium.plugins import MarkerCluster
m = folium.Map(location=[Lat,Lon], zoom_start=12)
input_filename="input_filename.csv"
df = pd.read_csv(input_filename,encoding='utf8')
geo = 'blah.json'
comparison = 'comparison.csv'
comparison_data = pd.read_csv(comparison)
folium.LayerControl().add_to(m)
marker_cluster = MarkerCluster().add_to(m)
for row in df.itertuples():
folium.Marker(location=[row.Lat,row.Lon],popup=row.Postcode).add_to(marker_cluster)
folium.Choropleth(
geo_data=geo,
name='choropleth',
data=comparison_data,
columns=['col1','col2'],
key_on='feature.properties.ID',
fill_color='OrRd',
fill_opacity=0.5,
line_opacity=0.5,
legend_name='Blah (%)'
).add_to(m)
m
推荐阅读
- node.js - 自动从 MongoDB 服务器创建 Express API
- google-sheets - 谷歌表格:当给定元素在一行中时,如何获得包含 1、2、3 和 4 元素的所有组合(不重复)?
- javascript - 如何防止用户通过浏览器中的“检查元素”观看我服务器上的所有视频
- ruby-on-rails - 错误:没有这样的文件或目录@rb_sysopen - /var/www/ruby/blog/config/webpacker.yml (RuntimeError)
- c# - 如何从另一个 Blazor(“子”)组件调用一个 Blazor(父)组件中的方法?
- javascript - Underscore.js:使用嵌套的 objs 数组过滤对象
- azure-functions - Azure 函数:IDurableOrchestrationContext.CurrentUtcDateTime 与 DateTime.UtcNow
- python - 如何使用重复生成所有排列/使函数嵌套的 x 数量
- r - R:如何使用函数存储和更改输入
- c# - 检测子控件是否有视图模型