代码之家  ›  专栏  ›  技术社区  ›  mmoore

创建具有重叠特征的ggplot2地图并配置图例

  •  0
  • mmoore  · 技术社区  · 4 月前

    我正在绘制一系列物种分布图。在某些情况下,不同季节出现的物种会有重叠的特征。到目前为止,我发现表示这一点的最佳方法是将固体填充物与不同季节的图案填充物混合,以便区分重叠的特征。在这种情况下,我在配置图例时遇到了问题。我尝试添加美学和scale_fil_manual,但这些都搞砸了地图的格式。

    有人能为下面的地图配置图例提供建议吗?或者,有人对我在视觉上表示重叠特征的更好方法有什么建议吗?

    ggplot() +
    geom_sf(data=county_sf, fill=NA) +
    geom_sf_pattern(data=b, pattern_fill='black', pattern_colour='black', pattern_size=0.01) +
    geom_sf(data=m, fill='black', alpha=0.5) +
    scale_fill_manual(values=c("black"))+
    theme_void() +
    theme(legend.position="bottom") +
    theme(legend.title=element_blank())
    

    这是地图的样子:

    enter image description here

    1 回复  |  直到 4 月前
        1
  •  1
  •   stefan    4 月前

    如果你想有一个传奇,那么你必须映射到美学上,即不是设置 fill pattern_fill 当参数将它们移动到内部时 aes() 。之后,您可以使用以下命令设置所需的颜色 scale_fill_manual scale_pattern_fill_manual .

    使用基于默认示例的最小可重复示例 ?geom_sf :

    library(ggplot2)
    library(ggpattern)
    
    county_sf <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE)
    
    b <- county_sf[c(1, 3, 5, 7), ]
    m <- county_sf[c(1, 2, 3), ]
    
    ggplot() +
      geom_sf(data = county_sf, fill = NA) +
      geom_sf_pattern(
        data = b,
        aes(pattern_fill = "b"),
        pattern_colour = "black", pattern_size = 0.01
      ) +
      geom_sf(
        data = m,
        aes(fill = "m"),
        alpha = 0.5
      ) +
      scale_fill_manual(
        values = c("black"),
        name = NULL
      ) +
      scale_pattern_fill_manual(
        values = c("red"),
        name = NULL
      ) +
      theme_void() +
      theme(
        legend.position = "bottom"
      )
    

    enter image description here