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

ggplot2 geom_sf图例颜色显示错误问题求助

解决ggplot地图图例颜色错误问题

问题原因

原代码使用fill美学映射图例,但geom_sf默认绘制的点无填充区域,且未手动指定图例与颜色的绑定关系,导致图例颜色被自动分配且显示错误。同时替代数据存在笔误,重复赋值了Acities。

修正方案

  1. 改用color美学映射图例(对应点的显示颜色,更符合需求)
  2. 用scale_color_manual手动绑定图例标签与目标颜色
  3. 修正替代数据的笔误,确保数据格式正确

修改后的完整代码

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

# 美国背景地图数据
usa_states <- map_data("state") %>%
  rename(lon=long, State=region, County=subregion)

# 替代数据(修正格式与笔误)
Acities <- matrix(c(34.0549, -118.243, 38.9072, -77.0369, 29.9511, -90.0715, 40.8137, -96.7026, 40.7128, -74.006), nrow=5, ncol=2, byrow=TRUE)
Acities <- as.data.frame(Acities) %>% rename(lat=V1, lon=V2)
Acities_sf <- st_as_sf(Acities, coords = c("lon", "lat"), crs = 4326)

Bcities <- matrix(c(34.0549, -118.243, 40.7128, -74.006), nrow=2, ncol=2, byrow=TRUE)
Bcities <- as.data.frame(Bcities) %>% rename(lat=V1, lon=V2)
Bcities_sf <- st_as_sf(Bcities, coords = c("lon", "lat"), crs=4326)

# 绘制地图
AandBmap <- ggplot() + 
  geom_polygon(data=usa_states, aes(x=lon, y=lat, group=group), fill="#DAD9D5", color="white") +
  coord_quickmap() + 
  geom_sf(data=Acities_sf, size = 1.5, aes(color="A Location")) +
  geom_sf(data=Bcities_sf, size = 1.5, aes(color="A and B Location")) +
  scale_color_manual(values = c(
    "A Location" = "#174337",
    "A and B Location" = "#EAAA1B"
  )) +
  guides(color=guide_legend(title=NULL)) +
  labs(x=NULL, y=NULL) + 
  theme_void()

AandBmap

效果说明

  • 保持B类城市图层在A类之后,橙色点仍会覆盖深色点
  • 图例中"A Location"显示#174337深色,"A and B Location"显示#EAAA1B橙色,与地图点颜色一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:13:15