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

Plotly绘制西西里地震烈度地图时全球统一颜色问题排查

解决Plotly绘制西西里地震烈度地图显示异常的问题

你遇到的全球单一颜色显示问题,主要由参数配置错误、地图范围未限定以及可能存在的地名匹配差异导致,以下是具体修复方案:

修复步骤

  • 修正无效的labels参数:原代码中labels={"aaa"}是语法错误,Plotly要求该参数为键值对字典,若不需要自定义标签可直接删除,或改为对应字段的说明(例如labels={"classificazione": "地震烈度等级"})。
  • 限定地图显示范围:取消scope="europe"的注释,强制地图聚焦欧洲区域,避免显示全球导致的视觉混淆。
  • 验证地名匹配一致性:确认GeoJSON中properties.Comune的地名与CSV中comune列的内容完全一致(包括大小写、重音符号、空格),这是数据关联的核心。若存在差异,需统一两边的地名格式(例如批量替换CSV中的拼写错误)。
  • 优化地理参数:在update_geos中添加projection_type="mercator",提升区域地图的显示精度。

修改后的完整代码

from urllib.request import urlopen
import json
import pandas as pd
import plotly.express as px

with urlopen('https://raw.githubusercontent.com/Gangelo99/Sismicita-Sicilia/main/classificazione-sismica.geojson') as response:
    polygons = json.load(response)

# 读取CSV时确保地名列格式正确
df = pd.read_csv("https://raw.githubusercontent.com/Gangelo99/Sismicita-Sicilia/main/dataset_choropleth.csv", dtype={"comune": str})

# 验证地名匹配(可选,用于排查问题)
# geo_names = [feat['properties']['Comune'] for feat in polygons['features']]
# df_names = df['comune'].tolist()
# print("GeoJSON中存在但CSV中没有的地名:", set(geo_names) - set(df_names))
# print("CSV中存在但GeoJSON中没有的地名:", set(df_names) - set(geo_names))

fig = px.choropleth(
    df,
    geojson=polygons,
    locations='comune',
    featureidkey='properties.Comune',
    color="classificazione",
    color_continuous_scale="Viridis",
    range_color=(1, 4),
    scope="europe",  # 限定地图范围
    labels={"classificazione": "地震烈度等级"}  # 修正labels参数
)
fig.update_layout(margin={"r": 0, "t": 0, "l": 0, "b": 0})
fig.update_geos(
    fitbounds="locations",
    visible=True,
    projection_type="mercator"  # 添加投影类型
)
fig.show()

额外排查提示

如果修复后仍有部分区域未着色,可取消代码中验证地名匹配的注释,查看两边地名的差异,针对性修正数据中的拼写或格式问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:34:59