Plotly Choropleth_mapbox绘制乌拉圭失业率地图无着色问题求助
解决Plotly Choropleth_mapbox乌拉圭行政区地图无法渲染着色问题
你的代码核心问题在于使用了蒙特利尔选区的GeoJSON数据(px.data.election_geojson()),而非乌拉圭行政区的地理数据,同时保留了无关的选举示例数据(df = px.data.election()),这导致数据与地理边界无法匹配,自然渲染不出着色区域。以下是具体修复步骤:
关键修复点
- 替换GeoJSON数据:必须使用包含乌拉圭各行政区(Departamentos)的GeoJSON文件,确保其
properties字段中包含与你的uruguay数据框Depto列对应的行政区名称。 - 匹配名称一致性:检查
uruguay["Depto"]的所有值,与GeoJSON中properties里的行政区名称完全一致(包括大小写、拼写、特殊字符,比如是否带重音符号)。 - 清理无关代码:移除示例中的
df = px.data.election(),这部分对你的需求毫无作用。
修正后的示例代码
假设你已获取乌拉圭行政区的GeoJSON文件(比如命名为uruguay_deptos.geojson),且uruguay数据框的Depto列与GeoJSON中properties.NOMBRE字段匹配:
import plotly.express as px import json # 加载乌拉圭行政区GeoJSON with open("uruguay_deptos.geojson", "r") as f: uruguay_geojson = json.load(f) # 假设uruguay数据框结构:Depto(行政区名称)、Unemp_rate(失业率) fig = px.choropleth_mapbox( uruguay, geojson=uruguay_geojson, color="Unemp_rate", locations="Depto", # 替换为GeoJSON中对应的属性键,比如properties.NOMBRE或properties.Depto featureidkey="properties.NOMBRE", center={"lat": -33.3816, "lon": -56.5245}, mapbox_style="carto-positron", zoom=5.5 ) fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0}) fig.show()
额外验证步骤
如果仍无法渲染,先检查名称匹配情况:
# 提取GeoJSON中的所有行政区名称 geojson_deptos = {feat["properties"]["NOMBRE"] for feat in uruguay_geojson["features"]} # 提取数据框中的行政区名称 df_deptos = set(uruguay["Depto"].unique()) # 检查不匹配的项 print("数据框中存在但GeoJSON没有的行政区:", df_deptos - geojson_deptos) print("GeoJSON中存在但数据框没有的行政区:", geojson_deptos - df_deptos)
如果输出非空,说明存在名称不匹配,需要统一两边的名称格式(比如去掉重音、统一大小写)。
内容的提问来源于stack exchange,提问作者Mateo Severi
相关产品推荐
相关产品推荐

