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

在Google Colab中使用Geopandas.plot()可视化伊朗事故GIS数据遇阻求助

伊朗事故GIS数据可视化问题解决建议

先修正代码里的语法错误

你当前代码存在两处明显语法问题,这是导致可视化异常的直接原因:

  1. points_from_xy参数格式错误:代码里的gpd.points_from_xy(df.longitude)و df.latitude))混入了非英文符号,还多了一个右括号。修正为:
    gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.longitude, df.latitude))
    
  2. 列赋值语法错误:gdf['death_count']] = gdf[['death_count']].fillna(value=0)多了一个右方括号,修正为:
    gdf['death_count'] = gdf['death_count'].fillna(0)
    

修正后的完整基础代码

import pandas as pd
import matplotlib.pyplot as plt
import geopandas as gpd

# 读取数据
df = pd.read_excel("/content/accidents98.xlsx")
# 转换为GeoDataFrame
gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.longitude, df.latitude))
# 填充死亡人数的缺失值
gdf['death_count'] = gdf['death_count'].fillna(0)

# 创建绘图画布
fig, ax = plt.subplots(1, figsize=(20, 20))
ax.axis('off')
ax.set_title('伊朗交通事故分布', fontdict={'fontsize': '15', 'fontweight' : '3'})
# 绘制事故点,优化点样式提升可读性
gdf.plot(column='death_count', 
         cmap='RdYlGn_r',  # 反转配色,死亡人数越多颜色越深
         markersize=gdf['death_count']*10 + 5,  # 按死亡人数动态调整点大小
         alpha=0.7,  # 增加透明度避免点重叠
         ax=ax, 
         legend=True)
plt.show()

针对当前模糊可视化的优化方案

你目前的输出没有地理参考,看起来只是一片点,建议添加伊朗边界底图来让数据更有地理意义:

# 加载世界地图数据,提取伊朗边界
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
iran = world[world.name == 'Iran']

# 先绘制伊朗边界底图
iran.plot(ax=ax, color='lightgray', edgecolor='black')
# 再绘制事故点数据
gdf.plot(column='death_count', 
         cmap='RdYlGn_r', 
         markersize=gdf['death_count']*10 +5, 
         alpha=0.7, 
         ax=ax, 
         legend=True)

另外可以确认坐标系统:如果你的经纬度数据是WGS84标准(多数GPS数据都是),可以显式设置:

gdf = gdf.set_crs(epsg=4326, allow_override=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:01:56