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

如何在R中绘制展示两类分类变量的美国地图?

美国地图双变量可视化解决方案

问题背景

需要绘制美国地图,同时展示两类分类变量:

  • 各州收入组别(用fill映射)
  • 各州所属区域(用轮廓或粗边界映射)
    目标是直观呈现低收入/高收入州在特定区域的聚集特征。尝试叠加两个geom_polygon图层后未得到预期效果。

数据准备代码

# 创建地图数据
state_map_data <- map_data("state")

# 关联州区域与收入分组数据
state_regions <- tibble(state_name = tolower(state.name), state.region,
    as_tibble(state.x77)) %>%
        mutate(income_cat = cut(Income, breaks = 3,
        labels = c("low", "medium", "high")))

state_map_data <- state_map_data %>%
    left_join(state_regions, by = c("region" = "state_name"))

解决方案1:实现「收入填充+区域轮廓」效果

叠加图层失效的原因是第二个geom_polygon默认会填充颜色(覆盖底层的收入填充),只需给第二个图层设置fill=NA,并调整轮廓粗细即可:

# 双变量地图:收入填充 + 区域颜色轮廓
p <- ggplot() +
    # 底层:收入分组填充
    geom_polygon(data = state_map_data, 
        aes(x = long, y = lat, group = group, fill = income_cat)) +
    # 上层:区域轮廓(不填充,仅显示线条)
    geom_polygon(data = state_map_data, 
        aes(x = long, y = lat, group = group, color = state.region),
        fill = NA,  # 关键:取消填充,避免覆盖底层
        size = 1)   # 调整轮廓粗细,提升辨识度

print(p)

解决方案2:绘制粗线条的区域边界

若希望用更醒目的粗线条标记区域整体边界(而非单个州的轮廓),需先聚合数据到区域级别,再叠加图层:

# 聚合生成区域级地图数据
region_map_data <- state_map_data %>%
    group_by(state.region) %>%
    summarize(
        long = list(long),
        lat = list(lat)
    ) %>%
    ungroup() %>%
    mutate(region_group = row_number())  # 为每个区域分配唯一组号

# 收入地图 + 粗区域边界
p_region <- ggplot() +
    geom_polygon(data = state_map_data, 
        aes(x = long, y = lat, group = group, fill = income_cat)) +
    geom_polygon(data = region_map_data,
        aes(x = unlist(long), y = unlist(lat), group = region_group),
        fill = NA,
        color = "black",  # 可替换为按区域配色
        size = 2) +       # 大幅加粗线条
    theme_minimal()

print(p_region)

其他可选思路

  • 分面可视化:按区域拆分子图,聚焦每个区域内的收入分布细节:
p_facet <- ggplot(state_map_data) +
    geom_polygon(aes(x = long, y = lat, group = group, fill = income_cat)) +
    facet_wrap(~state.region) +
    theme_void()

print(p_facet)
  • 添加统计标注:在各区域中心标注收入组占比,补充定量信息(需先计算区域内各组占比,再用geom_text实现)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:20:36