基于Folium与Pandas实现t/a数值关联渐变着色热力圆点地图问题排查
问题原因
你当前代码不生效的核心原因是:gradient、blur、max_zoom 这些参数是热力图folium.HeatMap的专属配置,普通的folium.Circle类不会识别这些参数,所以所有圆点都会使用默认的蓝色样式。
解决方法
我们可以借助branca的线性色阶工具,把t/a字段的数值直接映射到黄→橙→红的渐变色彩上,再把对应颜色传给Circle的填充色参数即可,修改后代码如下:
import pandas as pd import folium from branca.colormap import LinearColormap # 读取数据 df_bedarf = pd.read_csv('C:/Users/xxxxxx/Desktop/xxxxx/xxxxxx.csv', sep = ";") # 初始化颜色映射规则:黄→橙→红,范围匹配t/a的最小、最大值 color_map = LinearColormap( colors=["yellow", "orange", "red"], vmin=df_bedarf["t/a"].min(), vmax=df_bedarf["t/a"].max() ) # 初始化地图 map_points = folium.Map(location = [47.57087, 13.43828], zoom_start = 7) # 循环添加圆点 for _, row in df_bedarf.iterrows(): folium.Circle( location = [row["Latitude"], row["Longitude"]], popup = f"{row['Suburb']}: {row['Sort']}(t/a:{row['t/a']})", radius = 10000, # 配置圆点颜色 color = color_map(row["t/a"]), # 描边颜色和填充色保持一致 fill = True, fill_color = color_map(row["t/a"]), fill_opacity = 0.3 ).add_to(map_points) # 可选:把色阶图例添加到地图上 color_map.add_to(map_points) map_points
补充说明
- 把原来按索引遍历的写法改成了
iterrows遍历,避免索引错位导致的取值错误 - 你可以调整
fill_opacity参数修改圆点透明度,调整colors列表自定义渐变效果 - 代码里默认添加了色阶图例,不需要的话删掉最后
color_map.add_to(map_points)即可
内容的提问来源于stack exchange,提问作者wischi11
相关产品推荐
相关产品推荐

