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

Jupyter Notebook中Bokeh地图无法显示问题求助

解决Bokeh绘制超大数据量地图无输出问题

核心原因

2,303,566条记录直接渲染单个圆形标记,会导致浏览器内存溢出或渲染超时——这是Jupyter无输出且无报错的主要原因,前端无法处理如此庞大的图形元素,而非后端代码逻辑错误(空白地图正常显示已验证基础配置正确)。

分步解决方案

1. 验证小样本数据,确认代码逻辑

先取小样本测试,排除代码本身问题:

# 随机采样1万条数据
df_sample = df.sample(n=10000, random_state=42)
source = ColumnDataSource(data=df_sample)

# 后续绘图代码不变,替换source为df_sample的数据源

如果样本能正常显示,说明问题完全来自数据量过大。

2. 用聚合图形替代单个点渲染

针对百万级数据,Bokeh提供了适合的聚合型图形,推荐两种方案:

方案A:六边形瓦片聚合(HexTiles)

将地图划分为六边形网格,每个网格展示数据聚合值(如平均火灾大小):

from bokeh.models import HexTile

# 调整六边形大小(根据数据范围修改size参数)
p.hex_tile(q="mercator_x", r="mercator_y", size=5000,
           fill_color=linear_cmap(field_name='FIRE_SIZE', palette=palette, low=df['FIRE_SIZE'].min(), high=df['FIRE_SIZE'].max()),
           fill_alpha=0.7, source=source)
方案B:热力图(基于二维直方图)

计算经纬度网格的密度,用色块展示分布:

# 计算二维直方图
x_bins = np.linspace(df['mercator_x'].min(), df['mercator_x'].max(), 200)
y_bins = np.linspace(df['mercator_y'].min(), df['mercator_y'].max(), 200)
hist, x_edges, y_edges = np.histogram2d(df['mercator_x'], df['mercator_y'], bins=[x_bins, y_bins])

# 转换为Bokeh数据源
heat_source = ColumnDataSource(data=dict(
    x=x_edges[:-1],
    y=y_edges[:-1],
    counts=hist.flatten()
))

color_mapper = LinearColorMapper(palette=RdYlGn[11], low=0, high=hist.max())
p.image(image='counts', x='x', y='y', dw=x_bins[1]-x_bins[0], dh=y_bins[1]-y_bins[0],
        color_mapper=color_mapper, source=heat_source)

3. 优化数据源传输

不要将整个DataFrame传给ColumnDataSource,只保留绘图必需的列,减少前端加载数据量:

# 仅选择绘图所需列
df_filtered = df[['mercator_x', 'mercator_y', 'FIRE_SIZE', 'FIRE_YEAR', 'STATE']]
source = ColumnDataSource(data=df_filtered)

4. 检查墨卡托坐标异常值

确认转换后的坐标没有超出地图可视范围:

print(df['mercator_x'].describe())
print(df['mercator_y'].describe())

如果存在极端值(如NaN或超出±2e7范围),过滤异常经纬度数据(示例为美国区域范围,可按需调整):

df = df[(df['LATITUDE'].between(20, 50)) & (df['LONGITUDE'].between(-130, -60))]

5. 查看浏览器控制台错误

Jupyter可能隐藏前端报错,打开浏览器开发者工具(F12)→ Console面板,查看是否有内存不足或渲染超时的错误,直接确认问题根源。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:30:16