Plotly Choropleth可视化美国事故数据不准确问题排查求助
问题解决:Plotly美国州事故数量地图可视化数据不匹配
我正在使用Kaggle的「US Accidents」数据集,包含300万条交通事故记录。初步统计显示加州事故数量最多,但制作的Plotly Choropleth可视化却显示俄亥俄州事故最多,转换为对数刻度后问题仍未解决。
问题代码
states_by_accident = df.State.value_counts() import plotly.graph_objects as go fig = go.Figure(data = go.Choropleth( locations = df.State.unique(), z = states_by_accident, locationmode = 'USA-states', colorscale = 'Blues' )) fig.update_layout( geo_scope = 'usa' ) fig.show()
问题截图


问题原因
核心问题是数据索引与地理位置不匹配:
df.State.unique()返回的是州缩写的出现顺序,和states_by_accident的索引顺序不一致states_by_accident = df.State.value_counts()返回的Series是按事故数量降序排列的,其索引是州缩写,而你用df.State.unique()作为locations,导致数值和州对应错误,最终显示混乱
修复方案
直接使用states_by_accident.index作为locations,确保每个州的数值和地理位置一一对应,同时可添加对数刻度优化颜色区分:
import plotly.graph_objects as go # 统计各州事故数 states_by_accident = df.State.value_counts() fig = go.Figure(data=go.Choropleth( locations=states_by_accident.index, # 用value_counts的索引(州缩写)作为位置 z=states_by_accident.values, # 对应事故数值 locationmode='USA-states', colorscale='Blues', zscale='log', # 开启对数刻度,优化数值差距大的颜色显示 colorbar_title='事故数量(对数刻度)' )) fig.update_layout( title='美国各州交通事故数量分布', geo_scope='usa', title_x=0.5 # 标题居中 ) fig.show()
额外说明
- 若需要保留原始数值显示(非对数),可以去掉
zscale='log'参数 - 可根据需求调整
colorscale,比如换成'Reds'或自定义颜色范围
内容的提问来源于stack exchange,提问作者Admirsary
相关产品推荐
相关产品推荐

