基于计数设置半径的地图气泡不显示问题排查
地图气泡不显示问题排查与解决
问题描述
我编写了一个在地图上生成气泡的简单脚本,希望根据计数(强度)设置气泡半径。已获取包含经纬度和计数值的数据,也生成了地图,但地图上未显示气泡,求排查问题。
数据处理代码
import pandas as pd # 加载数据集到pandas dataframe df = pd.read_csv("autostrada_a_6.csv", delimiter=';', error_bad_lines=False) # 输出数据行数 print('数据行数: {:,}\n'.format(df.shape[0])) df.head() # 按经纬度分组统计计数并排序 locations = df.groupby(by=['latitudine','longitudine'])\ .count()['created_at']\ .sort_values(ascending=False) locations
数据预览截图

地图生成代码
# 创建空地图 m = folium.Map(location=[20,0], tiles="OpenStreetMap", zoom_start=2) def get_radius(freq): if freq < 5: return 0.1 elif freq < 15: return 0.5 elif freq < 257: return 1.0 for i,x in locations.iteritems(): folium.CircleMarker( location=[i[0], i[1]], radius=get_radius(x), color='crimson', fill=True, fill_color='crimson' ).add_to(m)
地图结果截图

问题原因与解决方案
气泡不显示是多个问题共同导致的,以下是逐一排查和修正的要点:
1. 地图初始定位与缩放错误
你的地图初始位置设为[20,0](大西洋中部),但数据点实际在意大利附近(纬度约45°、经度约10°),初始位置离数据点过远,且zoom_start=2的缩放级别极低,导致气泡完全在视野之外。
2. 代码缩进错误
Python依赖缩进识别代码块,你提供的地图生成代码中,for循环的缩进不符合规范,会导致代码无法正常执行。
3. 气泡半径过小
设置的最小半径仅为0.1,这么小的尺寸在地图上几乎无法识别,尤其是低缩放级别下。
4. 缺少地图保存/显示步骤
代码末尾没有添加保存地图为HTML文件或在交互环境中显示地图的逻辑,导致生成的地图无法被查看。
修正后的完整代码
import pandas as pd import folium # 加载数据集 df = pd.read_csv("autostrada_a_6.csv", delimiter=';', error_bad_lines=False) print(f'数据行数: {df.shape[0]:,}\n') # 按经纬度分组统计计数并排序 locations = df.groupby(by=['latitudine','longitudine'])\ .count()['created_at']\ .sort_values(ascending=False) # 初始化地图,定位到数据所在的意大利区域 m = folium.Map(location=[45, 10], tiles="OpenStreetMap", zoom_start=8) def get_radius(freq): if freq < 5: return 3 # 增大最小半径,确保气泡可见 elif freq < 15: return 7 elif freq < 257: return 12 # 正确缩进的循环,遍历所有经纬度点 for coords, count in locations.items(): folium.CircleMarker( location=[coords[0], coords[1]], radius=get_radius(count), color='crimson', fill=True, fill_color='crimson' ).add_to(m) # 保存地图为HTML文件 m.save('autostrada_map.html') # 若在Jupyter Notebook环境中运行,可添加以下代码直接显示地图 # display(m)
内容的提问来源于stack exchange,提问作者Rachele Franceschini
相关产品推荐
相关产品推荐

