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

Plotly绘制Choropleth地图时出现lat属性无效的ValueError错误

解决Plotly Choropleth地图的lat参数错误问题

问题原因

Plotly的Choropleth组件是基于地理区域边界(如国家、州、城市的GeoJSON数据)来填充颜色的,核心参数为locationmode、locations(对应区域标识,比如州代码、名称)和z(数值特征),并不支持直接传入lat(纬度)和lon(经度)参数,这就是触发ValueError的原因。

两种可行解决方案

方案1:改用散点/密度地图展示经纬度关联数值

如果数据是景点级别的经纬度点,想要展示每个点的数值特征,推荐用Scattermapbox(带数值标记的散点地图)或Densitymapbox(热力密度地图),示例代码如下:

import plotly.express as px
import pandas as pd

# 读取数据集
df = pd.read_csv("dataset tempat perlancongan Malaysia.csv")

# 使用Scattermapbox绘制带数值的经纬度散点图
fig = px.scatter_mapbox(
    df,
    lat="latitude_column",  # 替换为你的纬度列名
    lon="longitude_column", # 替换为你的经度列名
    color="numeric_feature",# 替换为要关联的数值特征列名
    zoom=6,
    mapbox_style="carto-positron",
    hover_name="attraction_name" # 替换为景点名称列名
)

fig.show()

方案2:用Choropleth展示区域聚合数值

如果需要按马来西亚的州/区域展示聚合后的数值(比如每个州的景点数量、平均评分),需要准备马来西亚的区域GeoJSON边界数据,再关联数据集里的行政区划字段:

import plotly.express as px
import pandas as pd

# 读取数据集并按区域聚合数值
df = pd.read_csv("dataset tempat perlancongan Malaysia.csv")
agg_df = df.groupby("state_column")["numeric_feature"].mean().reset_index() # 替换为你的州列名和数值列

# 加载马来西亚州级GeoJSON(本地文件)
malaysia_geojson = "malaysia_states.geojson"

# 绘制Choropleth地图
fig = px.choropleth(
    agg_df,
    geojson=malaysia_geojson,
    locations="state_column", # 与GeoJSON中properties的区域名称/代码匹配
    featureidkey="properties.name", # 替换为GeoJSON中对应区域名称的字段
    color="numeric_feature",
    color_continuous_scale="Viridis",
    scope="asia"
)

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

关键提示

  • 替换代码中所有占位符(如latitude_column、state_column)为数据集实际列名
  • GeoJSON可从公开地理数据平台下载,需确保其区域标识字段能和你的数据集匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:15:34