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

求助:基于经纬度数据绘制带袭击数的城镇地图(含标签与图例)

问题解决:空画布原因及修复方案

为什么你的代码生成空画布?

你的crimedata.csv里的经纬度是每个区域的单点坐标(比如州的中心点),但geom_polygon需要的是构成区域边界的多个连续坐标点来生成多边形图形,没有多边形的坐标集合,自然无法渲染出地图。

修复步骤

1. 安装并加载所需工具包

install.packages(c("ggplot2", "maps", "dplyr"))
library(ggplot2)
library(maps)
library(dplyr)

2. 读取并预处理你的犯罪数据

# 读取数据集
fg <- read.csv("crimedata.csv")
# 重命名州名列,统一格式以便后续匹配地理数据
fg <- fg %>% rename(state = X)
fg$state <- tolower(fg$state)

3. 获取地理边界数据并合并

# 获取美国各州的多边形边界数据
us_states <- map_data("state")
# 将犯罪数据与地理数据按州名关联
merged_data <- left_join(us_states, fg, by = c("region" = "state"))

4. 绘制带标签和图例的地图

p <- ggplot(merged_data, aes(x = long, y = lat, group = group, fill = Assault)) +
  # 绘制州界多边形,填充袭击事件数量对应的颜色
  geom_polygon(color = "grey") +
  # 添加州名标签(使用原数据集中的中心点坐标)
  geom_text(data = fg, aes(x = long, y = lat, label = toupper(state), group = NULL), size = 3) +
  # 保持你使用的投影方式
  coord_map("polyconic") +
  # 设置颜色渐变图例,命名为"袭击事件数量"
  scale_fill_viridis_c(name = "袭击事件数量") +
  # 去除多余的背景元素,让地图更简洁
  theme_void()

# 展示地图
p

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:15:33