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

如何用ggplot2绘制将美国分为蓝州与非蓝州的全球地图

解决方案

以下是基于ggplot2和sf包的实现方案,既能覆盖全球地图,又能合并美国蓝州/非蓝州并隐藏内部州边界:

1. 加载依赖包

library(ggplot2)
library(dplyr)
library(sf)

2. 处理美国州数据(合并蓝州/非蓝州,移除内部边界)

# 定义蓝州列表
blue_states <- tolower(c("California", "Illinois", "New York", "New Jersey", "Washington", 
                         "Massachusetts", "Oregon", "Connecticut", "Delaware", "Rhode Island", 
                         "District of Columbia", "Vermont"))

# 读取美国州地图并转换为sf格式
us_states_sf <- map_data("state") %>%
  sf::st_as_sf(coords = c("long", "lat"), crs = 4326) %>%
  sf::st_sf() %>%
  group_by(group) %>%
  summarise(geometry = st_combine(geometry)) %>%
  st_cast("POLYGON") %>%
  mutate(state = tolower(region)) %>%
  # 标记蓝州/非蓝州分组
  mutate(usa_group = ifelse(state %in% blue_states, "Blue USA", "Non-Blue USA"))

# 合并同组多边形,移除内部州边界
us_combined_sf <- us_states_sf %>%
  group_by(usa_group) %>%
  summarise(geometry = st_union(geometry)) %>%
  rename(country = usa_group)

3. 处理全球其他国家数据

# 读取全球地图数据,过滤掉美国(用自定义分组替代)
world_sf <- map_data("world") %>%
  sf::st_as_sf(coords = c("long", "lat"), crs = 4326) %>%
  sf::st_sf() %>%
  group_by(group) %>%
  summarise(geometry = st_combine(geometry)) %>%
  st_cast("POLYGON") %>%
  mutate(country = region) %>%
  filter(country != "USA")

4. 关联自定义数据

假设你的数据框名为custom_data,包含country和value列:

# 关联全球国家数据
world_merged <- world_sf %>%
  left_join(custom_data, by = "country")

# 关联美国分组数据
us_merged <- us_combined_sf %>%
  left_join(custom_data, by = "country")

# 合并所有地图数据
all_map_data <- bind_rows(world_merged, us_merged)

5. 绘制最终地图

ggplot() +
  geom_sf(data = all_map_data, aes(fill = value), color = "gray30", size = 0.1) +
  # 适配value范围的渐变配色
  scale_fill_gradient2(low = "darkblue", mid = "white", high = "darkred", 
                       midpoint = 0, limits = c(-1, 1), name = "Value") +
  theme_minimal() +
  theme(
    axis.text = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank()
  )

关键说明

  • 用sf包的st_union()合并同组州的多边形,彻底移除美国内部州边界,仅保留蓝州与非蓝州的分界
  • 全球地图主动过滤美国,避免与自定义分组重复
  • 通过left_join确保自定义数据的value值与地图区域正确关联

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:12:36