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

使用Python Plotly的choropleth绘制GeoJSON地图显示异常如何解决?

Plotly绘制GeoJSON Choropleth地图异常修复方案

一、geopandas.plot需要加aspect=1的原因

你的原始GeoJSON使用投影坐标系(单位为米等长度单位),未加aspect=1时matplotlib会自动拉伸坐标轴适配画布,导致地图变形。该参数作用是强制保持x/y轴比例为1:1,还原真实地理形状。

二、Plotly绘图异常修复步骤

1. 完成坐标系转换

Plotly的choropleth接口默认仅支持WGS84(EPSG:4326)经纬度坐标系,你之前注释的坐标转换代码是必要步骤,取消注释确保转换生效:

import geopandas as gpd
import plotly.express as px
import pyproj

states = gpd.read_file('diamante.geojson')
# 转为Plotly支持的WGS84经纬度坐标系
states.to_crs(pyproj.CRS.from_epsg(4326), inplace=True)

2. 修正choropleth传参

你之前给geojson参数传入GeoSeries格式不符合要求,需要先将GeoDataFrame转为标准GeoJSON字典,再对应参数传入:

# 转为Plotly可识别的标准GeoJSON字典格式
states_geojson = states.__geo_interface__

fig = px.choropleth(
    states,
    geojson=states_geojson,
    locations=states.index, # 索引会自动对应GeoJSON中每个要素的id字段
    color="varon" # 直接传入列名即可,无需取Series对象
)

3. 配置地理范围并显示

坐标系转换完成后,再加范围适配代码就不会出现空白问题:

fig.update_geos(fitbounds="locations", visible=False)
fig.show()

三、额外排查点

如果仍显示异常,可先检查varon列是否存在空值,可提前做过滤或填充处理后再绘图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:48:03