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

使用geoplot绘制KDE地理密度图时触发IndexError问题排查求助

调试KDE图绘制时的IndexError问题

问题背景

我尝试基于费城犯罪事件数据集和费城警区边界数据集创建KDE图,展示盗窃类犯罪的地理密度。数据处理代码如下:

import geopandas as gpd
import geoplot as gplt
from shapely.geometry import Point  # 注:原代码未导入Point,可能是遗漏项

gdf = data.copy()
gdf['Coordinates'] = list(zip(gdf.point_x, gdf.point_y))
gdf.Coordinates = gdf.Coordinates.apply(Point)
gdf = gpd.GeoDataFrame(
    gdf,
    geometry='Coordinates',
    crs="epsg:4326"
)

# 筛选盗窃类犯罪数据
crime_data = gdf.loc[gdf["text_general_code"] == 'Thefts']

# 处理区域边界数据
land = pd_boundary.unary_union
land = gpd.GeoDataFrame(gpd.GeoSeries(land), columns=["geometry"])
land = land.set_geometry("geometry")
land.crs = "epsg:4326"

执行以下绘图代码时,出现IndexError: index out of range错误:

ax = gplt.polyplot(land)
gplt.kdeplot(
    crime_data,
    ax=ax
)

调试思路

  • 检查筛选后的犯罪数据是否为空:
    执行print(crime_data.empty)或print(crime_data.shape)确认crime_data是否包含有效数据。若为空,排查筛选条件:

    • 用print(gdf["text_general_code"].unique())查看所有犯罪类型,确认是否存在"Thefts"(可能存在拼写差异,比如实际值为"Theft")。
  • 验证边界地理数据的有效性:
    检查land的几何对象是否有效:

    print(land.is_valid)
    print(land.geometry)
    

    若unary_union生成了空或无效几何,会导致polyplot的轴范围异常,进而引发kdeplot报错。

  • 确认坐标参考系(CRS)一致性:
    验证crime_data和land的CRS是否完全匹配:

    print(crime_data.crs)
    print(land.crs)
    

    若不一致,用to_crs统一:

    crime_data = crime_data.to_crs(land.crs)
    
  • 单独测试kdeplot功能:
    先不结合polyplot,直接运行gplt.kdeplot(crime_data),若正常则排查polyplot生成的轴是否异常:

    ax = gplt.polyplot(land)
    print(ax.get_xlim())
    print(ax.get_ylim())
    

    轴范围不合理(如全为NaN)会导致kdeplot无法计算密度。

  • 检查库版本兼容性:
    打印geoplot和geopandas版本,确认是否存在已知bug:

    print(gplt.__version__)
    print(gpd.__version__)
    

    尝试升级或降级库(如pip install --upgrade geoplot geopandas)。

  • 过滤无效几何对象:
    检查crime_data中的几何是否有无效或空值,过滤后再测试:

    crime_data = crime_data[crime_data.geometry.is_valid & ~crime_data.geometry.is_empty]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:20:32