You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Plotly Python绘制美国Choropleth地图显示空白问题求助

解决Plotly美国州Choropleth地图空白问题

我来帮你排查代码里的问题,让你的枪支暴力数据地图正常显示:

问题分析

你的代码里有几个关键问题导致地图只显示空白轮廓:

  1. 缺少Pandas导入:你用了pd.read_csv但没导入pandas,这会直接报错(如果没报错说明你实际运行时补了,但最好明确写出来)。
  2. reset_index的错误用法ans=ba.reset_index(inplace=True)这行里,inplace=True会原地修改ba,同时返回None,虽然你后续用的是ba,但这个写法容易混淆,而且可能导致意外的DataFrame结构问题。
  3. 列名歧义:处理后的DataFrame里,计数列叫state,和原数据集的state列同名,容易搞混,也可能让Plotly解析时出现隐性问题。

修正后的完整代码

# 导入必要库(补全Pandas)
import os
import pandas as pd
import seaborn as sns
from plotly.offline import init_notebook_mode, iplot
import plotly.graph_objs as go

# 初始化Plotly离线模式
init_notebook_mode(connected=True)

# 读取数据集
print(os.listdir("../input"))
df = pd.read_csv("../input/gun-violence-data_01-2013_03-2018.csv")

# 统计各州事件数量并整理数据
state_counts = df['state'].value_counts().sort_values()
# 转成DataFrame并重命名列,避免歧义
state_counts_df = pd.DataFrame(state_counts).reset_index()
state_counts_df.rename(columns={'index': 'state_name', 'state': 'incident_count'}, inplace=True)

# 构建Choropleth数据
data = [
    dict(
        type='choropleth',
        autocolorscale=False,
        locations=state_counts_df['state_name'],  # 州全称
        z=state_counts_df['incident_count'],      # 事件计数(数值型)
        locationmode='USA-states',
        text=state_counts_df['state_name'],       # 悬停显示州名
        colorscale='Viridis',
        colorbar=dict(title='事件数量')  # 增加颜色条标题,更直观
    )
]

# 布局设置
layout = dict(
    title='美国各州枪支暴力事件数量分布(2013-2018)',
    geo=dict(
        scope='usa',
        projection=dict(type='albers usa'),
        showlakes=True,
        lakecolor='rgb(135, 206, 250)'  # 把湖的颜色改成更自然的浅蓝色,原粉色有点奇怪
    )
)

# 生成并显示图表
fig = go.Figure(data=data, layout=layout)
iplot(fig)

关键修改点说明

  • 补全库导入:明确导入pandas as pd,避免运行报错。
  • 重命名列:把计数列改成incident_count,州名列改成state_name,彻底避免列名混淆,代码可读性也更高。
  • 移除无效赋值:去掉ans=ba.reset_index(inplace=True)这种容易出错的写法,改用reset_index()返回新的DataFrame,再重命名列。
  • 优化地图细节:增加颜色条标题,修改湖的颜色为更自然的浅蓝色,提升可视化效果。

这样修改后,你的地图应该就能正常显示各州的枪支暴力事件数量热力分布了。

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

火山引擎 最新活动