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

Geopandas地图颜色设置问题:自定义颜色与实际显示不匹配

解决Geopandas地图颜色与指定值不匹配的问题

核心问题分析

你的代码有两个关键错误导致颜色不匹配:

  • 使用explore时,当column是存储颜色字符串的列,不需要指定cmap参数——你额外传入sorted(colors)会强制Geopandas把颜色字符串当作分类标签,用排序后的颜色列表重新映射,完全打乱了你手动分配的对应关系。
  • 速度区间存在重叠:最后一个条件between(40, np.inf, inclusive="right")和上一个区间31-40(右包含)重复,导致速度为40的行会匹配到上一个条件,而不是最后一个,颜色分配逻辑出错。

修正后的代码

import numpy as np
import geopandas as gpd

def speed_map(df, time):
    x = df[df['time_zone'] == time]
    # 修复区间重叠,把最后一个区间改成大于40,避免和上一个区间的40重复匹配
    conditions = [
        x["speed_KM"].between(0, 5, inclusive="right"),
        x["speed_KM"].between(6, 10, inclusive="right"),
        x["speed_KM"].between(11, 15, inclusive="right"),
        x["speed_KM"].between(16, 20, inclusive="right"),
        x["speed_KM"].between(21, 25, inclusive="right"),
        x["speed_KM"].between(26, 30, inclusive="right"),
        x["speed_KM"].between(31, 40, inclusive="right"),
        x["speed_KM"] > 40  # 替换原来的重叠区间条件
    ]
    colors = ["black", "darkred", "red", "blue", "purple", "orange", "yellow", "green"]
    x["color"] = np.select(conditions, colors, default="gray")
    # 移除cmap参数,直接使用color列的颜色值
    m = x.explore(column="color", legend=False)
    return m

关键修改说明

  1. 移除cmap参数:当column传入的是具体颜色值(如"black"、"red"这类CSS颜色字符串),explore会直接应用这些颜色,不需要颜色映射表。
  2. 修复区间重叠:把最后一个条件改为x["speed_KM"] >40,确保每个速度值只匹配一个区间,颜色分配逻辑准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:43:22