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

Python使用Plotly绘制Scattergeo全球地震分布地图空白问题求助

排查与修复方案

常见原因&对应解决步骤

  • 检查数据文件路径是否正确
    这是初学者最容易出现的问题,请确认Datasets/eq_data_30_day_m1.json文件的相对路径和你运行代码的工作目录匹配。你可以在读取文件后添加一行测试代码验证数据是否读取成功:
    print(len(all_eq_dicts))
    
    如果输出为0或者直接报错,说明路径配置错误,修改为json文件的绝对路径即可解决。
  • 过滤无效震级数据
    部分地震数据集里存在mag为null、负值的异常值,会导致标记大小计算错误,渲染失败。修改数据提取的循环逻辑,过滤无效值:
    for eq_dict in all_eq_dicts:
        mag = eq_dict['properties']['mag']
        # 新增过滤逻辑
        if mag is None or mag < 0:
            continue
        lon = eq_dict['geometry']['coordinates'][0]
        lat = eq_dict['geometry']['coordinates'][1]
        title = eq_dict['properties']['title']
        mags.append(mag)
        lons.append(lon)
        lats.append(lat)
        hover_texts.append(title)
    
  • 替换为规范的Scattergeo写法
    字典格式声明图表类型存在版本兼容性问题,直接用你已经导入的Scattergeo类构建数据,可以避免渲染异常,替换原来的data构造代码:
    data = [
        Scattergeo(
            lon = lons,
            lat = lats,
            text = hover_texts,
            marker = {
                'size': [5*mag for mag in mags],
                'color': mags,
                'colorscale': 'Viridis',
                'reversescale': True,
                'colorbar': {'title': 'Magnitude'},
            }
        )
    ]
    
  • 排查浏览器加载问题
    如果代码运行没有报错,生成的HTML打开后还是空白,尝试按Ctrl+F5强制刷新页面,或者换其他浏览器打开文件即可。

修改后完整可运行代码

import json
from plotly.graph_objs import Scattergeo, Layout
from plotly import offline

# 读取地震数据
filename = 'Datasets/eq_data_30_day_m1.json'
with open(filename) as f:
    all_eq_data = json.load(f)

all_eq_dicts = all_eq_data['features']

# 提取震级、经纬度、提示文本,过滤无效数据
mags, lons, lats, hover_texts = [], [], [], []
for eq_dict in all_eq_dicts:
    mag = eq_dict['properties']['mag']
    if mag is None or mag < 0:
        continue
    lon = eq_dict['geometry']['coordinates'][0]
    lat = eq_dict['geometry']['coordinates'][1]
    title = eq_dict['properties']['title']
    mags.append(mag)
    lons.append(lon)
    lats.append(lat)
    hover_texts.append(title)

# 构建地震图表数据
data = [
    Scattergeo(
        lon = lons,
        lat = lats,
        text = hover_texts,
        marker = {
            'size': [5*mag for mag in mags],
            'color': mags,
            'colorscale': 'Viridis',
            'reversescale': True,
            'colorbar': {'title': 'Magnitude'},
        }
    )
]

my_layout = Layout(title='全球地震分布')

fig = {'data': data, 'layout': my_layout}
offline.plot(fig, filename='global_earthquakes.html')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:57:05