4

我正在使用 Folium 创建热图。我的数据包含 3 列,一列是类别、纬度和经度。经纬度点分为 A、B 和 C 3 类。我可以使用 folium 绘制热图,但我需要添加显示点之间色差的图例。我需要将点标记为基于类别的 3 种不同颜色。

我附上了供您参考的示例代码。感谢您的帮助。

提前致谢!

from folium import plugins
from folium.plugins import HeatMap
from folium.plugins import MarkerCluster
import pandas as pd

map = folium.Map(location=[lat, long],zoom_start =12) 
data = pd.read_csv(filename)
# List comprehension to make out list of lists
heat_data = [[row['LAT'],row['LONG'],] for index, row in data.iterrows()]
# Plot it on the map
HeatMap(heat_data).add_to(map)
# Display the map
map
map.save('C:\Temp\map2.html')
4

2 回答 2

7

以下是解决方案,它基于@Alexei Novikov 的答案 下面的代码更完整

import branca.colormap
from collections import defaultdict
import folium
import webbrowser
from folium.plugins import HeatMap 

map_osm = folium.Map(llocation=[35,110],zoom_start=1)

steps=20
colormap = branca.colormap.linear.YlOrRd_09.scale(0, 1).to_step(steps)
gradient_map=defaultdict(dict)
for i in range(steps):
    gradient_map[1/steps*i] = colormap.rgb_hex_str(1/steps*i)
colormap.add_to(map_osm) #add color bar at the top of the map

HeatMap(data1,gradient = gradient_map).add_to(map_osm) # Add heat map to the previously created map

file_path = r"C:\\test.html"
map_osm.save(file_path) # Save as html file
webbrowser.open(file_path) # Default browser open
于 2019-12-05T07:49:59.483 回答
5

您必须使用颜色图值创建字典

steps = 20
color_map=cm.linear.PuBu.scale(0,1).to_step(steps)

gradient_map=defaultdict(dict)
for i in range(steps):
    gradient_map[1/steps*i] = color_map.rgb_hex_str(1/steps*i)

然后将其用作 HeatMap 的渐变。

HeatMap(heat_data, gradient = gradient_map)
于 2017-12-22T11:48:36.443 回答