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

制作含重叠要素的ggplot2地图并配置图例

物种分布重叠区域可视化及图例配置方案

一、修复当前图例错乱问题

你现在的代码没把季节信息映射到美学属性上,直接用scale_fill_manual会让ggplot找不到对应关系,导致地图格式乱掉。可以通过合并数据+统一映射的方式解决:

  1. 先给两个季节的数据集加标识列,再合并:
# 假设b是繁殖季数据,m是迁徙季数据,可根据实际修改名称
b$season <- "繁殖季"
m$season <- "迁徙季"
combined_data <- rbind(b, m)
  1. 修改ggplot代码,把季节映射到填充和图案属性,统一配置图例:
ggplot() +
  geom_sf(data = county_sf, fill = NA) +
  geom_sf_pattern(
    data = combined_data,
    aes(fill = season, pattern = season),
    pattern_colour = "black",
    pattern_size = 0.01
  ) +
  # 手动设置填充色和图案类型
  scale_fill_manual(values = c("繁殖季" = "white", "迁徙季" = "black")) +
  scale_pattern_manual(values = c("繁殖季" = "stripe", "迁徙季" = "none")) +
  theme_void() +
  theme(
    legend.position = "bottom",
    legend.title = element_blank()
  )

这样配置后,ggplot会自动生成对应两种季节样式的图例,不会再乱掉。

二、更清晰的重叠区域可视化方法

如果想让重叠部分辨识度更高,推荐两种实用方法:

  • 半透明色叠加:给不同季节分配不同的半透明颜色,重叠区域会呈现混合色,一眼就能看出来:
ggplot() +
  geom_sf(data = county_sf, fill = NA) +
  geom_sf(data = b, fill = "#1f77b4", alpha = 0.6) +
  geom_sf(data = m, fill = "#ff7f0e", alpha = 0.6) +
  scale_fill_manual(values = c("#1f77b4", "#ff7f0e"), labels = c("繁殖季", "迁徙季")) +
  theme_void() +
  theme(
    legend.position = "bottom",
    legend.title = element_blank()
  )
  • 多图层独立图例(用ggnewscale):要是不想合并数据,坚持用纯色+图案的组合,可以用ggnewscale包给每个图层单独做图例:
library(ggnewscale)

ggplot() +
  geom_sf(data = county_sf, fill = NA) +
  # 第一个图层:带图案的季节
  geom_sf_pattern(
    data = b,
    aes(fill = "繁殖季"),
    pattern = "stripe",
    pattern_fill = "black",
    pattern_colour = "black",
    pattern_size = 0.01
  ) +
  scale_fill_manual(values = "white", name = "") +
  new_scale_fill()  # 开启新的填充图例组
  # 第二个图层:纯色填充的季节
  geom_sf(
    data = m,
    aes(fill = "迁徙季"),
    alpha = 0.5
  ) +
  scale_fill_manual(values = "black", name = "") +
  theme_void() +
  theme(
    legend.position = "bottom",
    legend.title = element_blank()
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:55:09