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

