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

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()

问题截图

问题可视化截图1
问题可视化截图2

问题原因

核心问题是数据索引与地理位置不匹配:

  • 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:50:34