使用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
相关产品推荐
相关产品推荐

