You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

branca.colormap线性色卡使用问题:调色板与平滑标签设置

问题1:Linear Colormap使用其他调色板及查询可用列表

问题原因

branca.colormap.linear对象仅包含部分预定义线性调色板(如YlOrRd_09),gnuplot这类调色板不在其默认属性中,直接调用会触发属性不存在的报错。

解决方法

方法1:手动构建LinearColormap

如果需要使用gnuplot或其他非预定义调色板,可以直接通过LinearColormap类创建,搭配matplotlib获取对应调色板的颜色值:

from branca.colormap import LinearColormap
import matplotlib.cm as cm

# 从matplotlib获取gnuplot调色板的颜色数组
gnuplot_colors = cm.get_cmap('gnuplot', 256)(range(256))
# 转换为hex颜色格式
gnuplot_hex = [f'#{int(r*255):02x}{int(g*255):02x}{int(b*255):02x}' for r,g,b,a in gnuplot_colors]

# 创建线性色卡并设置数值范围
x = LinearColormap(gnuplot_hex).scale(1, 10)

方法2:查询预定义调色板列表

要查看linear对象下的所有可用预定义调色板,直接打印其属性即可:

from branca.colormap import linear
print(dir(linear))

输出结果中,非下划线开头的属性即为所有可用的预定义线性调色板名称。


问题2:保留自定义标签同时实现颜色平滑显示

问题原因

to_step()会将线性色卡转为离散分段模式,丢失平滑过渡效果;to_linear()则会重置刻度标签,回到默认线性刻度,无法保留自定义设置。

解决方法

无需通过to_step()和to_linear()来回转换,直接创建线性色卡后手动设置自定义刻度索引(index)即可,既保持颜色平滑过渡,又保留自定义标签:

import folium
import branca.colormap as cm

# 创建线性色卡并设置数值范围
color_mapa = cm.linear.YlOrRd_09.scale(10, 100)
# 设置自定义刻度标签对应的索引值
color_mapa.index = [10,20,30,40,50,60,70,80,90,100]
color_mapa.caption = 'Colors'

# 重复操作创建第二个色卡
color_mapa2 = cm.linear.YlOrRd_09.scale(10, 100)
color_mapa2.index = [10,20,30,40,50,60,70,80,90,100]
color_mapa2.caption = 'Colors2'

m = folium.Map(location=[52,20], zoom_start=7)
color_mapa.add_to(m)
color_mapa2.add_to(m)
m.save('mapy_test.html')

生成的色卡会保持颜色平滑过渡,同时显示你自定义的刻度标签。


内容的提问来源于stack exchange,提问作者Maciej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:10:30