Python使用Plotly绘制Scattergeo全球地震分布地图空白问题求助
排查与修复方案
常见原因&对应解决步骤
- 检查数据文件路径是否正确
这是初学者最容易出现的问题,请确认Datasets/eq_data_30_day_m1.json文件的相对路径和你运行代码的工作目录匹配。你可以在读取文件后添加一行测试代码验证数据是否读取成功:
如果输出为0或者直接报错,说明路径配置错误,修改为json文件的绝对路径即可解决。print(len(all_eq_dicts)) - 过滤无效震级数据
部分地震数据集里存在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
相关产品推荐
相关产品推荐

