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

如何在Shapefile摩洛哥省份地图中高亮指定区域?

如何在摩洛哥省份地图中高亮指定省份(以Tan Tan为例)

要实现指定省份的高亮效果,核心思路是分层绘制地图:先绘制所有省份的基础图层,再单独叠加目标省份的图层,通过颜色、边框粗细的差异来突出显示。以下是两种实用的实现方法:

方法一:直接分层绘制(简洁高效)

直接通过filter()筛选出目标省份,在基础地图之上叠加绘制:

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

# 绘制基础地图(所有省份)
ggplot() +
  # 基础图层:浅灰色填充,白色细边框
  geom_sf(data = morocco_shp, fill = "#e0e0e0", color = "white", size = 0.5) +
  # 高亮图层:筛选Tan Tan省,橙色填充+黑色粗边框
  geom_sf(data = filter(morocco_shp, NAME == "Tan Tan"), fill = "#ff7f0e", color = "black", size = 1.2) +
  theme_bw() +
  labs(title = "摩洛哥省份地图 - 高亮Tan Tan省")

说明:

  • 图层顺序很重要:基础图层要放在前面,高亮图层叠在上方
  • 如果需要高亮多个省份,只需修改筛选条件为NAME %in% c("Tan Tan", "Guelmim")
  • 可根据需求调整填充色、边框色和粗细参数

方法二:添加标记列(灵活可扩展)

如果需要频繁调整高亮省份,建议先给数据添加一个高亮标记列,再通过映射设置样式:

# 新增高亮标记列
morocco_shp <- morocco_shp %>%
  mutate(highlight_flag = case_when(
    NAME == "Tan Tan" ~ "highlight",
    TRUE ~ "normal"
  ))

# 基于标记列绘制地图
ggplot(morocco_shp) +
  geom_sf(aes(fill = highlight_flag, color = highlight_flag), size = 0.5) +
  # 自定义颜色映射
  scale_fill_manual(values = c("normal" = "#e0e0e0", "highlight" = "#ff7f0e")) +
  scale_color_manual(values = c("normal" = "white", "highlight" = "black")) +
  theme_bw() +
  labs(title = "摩洛哥省份地图 - 高亮Tan Tan省") +
  # 隐藏不需要的图例
  guides(fill = "none", color = "none")

说明:

  • 后续修改高亮省份时,只需调整case_when()中的条件即可
  • 如果需要保留图例,去掉最后一行的guides()代码即可

内容的提问来源于stack exchange,提问作者Saïd Maanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:53:18